BigQuery中使用UNNEST展平数组时重复常规列的方法
解决BigQuery展平结构体数组时重复常规列的问题
你的问题出在没有正确引用UNNEST后的数组元素,原查询直接选择了原表的array列,导致结果不符合预期。修改方式如下:
正确的查询写法
SELECT col_a, col_b, struct_element FROM `your-project.your-dataset.table`, UNNEST(array) AS struct_element
关键说明
- 用
UNNEST(array) AS struct_element给展开后的结构体元素指定别名,在SELECT中引用这个别名就能获取数组里的每个元素。 - 逗号连接原表与
UNNEST(array)本质是执行交叉连接(CROSS JOIN),原表的每一行会和自身数组的每个元素配对,因此col_a和col_b会自动在每一行重复显示。
若需展开结构体的具体子字段
如果结构体包含field1、field2等子字段,可直接拆解:
SELECT col_a, col_b, struct_element.field1, struct_element.field2 FROM `your-project.your-dataset.table`, UNNEST(array) AS struct_element
内容的提问来源于stack exchange,提问作者Gallow
相关产品推荐
相关产品推荐

