我的 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.
与上述错误相关的两个问题:
BigQuery 如何处理数据中缺失的字段?不都是 字段默认可为空?
BigQuery 如何处理数据中的未知/额外字段?
最佳答案
我刚刚使用 webUI 测试了您的架构/数据并得到以下错误:
Line:1 / Column:84, The field "XXXX" was not found on the current message.
Too many errors encountered. Limit is: 0.
是的,字段默认可为空。如果要更改它,则需要明确定义字段模式(可为空、必需或重复)。如果您的 JSON 数据中缺少必填字段,您将收到错误消息,但如果同一字段可为空,则它会起作用。
正如您在“XXXX”字段中看到的错误,如果您的数据包含额外字段,它将失败。 您的数据必须与表架构匹配,如 documentation 中所述,并且您不能修改 immutable 的表模式(如果需要用其他表加字段可以找资料here)
另一件可能对处理 JSON 数据的人有用的事情是,每个数据行必须包含在文件中的一行中(如 google example file 中)。如果您的 json 数据是格式良好的形式,则数据导入将失败。
希望对你有帮助
关于json - BigQuery 在导入 JSON 时处理缺失字段和未知/额外字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15770911/