bigquery嵌套对象:没有这样的字段

时间:2018-05-23 10:09:02

标签: google-bigquery

我有一个包含此架构的表格:enter image description here

我尝试使用python客户端从Google Coud Storage上传一些数据。该文件是JSON换行符分隔的。我的大多数人都不具备该领域" passenger_origin.accuracy"但是当存在该字段时,我有以下错误:

  

阅读时出错   数据,错误消息:从位置开始的行中的JSON解析错误   2122510:没有这样的字段:driver_origin.accuracy。 (错误代码:无效)

     

阅读时出错   数据,错误消息:从位置开始的行中的JSON解析错误   2126317:没有这样的字段:passenger_origin.accuracy。 (错误代码:   无效)

无效行的示例:

{
    "id": 1479443,
    "is_obsolete": 0,
    "seat_count": 1,
    "is_ticket_checked": 0,
    "score": 0.3709318902,
    "is_multimodal": 0,
    "fake_paths": 0,
    "passenger_origin": {
        "id": 2204,
        "poi_uuid": "15b4e52c-7c58-442c-98df-1eb06079f6bb",
        "user_id": 1987,
        "accuracy": 250.0,
        "disabled": 0,
        "last_update": "2017-03-10T15:15:39",
        "created": "2016-02-05T17:06:26",
        "modified_by_user": 1,
        "is_recurrent": 0,
        "source": 1,
        "hidden_by_user": 0,
        "kind": 2,
    },
    "driver_origin": {
        "id": 412491,
        "poi_uuid": "47e90b6d-e178-4e02-9f02-f4ea5f8beaa1",
        "user_id": 71471,
        "disabled": 0,
        "last_update": "2017-11-02T10:09:09",
        "created": "2017-11-02T10:09:09",
        "modified_by_user": 0,
        "is_recurrent": 0,
        "source": 1,
        "hidden_by_user": 0,
        "kind": 2,
    },
    "passenger_destination": {
        "id": 2203,
        "poi_uuid": "c531c3ca-47f0-4003-8098-1272fee8d018",
        "user_id": 1987,
        "accuracy": 250.0,
        "disabled": 0,
        "last_update": "2017-03-10T15:12:42",
        "created": "2016-02-05T17:06:19",
        "modified_by_user": 1,
        "is_recurrent": 0,
        "source": 1,
        "hidden_by_user": 0,
        "kind": 1,
    }
}

该表是在上传数据之前创建的,因此不会被修改。我不明白为什么上传在这些字段上失败了? RECORD字段是否必须重复?

2 个答案:

答案 0 :(得分:0)

要忽略架构中不存在的字段,请使用以下组合:

将第一个设置为true,将第二个设置为某个任意高的数字,例如100000,即使有额外的字段,也会使加载成功。

答案 1 :(得分:0)

问题是configuration.load.autodetect设置为True。我把它设置为False,问题是修复