【发布时间】:2016-09-21 08:38:32
【问题描述】:
背景
在 Bigquery 自动检测中,我将以下 json 数据加载到 BQ 表中。
"a":"","b":"q"
"a":"","b":"q1"
"a":"1","b":"w2"
现在,当这个 json 被上传时,BQ 抛出错误 cannot convert field "a" to integer.
想法
我猜BQ,在读取两行后,BQ 将字段“a”推断为字符串,然后当“a”:“1”出现时,BQ 尝试将其转换为整数(但为什么?)。
因此,为了进行更多调查,我将 json 修改如下。
"a":"f","b":"q"
"a":"v","b":"q1"
"a":"1","b":"w2"
现在,当我使用这个 json 时,没有错误,数据被顺利加载到表中。
我不明白为什么在这种情况下,如果 BQ 将字段 "a" 推断为字符串,为什么它不会引发错误(为什么它不尝试将 "a":"1" 转换为整数)?
查询
我假设的是,BQ 将字段推断为特定类型,仅当它看到字段中的数据(“a”:“1”或“a”:“f”),但我没有得到这就是为什么当 ("a":"1") 是字符串类型时,BQ 会尝试自动将其转换为整数。
这种自动转换可能会产生问题。
请告诉我,如果我的假设是正确的,以及由于实时数据不在我的控制范围内,可以采取哪些措施来避免此类错误,我只能控制我的代码(使用自动检测)。
【问题讨论】:
标签: json google-bigquery