Snowflake中高效拆分数组表为单行元素表的方法咨询
Snowflake中高效拆分数组表为单行元素表的方法咨询
嗨,这个需求刚好Snowflake有原生的高效解决方案,完全不用折腾字符串转换那套麻烦事!
Snowflake提供了FLATTEN这个专门的表函数,就是用来处理数组、对象这类嵌套数据的,性能比手动字符串操作好太多,因为是底层原生支持的逻辑。
假设你的表名为array_table,存储数组的列名为my_array,直接用下面的SQL就能得到你想要的结果:
SELECT value FROM array_table, LATERAL FLATTEN(input => my_array);
简单解释下这段代码:
LATERAL关键字用来关联原表的每一行和FLATTEN拆分出来的多行数据FLATTEN的input参数指定要拆分的数组列- 查询结果里的
value字段就是拆分后的单个数组元素
用你给出的示例数据测试的话,运行这段SQL会返回:
"abc"
"def"
"ghi"
"jkl"
"mno"
"pqr"
另外补充个小细节:如果你的数组列可能存在空值或者空数组,默认FLATTEN会忽略这些行。如果想要保留原表的所有行(空数组对应结果为NULL),可以改成LATERAL OUTER FLATTEN:
SELECT value FROM array_table, LATERAL OUTER FLATTEN(input => my_array);
备注:内容来源于stack exchange,提问作者SecretIndividual
相关产品推荐
相关产品推荐

