Snowflake中如何将整数列按单元格值拆分为多行?
实现Snowflake中按整数列拆分多行的方法
这在Snowflake里很容易实现,核心思路是根据每行的New Value数值生成对应数量的重复行,再把New Value统一设为1。给你两种常用的实现方式:
方法一:使用GENERATOR + LATERAL JOIN
这种方法通过GENERATOR函数生成指定行数的空记录,再通过LATERAL JOIN关联原表数据:
SELECT t."Account ID", t."Ad ID", 1 AS "New Value" FROM your_table t JOIN LATERAL ( -- 根据当前行的New Value生成对应数量的行 SELECT 1 FROM TABLE(GENERATOR(ROWCOUNT => t."New Value")) ) seq ON TRUE;
方法二:使用ARRAY_GENERATE_RANGE + FLATTEN
这种方法先生成一个从1到New Value的数组,再通过FLATTEN将数组拆分为多行:
SELECT t."Account ID", t."Ad ID", 1 AS "New Value" FROM your_table t, -- 生成数组并拆分行,数组长度等于New Value的数值 TABLE(FLATTEN(ARRAY_GENERATE_RANGE(1, t."New Value" + 1))) f;
测试示例
如果你想验证效果,可以先创建临时测试表并插入你的示例数据:
CREATE OR REPLACE TEMP TABLE test_data ( "Account ID" VARCHAR, "Ad ID" VARCHAR, "New Value" INTEGER ); INSERT INTO test_data VALUES ('A1', 'B1', 2), ('D2', 'C2', 4);
然后运行上面任意一种查询语句,就能得到你想要的拆分结果。
内容的提问来源于stack exchange,提问作者Conor C
相关产品推荐
相关产品推荐

