在 BigQuery 中选择除 ARRAY_AGG + STRUCT 中的一列之外的所有内容
Posted
技术标签:
【中文标题】在 BigQuery 中选择除 ARRAY_AGG + STRUCT 中的一列之外的所有内容【英文标题】:Select everything except one column in ARRAY_AGG + STRUCT in BigQuery 【发布时间】:2020-12-07 11:46:55 【问题描述】:我目前正在使用 ARRAY_AGG + STRUCT 将表中的所有字段嵌套在一列下,是的,它有效。问题是我使用的解决方案不可扩展。我想选择除 STRUCT 中的一个以外的所有字段,但我不知道如何执行此操作。这里是示例:
SELECT
Col1,
ARRAY_AGG(STRUCT(Col2,
Col3,
Col4,
Col5,
Col6,
Col7)) OVER (PARTITION BY Col3, Col4, Col5)
FROM
Source
这是我想要的:
SELECT
Col1,
ARRAY_AGG(STRUCT(* EXCEPT(Col1))) OVER (PARTITION BY Col3, Col4, Col5)
FROM
Source
【问题讨论】:
【参考方案1】:以下是 BigQuery 标准 SQL
#standardsql
select col1,
array_agg((select as struct * except(col1) from unnest([t])))
over(partition by col3, col4, col5)
from source t
【讨论】:
以上是关于在 BigQuery 中选择除 ARRAY_AGG + STRUCT 中的一列之外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery - 将 unnest 与 array_agg 一起使用