提问人:unnest_me 提问时间:10/10/2023 更新时间:10/13/2023 访问量:26
CSV 行中的最后一个字段留空,出现错误:CSV 表引用列位置 19,但从 position:325 开始的行仅包含 19 列
Last Field in a CSV row left empty giving error: CSV table references column position 19, but line starting at position:325 contains only 19 columns
问:
我有一个 DAG 气流任务,它进入一个特定的存储桶,并从里面的所有文件一起创建一个外部表。尝试在 bigquery 中查询外部表时,我收到错误(CSV 表引用列位置 19,但从 position:325 开始的行仅包含 19 列)。我已经查看了它提到的特定文件,第一行(和其他)中的最后一个字段留空,如果它什么都没有,它应该是 0,如果有的话,则留一个数字。我该如何解决这个问题?
文件中的示例记录:
我已经滚动了,所以你可以看到最后一列(第 19 列是总件数),所有其他记录在此字段中都有一个数字,甚至是 0。第一条记录以及一些其他记录什么都没有。我可以想象这在其他文件中也可能再次发生,所以我不能手动修复它们。
create_external_table = BigQueryUpsertTableOperator(
task_id=f"create_external_{TABLE}_table",
dataset_id=DATASET,
project_id=INGESTION_PROJECT_ID,
table_resource={
"tableReference": {"tableId": f"{TABLE}_external"},
"externalDataConfiguration": {
"sourceFormat": "CSV",
"allow_quoted_newlines": True,
"autodetect": True,
"sourceUris": [f"gs://{ARCHIVE_BUCKET}/{DATASET}_data/*.csv"],
},
"labels": labeler.get_labels_bigquery_table_v2(
target_project=INGESTION_PROJECT_ID,
target_dataset=DATASET,
target_table=f"{TABLE}_external",
),
},
)
答:
0赞
unnest_me
10/13/2023
#1
任务“allow_jagged_rows”选项允许在创建外部表时正常引入最后一列中缺少数据的记录。或者任何与此相关的表,我的新任务如下所示:
create_external_table = BigQueryUpsertTableOperator(
task_id=f"create_external_{TABLE}_table",
dataset_id=DATASET,
project_id=INGESTION_PROJECT_ID,
table_resource={
"tableReference": {"tableId": f"{TABLE}_external"},
"externalDataConfiguration": {
"sourceFormat": "CSV",
"allow_quoted_newlines": True,
"allow_jagged_rows":True, ##Added option
"autodetect": True,
"sourceUris": [f"gs://{ARCHIVE_BUCKET}/{DATASET}_data/*.csv"],
},
"labels": labeler.get_labels_bigquery_table_v2(
target_project=INGESTION_PROJECT_ID,
target_dataset=DATASET,
target_table=f"{TABLE}_external",
),
评论
fillna