将数据附加到从 BigQuery 中的 Avro 文件创建的表中
Posted
技术标签:
【中文标题】将数据附加到从 BigQuery 中的 Avro 文件创建的表中【英文标题】:Appending data to a table created from an Avro file in BigQuery 【发布时间】:2016-08-17 14:49:31 【问题描述】:每天早上,自动作业都会从 Avro 文件创建一个新表。下午,我需要从 Query 中将一些数据附加到该表中。
尝试这样做时,我收到以下错误:
Error: Invalid schema update. Field chn has changed mode from REQUIRED to NULLABLE
我注意到我可以在 BigQuery Web UI 中将字段 chn
的属性从 REQUIRED
更改为 NULLABLE
,然后它工作正常,但我必须每天手动执行此操作,这不是我要做的正在寻找。
有没有办法在追加查询期间将字段“转换”为REQUIRED
?
或者在第一次从 Avro 文件导入期间,强制字段为NULLABLE
而不是REQUIRED
?
谢谢!
【问题讨论】:
【参考方案1】:允许在查询或加载作业中放宽字段的功能将很快在生产中可用。我会在它上线时更新这个答案(可能在一周内)。
更新:2016 年 8 月 25 日
您可以在加载或查询作业配置中提供 schemaUpdateOptions。 可以提供多个选项。 它允许将目标表的架构作为加载或查询作业的副作用进行更新。在两种情况下支持架构更新选项:
当 writeDisposition 为WRITE_APPEND
时
当 writeDisposition 为 WRITE_TRUNCATE
并且目标表是表的分区时,由分区装饰器指定
对于非分区表,WRITE_TRUNCATE
将始终覆盖架构。
支持以下值:
ALLOW_FIELD_ADDITION
: 允许向架构添加一个可为空的字段
ALLOW_FIELD_RELAXATION
:允许将原始模式中的必填字段放宽为可为空
注意:这目前不适用于架构自动检测。我们计划尽快提供支持。
【讨论】:
更改已生效,但我们正在解决一些文档问题。我会尽快更新这篇文章,详细说明如何使用它 由于文档可能需要更多时间才能出来,我更新了答案,简要说明了如何使用这些选项。以上是关于将数据附加到从 BigQuery 中的 Avro 文件创建的表中的主要内容,如果未能解决你的问题,请参考以下文章
从 Avro 将 unix 时间戳(以秒为单位)导入 Bigquery 中的正确时间戳
如何将 AVRO 文件中的整数值加载到 bigquery 中的日期列?