从 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 取消嵌套数组 - 获取重复项

根据另一列中的值更新 BigQuery 中的嵌套数组

BigQuery:从多个嵌套列中选择 * 替换

如何在没有交叉产品的情况下从 BigQuery 中的两列中取消嵌套两个列表,作为单独的行

如何从 Bigquery 中的这个嵌套 JSON 类型列中查询特定的内容

如何根据bigquery中另一列中的重复值计算一列