Bigquery 流式插入使用具有空字段的数据流
Posted
技术标签:
【中文标题】Bigquery 流式插入使用具有空字段的数据流【英文标题】:Bigquery streaming inserts using dataflow with null fields 【发布时间】:2017-10-19 00:34:11 【问题描述】:我们使用预定义的 Dataflow 作业模板将 Bigquery 流式插入与 Dataflow 结合使用。
在将它与可为空和重复的字段一起使用时遇到了一些特殊情况。
例如,使用架构
name STRING, NULLABLE
正在尝试插入name: null
因错误而失败:
generic::invalid_argument: This field is not a record.","location":"name","message":"This field is not a record."
这没什么大不了的,因为删除空字段很容易,对于空数组也是如此。
但是,现在如果我们的架构是:
name STRING, REPEATED
如果我们想插入["a", "b", null, "c"]
,我们在引用第三个元素时遇到了类似的错误。
【问题讨论】:
【参考方案1】:要为 NULLABLE 字段提供具有空值的行,只需从您要插入的行中省略该字段。对于您的第二个示例,REPEATED 字段(或 SQL 术语中的 ARRAY)不能有 null 元素。例如,要对 NULLABLE STRING 数组建模,可以使用包含名为 value
的 STRING 字段的 REPEATED RECORD,或者在 SQL 术语中等效地使用 ARRAY<STRUCT<value STRING>>
。
【讨论】:
谢谢!对于后代,我认为我在这里的部分困惑是由于将数据存储导出加载到 bigquery 为结构化属性创建架构的方式。具有单个字段的重复结构化属性作为具有重复字段的单个记录加载到 bigquery 中(我不知道这对于具有重复字段的重复结构化属性如何工作......)我能够将架构更改为 Elliott 建议的内容,并且一切正常。 @Viknesh 你是如何解决你的问题的?您是否使用此处列出的 ARRAY以上是关于Bigquery 流式插入使用具有空字段的数据流的主要内容,如果未能解决你的问题,请参考以下文章