hive应用:将一行变成多行

背景

经常需要处理如下的数据


原始数据

第一列是项目名称,第二列是项目经理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

大功告成!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容