在Databricks中如何使用string_split()拆分分隔字段并展开数据
解决Databricks中拆分字符串并行转列的问题
问题分析
你的SQL报错主要有几个核心问题:
- Databricks SQL不支持
CROSS APPLY语法,需改用Spark SQL兼容的LATERAL VIEW EXPLODE实现行转列 STRING_SPLIT返回数组类型,必须配合EXPLODE才能将数组元素拆分为独立行- 原语句里的
GROUP BY cs.PERMID完全无效:既未定义别名cs,且你的需求是拆分后保留所有行,根本不需要分组操作 - 你期望输出中的ID=3应该是源数据ID=2的笔误,以下修正基于源数据逻辑处理
正确SQL语句
%sql SELECT ID, split_value AS value FROM TempView LATERAL VIEW EXPLODE(STRING_SPLIT(value, ',')) AS split_value
说明
STRING_SPLIT(value, ',')将value列按逗号分割成数组LATERAL VIEW EXPLODE(...)将数组中的每个元素拆分为单独的行,同时保留对应的ID- 给拆分后的列起别名
split_value,再重命名为value以匹配你需要的输出结构
执行以上语句后,会得到符合预期的结果:
| ID | value |
|---|---|
| 1 | value-1 |
| 1 | value-2 |
| 1 | value-3 |
| 2 | value-1 |
| 2 | value-4 |
内容的提问来源于stack exchange,提问作者Mike Expendable
相关产品推荐
相关产品推荐

