从BigQuery中重复的嵌套列中获取参数数组

时间:2019-11-14 15:06:57

标签: sql arrays data-structures google-bigquery

我有一张表,其中一列定义为:

my_column ARRAY<STRUCT<key STRING, value FLOAT64, description STRING>>

是否有一些简单的方法如何使用value语句为每一行获取SELECT参数数组?

显然,这不起作用:

SELECT my_column.value
FROM my_table

我可以使用UNNEST,然后ARRAY_AGG对所有其他列进行分组来完成此操作,但是感觉就像是黑客一样。

2 个答案:

答案 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