json - BigQuery 在导入 JSON 时处理缺失字段和未知/额外字段

标签 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 如何处理数据中的未知/额外字段?

最佳答案

我刚刚使用 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 数据是格式良好的形式,则数据导入将失败。

希望对你有帮助

关于json - BigQuery 在导入 JSON 时处理缺失字段和未知/额外字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15770911/

相关文章:

javascript - 在 mongoDB 和 node js 中添加和更新子文档(没有 mongoose)

使用动态 "is in"约束的 Python 字典架构验证

database - 数据库架构的目的是什么?

mysql - mysqldump 和 load 如何影响 Rails 架构和迁移?

json - 在执行 ajax 调用时序列化类型的对象时检测到循环引用

javascript - 在浏览器中缓存对象时多少内存太多?

c# - 为什么我的 JavaScriptSerializer 返回空的 json 对象?

java - 如何使用GAE将文件从android应用上传到谷歌应用引擎

google-app-engine - 在 Google Appengine 上使用 Spring Data JPA

javascript - 无法阻止引荐垃圾邮件