Snowflake中按ID合并多行Variant字段为单个数组的实现方法
Snowflake 实现方案
你要的同ID下多个独立Variant对象合并为Variant数组的分组聚合需求,直接用Snowflake内置的ARRAY_AGG聚合函数就能实现,完全匹配你写的类SQL语义。
实现SQL
假设你的原表名为state_population,执行以下语句即可得到预期结果:
SELECT id, ARRAY_AGG(STATE_INFO) AS STATE_INFO FROM state_population GROUP BY id;
补充说明
ARRAY_AGG返回的结果本身就是VARIANT类型的数组,结构和你给出的预期输出完全一致,不需要额外做类型转换- 如果需要控制数组内各个state对象的排序规则,可以在函数内加
WITHIN GROUP子句指定排序逻辑,比如按state名称排序的写法:ARRAY_AGG(STATE_INFO) WITHIN GROUP (ORDER BY STATE_INFO:state::STRING) - 如果分组内存在STATE_INFO为null的记录,不想把null值纳入最终数组,可以加
IGNORE NULLS参数:ARRAY_AGG(STATE_INFO) IGNORE NULLS
内容的提问来源于stack exchange,提问作者Maverick
相关产品推荐
相关产品推荐

