使用空值导入json数据

时间:2012-11-07 02:09:58

标签: json null google-bigquery data-import

来自BigQuery的import文档,

  

注意:不允许使用空值

所以我认为在BigQuery导入的json格式数据中不允许使用null。但是,null值在常规ETL任务中实际上很常见(由于缺少数据)。什么应该是导入这样的json源文件的好方法?请注意,我的数据包含嵌套结构,因此我不希望转换为CSV并使用,,来表示null值。

我认为我可以做的一种方法是将所有null值分别替换为不同数据类型的默认值,例如,

  • string:null - >空字符串
  • 整数:null - > -1
  • float: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字段。

1 个答案:

答案 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值的文档。