背景
经常需要处理如下的数据
原始数据
第一列是项目名称,第二列是项目经理id,一个项目有多个项目经理,现在需要将数据变成一行只有一个项目经理,转换后的数据如下:
转换后的数据
解决方案
这里需要用到split函数和explode函数。
split函数可以将字符串按分隔符变成数组
explode是hive的一个UDTF函数,具体什么是UDTF函数呢?
table-generating functions transform a single input row to multiple output rows
其实就是一行变多行的函数
explode具体用法可以参考官网
第一步
用split函数将字符串转换成数组
select project_name,split(project_manager_id,',') from default.t_project_info;
>
电商&营销 ["23","25","14","13"]
杭州服务中心 ["52","54"]
码龙系统组 ["16","12","19"]
第二步
用explode函数将数组变成多行
SELECT project_name, manager_id
FROM t_project_info
LATERAL VIEW explode(split(project_manager_id,",")) tmp AS manager_id
>
电商&营销 23
电商&营销 25
电商&营销 14
电商&营销 13
杭州服务中心 52
杭州服务中心 54
大功告成!
网友评论