zoukankan      html  css  js  c++  java
  • hive 行列转换

    -- 列转行
    select
         name
        ,str[0] as id
        ,str[1] as age
    from (
        select
             name
    ,split(name_tmp,
    ',') as str from ( select 'a,10|b,11|c,12' as name ) t1 lateral view explode(split(name,'\|')) b AS name_tmp ) t2 ;
    +-----------------+-----+------+--+
    |      name       | id  | age  |
    +-----------------+-----+------+--+
    | a,10|b,11|c,12  | a   | 10   |
    | a,10|b,11|c,12  | b   | 11   |
    | a,10|b,11|c,12  | c   | 12   |
    +-----------------+-----+------+--+
    -- 行转列
    with tmp as (
        select '1' as user_id, '001' as newlabelid union all
        select '1' as user_id, '002' as newlabelid union all
        select '1' as user_id, '002' as newlabelid
    )
    select 
         user_id
        ,collect_set(cast(newlabelid as string))  as user_id_set
        ,collect_list(cast(newlabelid as string)) as user_id_list
    from tmp
    group by user_id
    ;
    +----------+----------------+----------------------+--+
    | user_id  |  user_id_set   |     user_id_list     |
    +----------+----------------+----------------------+--+
    | 1        | ["001","002"]  | ["001","002","002"]  |
    +----------+----------------+----------------------+--+
    -- IDE导出
    select 
         t2.rn
        ,concat_ws('|', collect_set(concat(t2.line))) as line -- 行的分隔符
    from (
        select
             concat_ws(',',t1.id,t1.name) as line -- 列的分隔符
            ,row_number() over() % 2      as rn   -- 最终输出的数据有几行
        from (
            select
                 nvl(cast(t0.id as string),'')   as id
                ,nvl(cast(t0.name as string),'') as name
            from (
                select '广东' as id, 40 as name union all
                select '广西' as id, 20 as name union all
                select '山东' as id, 30 as name
            ) t0
            order by name desc -- 输出排序
        ) t1
    ) t2
    group by t2.rn
    ;
    +-----+--------------+--+
    | rn  |     line     |
    +-----+--------------+--+
    | 0   | 山东,30        |
    | 1   | 广东,40|广西,20  |
    +-----+--------------+--+
    -- 分组并合并成一个字段
    select
         name
        ,flag1
        ,flag2
        ,concat_ws(',',flag1) as flag3
        ,concat_ws(',',flag2) as flag4
    from (
        select
             name
            ,collect_set(cast(flag as string))  as flag1
            ,collect_list(cast(flag as string)) as flag2
        from (
            select 'a' as name, 1 as flag union all
            select 'a' as name, 1 as flag union all
            select 'a' as name, 2 as flag
        ) t1
        group by name
    ) t2
    ;
    select
         strs
        ,strs[0] as k
        ,strs[1] as id
        ,strs[2] as age
    from (
        select
            split(str_new,',') as strs
        from (
            select
                explode(split(str,'\|')) as str_new
            from(
                select
                    concat(
                         key,',',a_id,',',a_age,'|'
                        ,key,',',b_id,',',b_age,'|'
                        ,key,',',c_id,',',c_age
                    ) as str
                from (
                    select '001' as key,'a' as a_id,1 as a_age,'b' as b_id,2 as b_age,'c' as c_id,3 as c_age
                ) t1
            ) t2
        ) t3
    )t4
    ;
    +------------------+------+-----+------+--+
    |       strs       |  k   | id  | age  |
    +------------------+------+-----+------+--+
    | ["001","a","1"]  | 001  | a   | 1    |
    | ["001","b","2"]  | 001  | b   | 2    |
    | ["001","c","3"]  | 001  | c   | 3    |
    +------------------+------+-----+------+--+
  • 相关阅读:
    WSP部署错误—SharePoint管理框架中的对象“SPSolutionLanguagePack Name=0”依赖其他不存在的对象
    Elevate Permissions To Modify User Profile
    Error with Stsadm CommandObject reference not set to an instance of an object
    ASP.NET MVC3添加Controller时没有Scaffolding options
    测试使用Windows Live Writer写日志
    配置TFS 2010出现错误—SQL Server 登录的安全标识符(SID)与某个指定的域或工作组帐户冲突
    使用ADO.NET DbContext Generator出现错误—Unable to locate file
    CSS
    HTML DIV标签
    数据库
  • 原文地址:https://www.cnblogs.com/chenzechao/p/9446765.html
Copyright © 2011-2022 走看看