将数据附加到从 BigQuery 中的 Avro 文件创建的 table

Appending data to a table created from an Avro file in BigQuery

每天早上,自动作业都会根据 Avro 文件创建一个新的 table。下午,我需要从查询中向此 table 添加一些数据。

尝试这样做时,出现以下错误:

Error: Invalid schema update. Field chn has changed mode from REQUIRED to NULLABLE

我注意到我可以在 BigQuery Web UI 中将字段 chn 的 属性 从 REQUIRED 更改为 NULLABLE 然后它起作用了很好,但我必须每天手动完成,这不是我想要的。

有没有办法在附加查询期间将字段 "cast" 设为 REQUIRED

或者在第一次从 Avro 文件导入期间,强制字段为 NULLABLE 而不是 REQUIRED ?

谢谢!

允许放宽字段作为查询或加载作业的一部分的功能将很快在生产中可用。当它上线时(可能在一周内)我会更新这个答案。

更新:2016 年 8 月 25 日

您可以在加载或查询作业配置中提供 schemaUpdateOptions。 可以提供多个选项。 它允许目标 table 的架构作为加载或查询作业的副作用进行更新。在两种情况下支持架构更新选项:

  • 当 writeDisposition 为 WRITE_APPEND
  • 当 writeDisposition 是 WRITE_TRUNCATE 并且目标 table 是 table 的分区时,由分区装饰器指定 对于未分区的 tables,WRITE_TRUNCATE 将始终覆盖模式。
  • 支持以下值:

  • ALLOW_FIELD_ADDITION: 允许向模式添加可为空的字段
  • ALLOW_FIELD_RELAXATION:允许将原始模式中的必填字段放宽为可为空
  • 注意:这目前不适用于模式自动检测。我们计划尽快支持。