从BQ获取“无效的架构更新。无法添加字段”,并且在配置中设置了ALLOW_FIELD_ADDITION

时间:2018-12-19 05:35:22

标签: python google-bigquery

以下python代码段会在标题中产生错误:

job_config = bigquery.QueryJobConfig()
# Set the destination table
table_ref = client.dataset(args.bq_dataset_id).table(args.bq_cum_table)
job_config.destination = table_ref
job_config.write_disposition = 'WRITE_APPEND'
job_config.schemaUpdateOptions = ['ALLOW_FIELD_ADDITION', 'ALLOW_FIELD_RELAXATION']

# Start the query, passing in the extra configuration.
query_job = client.query(
    sqlstr,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query

query_job.result()  # Wait for the query to finish

我正在使用“将查询结果写到目标表” here,但使用附加的“ ALLOW_FIELD_ADDITION”和“ ALLOW_FIELD_RELAXATION”配置设置(我认为)可以将更多列添加到目标表。 我要附加的数据架构可能不是目标表架构的超集。如果这些考虑因素很重要,我将无法控制查询结果的顺序。

我正在使用标准SQL。查询就像:

选择 `StudyDate`, `SeriesDate`, `AcquisitionDate` 从`project.dataset.table` LIMIT 1

这是我第一次使用BQ Python库,因此如果我忽略了某些内容,我不会感到惊讶。

谢谢。

1 个答案:

答案 0 :(得分:1)

除了一个小错误之外,您做对了。

job_config.schemaUpdateOptionsBigQuery Python API中不存在的字段。将其更改为job_config.schema_update_options,您的代码将按预期工作。

此外,here are several examples显示了如何使用Python修改BigQuery表架构。