美文网首页
hive应用:将一行变成多行

hive应用:将一行变成多行

作者: 春风花草 | 来源:发表于2022-04-30 13:22 被阅读0次

    背景

    经常需要处理如下的数据


    原始数据

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

    大功告成!

    相关文章

      网友评论

          本文标题:hive应用:将一行变成多行

          本文链接:https://www.haomeiwen.com/subject/crhyyrtx.html