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

    实例一:来源:

    https://www.cnblogs.com/kimbo/p/6208973.html

    行转列 (对某列拆分,一列拆多行)
    使用函数:lateral view explode(split(column, ',')) num
    eg: 如表:t_row_to_column_tmp 数据如下,对tag列进行拆分
    结果:
    转行 (根据主键,进行多行合并一列)
    使用函数:concat_ws(',',collect_set(column))  
    说明:collect_list 不去重,collect_set 去重。 column 的数据类型要求是 string
    eg:如表:t_column_to_row ,根据id,对tag_new 进行合并

     实例二:

    表合并,行转列

    collect_set这就用到了hive中的行转列的知识,需要用到两个内置UDF: collect_set, concat_ws,
    建表:
    create table user_basic_info(id string, name string);
    create table user_address(name string, address string);
     
    加载数据:
    load data local inpath '/home/jthink/work/workspace/hive/row_col_tran/data1' into table user_basic_info;
    load data local inpath '/home/jthink/work/workspace/hive/row_col_tran/data2' into table user_address;
     
    执行合并:
    select max(ubi.id), ubi.name, concat_ws(',', collect_set(ua.address)) as address from user_basic_info ubi join user_address ua on ubi.name=ua.name group by ubi.name;
     

    表拆分,列转行

     

  • 相关阅读:
    转场动画3-手势返回
    UITableViewCell的选中时的颜色设置
    git的使用
    MarkDown语法学习笔记
    移动作业
    移动开发音乐播放器
    python循环删除list中的元素
    Linux权限管理
    Linux用户和用户组
    数据库常用基础操作
  • 原文地址:https://www.cnblogs.com/yfb918/p/10411755.html
Copyright © 2011-2022 走看看