我通过Avro将数据加载到BigQuery中,我的一个列是一个数组。然而,这似乎加载正常,因为BigQuery将root作为列名称的前缀附加,我需要将所有列选择为适当的名称。我已经包含了--noflatten_results标志但查询失败了"无法为字段order_ids创建有效的输出模式。尝试在最外面的SELECT"
中将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
答案 0 :(得分:2)
使用旧版SQL很难从重复字段中删除父记录。 --noflatten_results
是尽力而为,并且不支持重复字段上的许多转换,例如重命名。
如果使用标准SQL,则应该非常简单。默认情况下,标准SQL查询的结果是不平坦的,并且引用SELECT
子句中的记录中的字段会将其从父记录中删除。
SELECT root.* from dataset.table;
使用CLI,您可以通过将--nouse_legacy_sql
添加到命令行来指定使用标准SQL。
相关文档: