导入JSON时BigQuery处理缺少的字段和未知/额外字段

时间:2013-04-02 17:54:47

标签: json google-app-engine schema google-bigquery google-cloud-storage

我的BigQuery表的架构如下所示:

A:STRING,B:STRING,C:STRING,D:STRING,E:STRING,F:STRING,createdAt:INTEGER,updatedAt:INTEGER,I:STRING

云存储中的文件(JSON)只有一个项目,它看起来像:

{
    "A": "AAA",
    "B": "BBB",
    "E": "EEEEE",
    "F": "FFFFF",
    "createdAt": 1364226047214,
    "XXXX": "XXXXXXXXXXX",
    "I": "IIIIII",
    "YYYY": {
        "Y1": 1.99,
        "Y2": "YYYYYY"
    },
    "location": {
        "city": "Amherst",
        "region": "NS",
        "country": "CA"
    },
    "purchaseDate": 1364225968000,
    "updatedAt": 1364226052634
}

我收到以下错误:

Errors:
Line:1 / Column:173, The field "createdAt" was not found on the current message.
Too many errors encountered. Limit is: 0.

与上述错误相关的两个问题:

  1. BigQuery如何处理数据中缺少的字段?不是全部 字段默认为可空?

  2. BigQuery如何处理数据中的未知/额外字段?

2 个答案:

答案 0 :(得分:4)

我刚刚使用webUI测试了您的架构/数据,并出现以下错误:

Line:1 / Column:84, The field "XXXX" was not found on the current message.
Too many errors encountered. Limit is: 0.
  1. 是的,默认情况下字段可以为空。如果要更改字段模式,则需要明确定义字段模式(可空,必需或重复)。如果您的JSON数据中缺少必填字段,您将收到错误,但如果此相同字段可以为空,则可以使用。

  2. 正如您在“XXXX”字段中看到的错误一样,如果您的数据包含额外字段,则会失败。 您的数据必须与documentation中所述的表架构匹配,并且您无法修改immutable的表架构(您可以找到一些信息here如果你需要使用另一个表添加字段)

  3. 对于处理JSON数据的人来说,另一件有用的事情是每个数据行必须包含在文件中的单行中(例如google example file中)。如果您的json数据处于非常合理的格式,则数据导入将失败。

  4. 希望这个帮助

答案 1 :(得分:0)

本周我遇到了这个问题,在过去几天我一直在查看代码,问题是BQ TableRow没有在Big Query TableSchema上定义的所有元素。

请重新检查您在TableRow上添加的所有参数,并在TableSchema上正确显示此参数。

祝你好运!