将bigquery数据导出到云存储,整数字段变为字符串格式,但浮点格式保留为数字格式



我有这些bigquery字段

views   INTEGER NULLABLE    
comments    INTEGER NULLABLE    
shares  INTEGER NULLABLE    
watch_time_minutes  FLOAT   NULLABLE    

视图评论分享watch_time_minutes0 0 1 0.0

我通过BigQuery Console Page(简称"导出表"(将这些BigQuery数据导出到云存储(JSON格式(,我得到的是

{"views":"0","comments":"0","shares":"1","watch_time_minutes":0}

在此JSON记录中注意,整数字段更改为字符串值, "视图":" 0","注释":" 0","分享":" 1"

但是浮点场以数字格式保留 " watch_time_minutes":0

JSON中的整数字段应像

一样保持数字格式
"views":0,"comments":0,"shares":1

否则,在以下过程中,当我对这些数学操作进行数学操作应该是整数字段(但在JSON中没有显示为字符串(,我会遇到问题。

有建议吗?

现在,我有一个解决方案是我循环循环(数百万行(存储文件,然后将所有整数字段投入到整数中。但是,它击败了性能优势:"只需通过一个语句将BigQuery Table导出到存储中。"

我有另一个丑陋的解决方案,即"重新定义整数字段为float",但这确实很丑陋,以后会引起其他问题。例如,我无法将视图时间显示为0.0时间。等。

谢谢!

这已经在问题跟踪器上报告了几个不同的时间,例如BQ上的JSON出口出口不正确。从有关该问题的最后评论中:

原因是大多数JSON解析器仅支持32位整数, 而BQ整数有64位。您可以使用字段类型 结果确定如何解析JSON,或者是否要JSON 使用数字而不是字符串,您可以在查询中投射列 到float(Legacy SQL(或Float64(标准SQL(。请注意此选项 但是,可能会失去精度。

另外,您可以使用支持64位整数的Avro格式。

最新更新