一、行转列函数
将类似于下面的形式:
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