• hive SQL 行转列 和 列转行


    一、行转列的使用

    1、问题

    hive如何将

    a       b       1
    a       b       2
    a       b       3
    c       d       4
    c       d       5
    c       d       6

    变为:

    a       b       1,2,3
    c       d       4,5,6

    2、数据

    test.txt

    a       b       1 
    a       b       2 
    a       b       3 
    c       d       4 
    c       d       5 
    c       d       6

    3、答案

    1.建表

    drop table tmp_jiangzl_test;
    create table tmp_jiangzl_test
    (
    col1 string,
    col2 string,
    col3 string
    )
    row format delimited fields terminated by '	'
    stored as textfile;
    
    load data local inpath '/home/jiangzl/shell/test.txt' into table tmp_jiangzl_test;
    

      

    2.处理

    select col1,col2,concat_ws(',',collect_set(col3)) 
    from tmp_jiangzl_test  
    group by col1,col2;
    

      

    二、列转行

    1、问题

    hive如何将

    a       b       1,2,3
    c       d       4,5,6

    变为:

    a       b       1
    a       b       2
    a       b       3
    c       d       4
    c       d       5
    c       d       6

    2、答案

    1.建表

    drop table tmp_jiangzl_test;
    create table tmp_jiangzl_test
    (
    col1 string,
    col2 string,
    col3 string
    )
    row format delimited fields terminated by '	'
    stored as textfile;
    

      

    处理:

    select col1, col2, col5
    
    from tmp_jiangzl_test a 
    
    lateral  view explode(split(col3,','))  b AS col5
    

      

    hive中的concat,concat_ws,collect_set 用法:

    collect_set的作用:collect_set(col)函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。

    concat_ws的作用:表示concat with separator,即有分隔符的字符串连接,concat_ws(”,collect_set(home_location))表示用空的字符”来连接collect_set返回的array中的每个元素。

    concat:可以连接一个或者多个字符串,select concat(‘11’,’22’,’33’);//112233

    原文:https://blog.csdn.net/chaoshengmingyue/article/details/82020667

    本文转自:https://blog.csdn.net/buster2014/article/details/50461654

  • 相关阅读:
    adb常用命令
    视频WEB插件 V1.5.2 (海康威视)
    字体渐变 兼容 ie
    spring mvc问题:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示
    APIO 2022 游记
    Aspen丶Sun
    解决 Linux下ifconfig命令没有ens33信息
    Hadoop Writable和WritableComparable区别
    函数的二义性
    C++显式类型转换
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/10695874.html
Copyright © 2020-2023  润新知