You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Snowflake表内多个数组按对应位置拆分为多行数据

Snowflake 等长数组按索引对齐拆分为多行实现方案

你可以通过FLATTEN函数拆解任意一个数组得到元素索引,再通过索引匹配另外两个数组的对应位置元素即可实现需求。
假设你的表名为array_test,三个数组字段分别为order_arr、part_arr、price_arr,具体SQL如下:

SELECT
  f.VALUE AS order_num,
  part_arr[f.INDEX] AS part_num,
  price_arr[f.INDEX] AS price
FROM
  array_test,
  LATERAL FLATTEN(input => order_arr) f

代码说明

  • LATERAL FLATTEN(input => order_arr) f:将每行的order_arr数组拆分为独立行,返回结果中f.VALUE为当前拆分出的数组元素值,f.INDEX为当前元素在原数组中的索引(从0开始计数)
  • 由于三个数组长度完全一致,直接用返回的索引f.INDEX即可取出part_arr和price_arr对应位置的元素,保证每行三个字段来自三个数组的相同位置
    如果存在数组长度不一致的场景,可增加过滤条件避免索引越界:
SELECT
  f.VALUE AS order_num,
  part_arr[f.INDEX] AS part_num,
  price_arr[f.INDEX] AS price
FROM
  array_test,
  LATERAL FLATTEN(input => order_arr) f
WHERE
  f.INDEX < ARRAY_SIZE(part_arr)
  AND f.INDEX < ARRAY_SIZE(price_arr)

注:如果你的数组字段实际使用ORDER命名(SQL保留关键字),使用时需要用双引号包裹转义为"ORDER"。
执行以上SQL后即可得到7行结果,每行对应三个数组的同位置元素,与需求完全匹配。
内容的提问来源于stack exchange,提问作者Dror

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:54:08