来自BigQuery的import文档,
注意:不允许使用空值
所以我认为在BigQuery导入的json格式数据中不允许使用null
。但是,null
值在常规ETL任务中实际上很常见(由于缺少数据)。什么应该是导入这样的json源文件的好方法?请注意,我的数据包含嵌套结构,因此我不希望转换为CSV
并使用,,
来表示null
值。
我认为我可以做的一种方法是将所有null
值分别替换为不同数据类型的默认值,例如,
null
- >空字符串null
- > -1 null
- > -1.0 但我不喜欢它。我正在寻找更好的选择。
BTW,我尝试使用包含bq load
值的json文件执行null
。我收到以下错误:
Failure details:
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n
...
我认为这是null
用法的指示,是否正确?
编辑:如果我删除了所有null
字段,它似乎可以正常工作。我想这是处理null
数据的方法。您不能拥有null
数据字段,但您可以不包含它。所以我需要一个过滤代码来删除原始json中的所有null
字段。
答案 0 :(得分:3)
您可以使用JSON格式的源文件导入NULL值 - 省略值为NULL的键值对。
示例 - 假设您有这样的架构:
{
"name": "kind",
"type": "string"
},
{
"name": "fullName",
"type": "string",
},
{
"name": "age",
"type": "integer",
"mode": "nullable"
}
没有NULL值的记录可能如下所示:
{"kind": "person",
"fullName": "Some Person",
"age": 22
}
但是,当“age”为NULL时,请尝试此操作(注意,不要“年龄”键):
{"kind": "person",
"fullName": "Some Person",
}
如果您对此有任何疑问,请与我们联系。我将做一个注释,以改进使用带有JSON导入格式的NULL值的文档。