hive 行转列/列转行

在使用hive对一些日志数据进行解析或者分析的时候会有将行列进行转换的情形,我们将分别进行讨论。

一、行转列。

原始数据如下:

                                                          图一

需要转换成如下形式:

                                                           图二

即同一个品牌对应sku的分数按字典形式存储为dict字段。

需要用到函数concat_ws,collect_list,concat,代码如下:

select id ,user brand,
concat_ws(',',collect_list(concat(sku,':',score)))  dict
from  data_base.sku_score a
where ( user = 10000488 or user = 1000231 or user = 10004556)
group by id,user

二:列转行

即将图二还原成图一形式。

代码如下: 

select id,brand,split(goods_id2,':')[0] sku,split(goods_id2,':')[1] score  
from (select  id,brand,goods_id2  from dmall_search.hive_test 
lateral view explode(split(dict,','))goods as goods_id2 )a

关注微信公众号“H君聊人生”一起成长:

H君聊人生

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值