来自bigquery的导入文档,
注意:不允许null值
所以我认为在JSON-Formatted数据中不允许使用null
进行BigQuery导入。但是,null
值实际上在常规ETL任务中非常普遍(由于缺少数据)。导入此类JSON源文件的好解决方案应该是什么?注意我的数据包含嵌套结构,因此我不希望转换为CSV
并使用,,
表示null
值。
我认为我可以做的一种方法是分别用不同数据类型的默认值替换所有null
值,例如,
- 字符串:
null
->空字符串 - 整数:
null
-> -1 - float:
null
-> -1.0 - ...
,但我不喜欢它。我正在寻找更好的选择。
顺便说一句,我尝试使用包含null
值的JSON文件进行bq load
。我得到以下错误:
Failure details:
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n
...
我认为这是null
用法的指示,是正确的吗?
编辑:如果我删除所有null
字段,则似乎可以工作。我想这是处理null
数据的方法。您不能为数据字段提供null
,但是您不能包括它。因此,我需要有一个过滤代码来删除我原始JSON中的所有null
字段。
您可以使用json格式源文件导入null值 - 省略键:值对为null的值。
示例 - 假设您有这样的架构:
{
"name": "kind",
"type": "string"
},
{
"name": "fullName",
"type": "string",
},
{
"name": "age",
"type": "integer",
"mode": "nullable"
}
没有零值的记录看起来像这样:
{"kind": "person",
"fullName": "Some Person",
"age": 22
}
但是,当"年龄"为null时,请尝试此(注意,没有"年龄"密钥):
{"kind": "person",
"fullName": "Some Person",
}
如果您有问题,请告诉我们。我将记录使用JSON Import Formats使用NULL值来改进文档。