使用具有空字段的数据流进行 Bigquery 流式插入

问题描述 投票:0回答:2

我们使用预定义的 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"]
,我们在引用第三个元素时遇到类似的错误。

google-bigquery
2个回答
2
投票

要为 NULLABLE 字段提供具有空值的行,只需从要插入的行中省略该字段即可。对于第二个示例,REPEATED 字段(或 SQL 术语中的 ARRAY)不能有 null 元素。要对 NULLABLE STRING 数组进行建模,您可以使用包含名为

value
的 STRING 字段的 REPEATED RECORD,或者相当于 SQL 术语中的
ARRAY<STRUCT<value STRING>>


0
投票
在此处添加另一个答案以保持跟踪,因为该线程是搜索时的主要结果

“此字段不是记录”

如果您遇到字段是否可为空的问题,并且您正在运行 Node 包

@google-cloud/bigquery

,请尝试改用 
@google-cloud/bigquery-storage
。这为我解决了=)

© www.soinside.com 2019 - 2024. All rights reserved.