我有一张表,其中一列定义为:
my_column ARRAY<STRUCT<key STRING, value FLOAT64, description STRING>>
是否有一些简单的方法如何使用value
语句为每一行获取SELECT
参数数组?
显然,这不起作用:
SELECT my_column.value
FROM my_table
我可以使用UNNEST
,然后ARRAY_AGG
对所有其他列进行分组来完成此操作,但是感觉就像是黑客一样。
答案 0 :(得分:1)
以下是用于BigQuery标准SQL
我可以先使用UNNEST,然后再对所有其他列进行ARRAY_AGG分组,但感觉就像是黑客一样。
不,这根本不是黑客。同时,您可以避免在此处使用显式的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
答案 1 :(得分:0)
您可以取消嵌套和重新聚集:
SELECT (SELECT ARRAY_AGG(c.value)
FROM UNNEST(my_column) c
) as c_values
FROM my_table