Hive的行列转换

1行转列
表结构

name  	 constellation		blood_type
孙悟空 	 白羊座 			        A
大海   	 射手座 			        A
宋宋   	 白羊座  				B
猪八戒  	 白羊座  				A			
凤姐     射手座  				A

UDAF多对一 行转列

select
t1.base,
concat_ws("|",collect_set(t1.name)) name
from
(select name,concat(constellation,",",blood_type)base from person_info)t1
group by t1.base;

射手座,A		大海|凤姐
白羊座,A		孙悟空|猪八戒
白羊座,B		宋宋

concat(“1”,“2”,“3”)将各个字符串连接在一起
collect_set(name) 将name里面的字段一个个取出来形成一个数组,例如
select collect_set(name) from person_info;
[“孙悟空”,“大海”,“宋宋”,“猪八戒”,“凤姐”]
concat_ws("|",collect_set(t1.name)) 将t1.name一个一个取出来并且用|连接

1UDTF列转行

  movie 				category 
《疑犯追踪》			悬疑,动作,科幻,剧情 
《Lie to me》 		悬疑,警匪,动作,心理,剧情 
《战狼 2》			战争,动作,灾难

create table movie_info( 
    movie string,  
    category array<string>)  
row format delimited fields terminated by "\t" 
col
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值