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

时间:2016-08-17 14:49:32

标签: google-bigquery avro

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

尝试这样做时,我收到以下错误:

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

我注意到我可以在BigQuery Web UI中将字段chn的属性从REQUIRED更改为NULLABLE,然后它可以正常工作,但我必须手动执行每天都不是我想要的。

在追加查询期间,有没有办法将字段“强制转换”为REQUIRED

或者在首次从Avro文件导入时,强制该字段为NULLABLE而不是REQUIRED

谢谢!

1 个答案:

答案 0 :(得分:3)

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

更新:2016年8月25日

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

  • 当writeDisposition为WRITE_APPEND
  • 当writeDisposition为WRITE_TRUNCATE且目标表是表的分区时,由分区装饰器指定 对于非分区表,WRITE_TRUNCATE将始终覆盖架构。
  • 支持以下值:

  • ALLOW_FIELD_ADDITION:允许为架构添加可空字段
  • ALLOW_FIELD_RELAXATION:允许将原始架构中的必填字段放宽为可以为空的
  • 注意:这当前不适用于架构自动检测。我们计划很快支持这一点。