文章 查看内容

如何把一行数据拆成多列

如何把一行数据拆成多列

68 0 智能ETL 2025-4-24 16:53 发布者: 观小益

案例 一个文本字段按“/”的分隔拆解成列,在etl中如何实现?如下图对应市场想要拆分成多列

案例

一个文本字段按“/”的分隔拆解成列,在etl中如何实现?如下图对应市场想要拆分成多列

实现:以下介绍2种方式,一种使用数组函数,一种使用etl行转列算子实现。

一、使用spark SQL数组函数实现

1、用分隔符拆分字符串,返回数组。split([对应市场],'/')

2、通过数组元素,分别获取不同的值,生成多个字段,按照最长元素个数取字段。没有值的元素结果会自动补充null值。

3、选择列,选择需要的字段输出数据集,做后续卡片分析

二、使用ETL行转列算子实现

1、使用数组函数,把文本字段转为数组,再根据元素膨胀拆分成多行。explode(split([对应市场],'/'))

2、新建排序字段,按照数组元素位置给枚举值排序。为后续行列转所需列名字段做准备

row_number()over(partition by [省区名称] order by [膨胀多行])

3、生成列名字段。

CASE

WHEN([排序]=1) THEN '市场1'

WHEN([排序]=2) THEN '市场2'

WHEN([排序]=3) THEN '市场3'

WHEN([排序]=4) THEN '市场4'

WHEN([排序]=5) THEN '市场5'

WHEN([排序]=6) THEN '市场6'

WHEN([排序]=7) THEN '市场7'

ELSE null

END

4、通过ETL行转列功能,把多行转多列

5、关联数据,把其他需要输出分析的字段关联到行转列结果上,输出数据集。



路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2025 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部