bigquery 嵌套对象:没有这样的字段
Posted
技术标签:
【中文标题】bigquery 嵌套对象:没有这样的字段【英文标题】:bigquery nested object : No such field 【发布时间】:2018-05-23 10:09:02 【问题描述】:我有一个具有此架构的表:
我正在尝试使用 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 字段是否必须重复?
【问题讨论】:
【参考方案1】:要忽略架构中不存在的字段,请使用以下组合:
configuration.load.ignoreUnknownValues
configuration.load.maxBadRecords
将第一个设置为true
,将第二个设置为任意高的数字,例如100000
,即使有多余的字段也会使加载成功。
【讨论】:
感谢您的回复,但在我的情况下,即使错误表明相反,这些字段也存在于架构中。我的大多数条目都没有字段driver_origin.accuracy
或 passenger_origin.accuracy
但是当它们出现时发生错误
这些配置在哪里设置【参考方案2】:
问题是 configuration.load.autodetect 设置为 True。我将它设置为 False,问题就解决了
【讨论】:
以上是关于bigquery 嵌套对象:没有这样的字段的主要内容,如果未能解决你的问题,请参考以下文章