2017-10-19 35 views
1

我们使用Bigquery流式插入和数据流一起使用预定义的Dataflow作业模板。使用带有空字段的数据流的Bigquery流式插入

当我在可空和重复的字段中使用它时遇到了一些特殊情况。

例如,使用模式

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)不能包含空元素。要对一个NULLABLE STRING数组进行建模,可以使用包含字段名称为value的STRING字段的REPEATED RECORD,例如SQL语句中的ARRAY<STRUCT<value STRING>>等效字段。

+0

谢谢!对于后人来说,我认为这里的一部分混乱是由于将数据存储区导出到bigquery中创建结构化属性的模式。重复的结构属性与奇异的领域被加载到bigquery作为奇异的记录与重复的领域(我不知道这是如何工作重复结构性质的重复领域...) 我能够改变架构埃利奥特建议和一切工作。 – vmkrish