我有这些大问题领域
views INTEGER NULLABLE
comments INTEGER NULLABLE
shares INTEGER NULLABLE
watch_time_minutes FLOAT NULLABLE
观看评论分享watch_time_minutes 0 0 1 0.0
我通过BigQuery控制台页面(简称"导出表格")将这个bigquery数据导出到云存储(json格式),我得到的是
{"views":"0","comments":"0","shares":"1","watch_time_minutes":0}
注意在这个json记录中,Integer字段已更改为字符串值, "视图":" 0""注释":" 0""股":" 1& #34;
但浮点字段保持为数字格式 " watch_time_minutes":0
Json中的整数字段应保持为
的数字格式"views":0,"comments":0,"shares":1
否则,在以下过程中,当我对这些应该是整数字段进行数学运算时(但在json中没有显示为字符串),我会遇到问题。
任何建议?
现在,我有一个解决方案是循环(数百万行)存储文件并将所有整数字段转换回整数。但它超越了性能优势,只需通过一个声明将bigquery表导出到存储中。"
我有另一个丑陋的解决方案是"将整数字段重新定义为float"但这真的很难看,以后会引起其他问题。比如我无法将观看次数显示为0.0时间。等
谢谢!
答案 0 :(得分:3)
此问题已在问题跟踪器上报告了几次,例如Json exports on BQ is exported incorrectly。从关于该问题的最后评论:
原因是大多数JSON解析器仅支持32位整数, 而BQ整数有64位。您可以使用中的字段类型 结果来确定如何解析JSON,或者如果你想要JSON 使用数字而不是字符串,您可以在查询中强制转换列 到FLOAT(遗留SQL)或FLOAT64(标准SQL)。请注意,此选项 然而,可能会失去精确度。
或者,您可以使用支持64位整数的Avro格式。