Google bigquery 加载作业上ignoreUnknownValues选项的Google BigQuery意外行为(接收额外列时出错)
我正在使用气流触发Google BigQuery中的加载作业。源文件由多个NDJSON文件组成 这是气流操纵器(我认为与此无关。上下文给出): 正在等待bqjob_[…]_1。。。(0s)当前状态:完成BigQuery错误 加载操作中:处理作业“[…]”时出错:提供的架构没有 与表[…]不匹配。无法添加字段(字段: 元数据\u存款\u 00\u源ID)Google bigquery 加载作业上ignoreUnknownValues选项的Google BigQuery意外行为(接收额外列时出错),google-bigquery,etl,airflow,Google Bigquery,Etl,Airflow,我正在使用气流触发Google BigQuery中的加载作业。源文件由多个NDJSON文件组成 这是气流操纵器(我认为与此无关。上下文给出): 正在等待bqjob_[…]_1。。。(0s)当前状态:完成BigQuery错误 加载操作中:处理作业“[…]”时出错:提供的架构没有 与表[…]不匹配。无法添加字段(字段: 元数据\u存款\u 00\u源ID) 更新3:当我同时使用autodetect和ignore\u unknown\u值时,问题似乎发生了。如果我以schema\u字段的形式提供现有的
更新3:当我同时使用
autodetect
和ignore\u unknown\u值时,问题似乎发生了。如果我以schema\u字段
的形式提供现有的模式,那么忽略\u未知\u值
会像我预期的那样工作,但在文档中我并不清楚。新列是可为空的、必需的还是必需的REPEATED@PaddyPopeye在我的源JSON文件上?我正在为输入模式使用autodetect=True
,因此我甚至不确定这将如何应用。如果需要添加其他字段,可以使用schemaUpdateOptions[]来允许新字段。但是它不适用于自动检测,因此您需要显式地向LoadDetect提供新的模式。谢谢,但正如我在上面所写的,我希望忽略额外的字段,而不是添加这些字段。试试这个
load = GoogleCloudStorageToBigQueryOperator(
task_id=f"load",
bigquery_conn_id="bigquery_default",
pool="bigquery_insert",
destination_project_dataset_table="<HIDDEN>",
bucket="<HIDDEN>",
source_objects=list_files(),
source_format="NEWLINE_DELIMITED_JSON",
write_disposition="WRITE_APPEND",
autodetect=True,
ignore_unknown_values=True
)
{
"configuration":{
"load":{
"autodetect":True,
"createDisposition":"CREATE_IF_NEEDED",
"destinationTable":{
"projectId":"<PRIVATE>",
"datasetId":"<PRIVATE>",
"tableId":"<PRIVATE>"
},
"sourceFormat":"NEWLINE_DELIMITED_JSON",
"sourceUris":[
"<PRIVATE>"
],
"writeDisposition":"WRITE_APPEND",
"ignoreUnknownValues":True
}
}
}
bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON --noreplace --ignore_unknown_values [MY TABLE NAME] [MY GCS PATH]