3

从BigQuery的导入文档中,

注意:不允许空值

所以我假设null在 json 格式的数据中不允许 BigQuery 导入。但是,null值实际上在常规 ETL 任务中很常见(由于缺少数据)。导入此类 json 源文件应该是什么好的解决方案?请注意,我的数据包含嵌套结构,因此我不喜欢转换为CSV和使用,,来表示一个null值。

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

  • 字符串:null-> 空字符串
  • 整数:null-> -1
  • 浮动:null-> -1.0
  • ...

但我不喜欢它。我正在寻找更好的选择。

顺便说一句,我尝试bq load使用包含null值的 json 文件。我收到以下错误:

Failure details:
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n'
- Expected '"' found 'n
...

我认为这是null使用的指示,对吗?

编辑:如果我删除所有null字段,它似乎工作。我想这是处理null数据的方式。你不能拥有null一个数据字段,但你不能包括它。所以我需要一个过滤代码来删除null我的原始 json 中的所有字段。

4

1 回答 1

4

您可以使用 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 时,试试这个(注意,没有 "age" 键):

{"kind": "person",
 "fullName": "Some Person",
}

如果您对此有任何疑问,请告诉我们。我将做笔记以改进有关使用带有 JSON 导入格式的 NULL 值的文档。

于 2012-11-07T20:16:45.563 回答