hive的sql之行转列和列转行

行转列 将多行的数据合并到一列中

collect_set(要聚合的一列字段名)   -- 去重
collect_list(要聚合的一列字段名)  这两个都是聚合函数    将一列数据聚集成一个数组集合
select collect_set(要聚合的一列字段名) from 加表名 ;

concat_ws 拼接

concat_ws(拼接符,可变个数的字符串或数组)   可以拼接字符串也可以拼接数组中的元素
select concat_ws(',','a','b') ;   返回的是a,b   把这俩字符串用逗号拼接
select concat_ws(',', array('a','b')) ;   返回的是a,b  把数组中的元素用逗号拼接

explode 炸裂函数

explode(数组或者map集合)   会将这个数据组以列得 形式展示出来   
select explode(array('1','2','3'));    返回的就是竖着的123

lateral view 测窗口函数

tb_movie2   表名
+--------+-----------------------------+
|  name  |            categorys        |
+--------+-----------------------------+
| 《八佰》   | ["战争","动作","抗日","剧情"]       |
| 《姜子牙》  | ["动画","神话","科幻","动作","伦理"]  |
| 《战狼2| ["战争","动作","灾难"]            |
+--------+-----------------------------+
select 
explode(split(categorys , ','))  split切割这个字符串再explode炸裂开变成竖着的
from
tb_movie2 ;
select
name  ,
tp
from
tb_movie2
lateral view    用了一个测窗口函数把炸裂开的和原表关联拼接
explode(split(categorys , ',')) t  as  tp  ;  
t  表名 
tp  虚拟表的字段名 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值