从 BigQuery 中的重复嵌套列中获取参数数组
Posted
技术标签:
【中文标题】从 BigQuery 中的重复嵌套列中获取参数数组【英文标题】:Getting an array of a parameter from repeated nested column in BigQuery 【发布时间】:2019-11-14 15:06:57 【问题描述】:我有一个表,其中一列定义为:
my_column ARRAY<STRUCT<key STRING, value FLOAT64, description STRING>>
有没有一些简单的方法可以使用SELECT
语句为每一行获取一组value
参数?
显然,这不起作用:
SELECT my_column.value
FROM my_table
我可以使用 UNNEST
然后 ARRAY_AGG
对所有其他列进行分组,但感觉就像是 hack。
【问题讨论】:
【参考方案1】:以下是 BigQuery 标准 SQL
我可以使用 UNNEST 然后 ARRAY_AGG 对所有其他列进行分组,但感觉就像是 hack。
不,这根本不是 hack。同时你可以避免在这里使用显式 UNNEST
#standardSQL
SELECT ARRAY(SELECT value FROM t.my_column) AS my_column_values
FROM `project.dataset.my_table` t
或
#standardSQL
SELECT (SELECT ARRAY_AGG(value) FROM t.my_column) my_column_values
FROM `project.dataset.my_table` t
【讨论】:
【参考方案2】:您可以取消嵌套和重新聚合:
SELECT (SELECT ARRAY_AGG(c.value)
FROM UNNEST(my_column) c
) as c_values
FROM my_table
【讨论】:
以上是关于从 BigQuery 中的重复嵌套列中获取参数数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有交叉产品的情况下从 BigQuery 中的两列中取消嵌套两个列表,作为单独的行