Hive常用函数之行转列和列转行函数

一、行转列函数

将类似于下面的形式:
A
B
C
转化为类似于下面的形式:
A B C 
即将多行转化为一行,排在一行了,就成了一列

concat函数:select concat('A','B','C');

concat_ws函数:select concat_ws('|',array('A','B','C'));

collect_set()函数

说到explode()函数就不得不说一下collect_set()函数。collect_set(col)函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。例如,要统计每种no下的score,直接对no分组后对score进行collect_set操作,如下:

select no,collect_set(score) from tablss group by no;

这样,就实现了将列转行的功效,但是注意只限同列基本数据类型,函数只能接受一列参数。
 

二、列转行函数:EXPLODE,LATERAL VIEW

把类似于
A , B , C
转化为
A
B
C

explode函数:select explode(array('A','B','C'));

select explode(map('liubei','18','zhangfei','19'));

补充:split函数 

 

hive> select split('ab_cd_ef', '\_')[0] from test;
ab
hive> select split('ab?cd_ef', '\\?')[0] from test;
ab

 

结合LATERAL VIEW使用参考:https://blog.csdn.net/lixinkuan328/article/details/102187152

发布了491 篇原创文章 · 获赞 435 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/lixinkuan328/article/details/104483324