Bry*_*yan 7 json google-bigquery
当我以JSON格式导出我的bigquery表时,INTEGER字段将转换为字符串.导出时有没有办法维护整数数据类型?
以下是重现integer-> string转换现象的最小步骤:
SELECT INTEGER(1) AS myInt并将结果保存到表中.请注意,输出表架构将类型显示为INTEGER.{"myInt":"1"}在JSON格式中,"1" 是一个字符串,而不是整数.
这目前不可能; 推理是因为Javascript规范,IEEE浮点精度,JSON和BigQuery整数大小的不幸组合.
在Javascript中,所有数字必须可表示为IEEE754双精度浮点值.Javascript将JSON数字解析为javascript数字.BigQuery使用64位有符号整数值.
问题出现是因为并非所有64位整数值都可以表示为IEEE 754双精度浮点值.(很容易理解为什么:IEEE 754双精度浮点使用64位但可以表示许多不是整数的东西;因此,必须有64位整数,它不能代表).
因此,为了使BigQuery JSON响应在Javascript中工作,整数值用引号括起来,这样就不会丢失精度.
这就是说...在API请求中将整数表示为字符串的决定是有道理的,因为API的许多调用者都将使用javascript.在导出数据时,似乎没有引人注目的参数表示不将整数表示为数字.(除了现在改变它将是一个突破性的变化).
您可以在BigQuery 问题跟踪器中提交错误来解决此问题吗?(它可能涉及导出配置中的另一个标志).
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |