2016-06-21 115 views
1

我正在通过Avro将数据加载到BigQuery中,我的一列是数组。这似乎加载好,但是,因为BigQuery追加作为前缀的列名称,我需要选择所有列到他们适当的名称。我已经包括了--noflatten_results国旗,但查询失败与BigQuery:选择REPEATED字段作为REPEATED字段

查询“不能现场order_ids创建有效的输出模式尝试在最外面的重命名order_ids到root.order_ids选择。”:

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 

回答

2

删除使用传统SQL很难从重复字段记录父记录。 --noflatten_results是尽力而为,并不支持重复字段的许多转换,例如重命名。

如果使用标准SQL,它应该相当简单。默认情况下标准SQL查询的结果是未平铺的,并且引用SELECT子句中的记录内的字段会将它们从父记录中删除。

SELECT root.* from dataset.table; 

使用CLI,可以指定加--nouse_legacy_sql到命令行使用标准的SQL。

相关文档:

+0

感谢丹尼,这个工程。如果您知道,请跟进。我使用TIMESTAMP将一个时期转换为人类可读的日期,但这在标准中不起作用。有没有办法达到同样的效果? –

+0

我是盲人。错过了文档中的“附加时间戳转换”功能。谢谢。现在好去! –