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

在Databricks 11.2 Spark SQL中将逗号分隔列拆分为行的方法

拆分Databricks Spark SQL中对应位置的逗号分隔值为行

针对你在Databricks 11.2版本Spark SQL中的需求,这里提供两种高效的实现方式,确保每行Col1和Col2的逗号分隔值按对应位置拆分为独立行:

方法一:使用array_zip + explode(推荐,更简洁)

利用array_zip将两列拆分后的数组按位置配对,再展开成行:

SELECT 
  element.col1 AS Col1,
  element.col2 AS Col2
FROM your_table_name
LATERAL VIEW explode(array_zip(split(Col1, ','), split(Col2, ','))) exploded AS element;

逻辑说明:

  1. split(Col1, ',')和split(Col2, ',')分别将两列的逗号分隔字符串转为数组;
  2. array_zip把两个数组按索引位置配对,生成包含对应元素的结构体数组;
  3. explode将结构体数组展开为单独的行,每个结构体中的元素对应拆分后的Col1和Col2值。

方法二:使用posexplode + 位置匹配

通过posexplode拆分时获取元素的位置索引,再通过索引匹配对应元素:

SELECT 
  t1.col_val AS Col1,
  t2.col_val AS Col2
FROM your_table_name
LATERAL VIEW posexplode(split(Col1, ',')) t1 AS pos, col_val
LATERAL VIEW posexplode(split(Col2, ',')) t2 AS pos, col_val
WHERE t1.pos = t2.pos;

逻辑说明:

  1. posexplode拆分数组时,同时返回元素的位置索引(pos)和元素值;
  2. 通过WHERE t1.pos = t2.pos确保Col1和Col2中同一位置的元素对应成行,避免交叉匹配。

示例验证

假设你的源表数据如下:

Col1Col2
1,2,3a,b,c
1,2,3,4,5a,b,c,d,e

执行上述任意一种SQL后,都会得到你期望的输出:

Col1Col2
1a
2b
3c
1a
2b
3c
4d
5e

内容的提问来源于stack exchange,提问作者Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:32:33