Google bigquery BigQuery:选择重复字段作为重复字段

Google bigquery BigQuery:选择重复字段作为重复字段,google-bigquery,Google Bigquery,我通过Avro将数据加载到BigQuery中,我的一列是数组。不过,这似乎是load ok,因为BigQuery将root作为前缀附加到列名中,所以我需要将所有列选择到相应的名称中。我已包含--noflatte_results标志,但查询失败,原因是“无法为字段order_id创建有效的输出架构。请尝试在最外层的SELECT中将order_id重命名为root.order_id” 查询: SELECT root.a AS a, root.b AS b, root.orders_ids AS or

我通过Avro将数据加载到BigQuery中,我的一列是数组。不过,这似乎是load ok,因为BigQuery将root作为前缀附加到列名中,所以我需要将所有列选择到相应的名称中。我已包含--noflatte_results标志,但查询失败,原因是“无法为字段order_id创建有效的输出架构。请尝试在最外层的SELECT中将order_id重命名为root.order_id”

查询:

SELECT
root.a AS a,
root.b AS b,
root.orders_ids AS order_ids,
root.c AS c,
root.d AS d 
FROM dataset.table

使用旧式SQL很难从重复字段中删除父记录
--noflatte_results
是最好的选择,不支持重复字段上的许多转换,例如重命名

如果您使用标准SQL,它应该相当简单。默认情况下,标准SQL查询的结果是不平坦的,在
SELECT
子句中引用记录中的字段会将其从父记录中删除

SELECT root.* from dataset.table;
使用CLI,您可以通过向命令行添加
--nouse\u legacy\u SQL
来指定使用标准SQL

相关文件:


谢谢Danny,这很有效。如果你知道的话,进行一次跟进。我使用时间戳将一个历元转换成一个人类可读的日期,但这在标准中不起作用。有没有办法达到同样的效果?我是瞎子。缺少文档中的“附加时间戳转换”功能。谢谢很好,现在就走!