zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [dubbo实战] dubbo+zookeeper伪集群搭建
    Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
    Docker实践
    docke镜像上传到dockerhub仓库和阿里云docker仓库的方法
    Linux chmod命令详解
    使用nexus搭建maven私服
    Zookeeper注册节点的掉线自动重新注册及测试方法
    Dubbo负载均衡策略
    各种排序算法及其java程序实现
    java中的各种数据类型在内存中存储的方式
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/10695874.html
Copyright © 2011-2022 走看看