一、行转列

在hive中,想进行转列的操作,就必须了解

1.cancat

cancat(string A/col, string B/col…)   返回输入字符串连接后的结果,支持任意个输入字符串

案例:select cancat('abc','def')   输出:abcdef

2.concat_ws

concat_ws(separator, str1, str2,...):第一个参数剩余参数间的分隔符。如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间

案例:select concat_ws(‘!’,‘abc’,‘edf’)输出:abc!edf
3. collect_set/collect_list

将分组中的某列转为一个数组返回进行去重汇总,产生array类型字段。需要和group by搭配使用

collect_set 去重 collect_list不去重

案例:

select collect_list(sub)as a from tmp_stu(表名) where dt=‘20220902’ group by stu

原表:

学生stu学科sub
小明数学
小张语文
小明数学

结果:

学生stua
小明[数学,数学}
小张语文

二、列转行

将上面的结果表命为student_sub 

现在我们需要将a拆成多行,需要使用split分割函数、explode爆破函数、lateral view函数

代码:

select 学生stu,b

from student_sub

lateral view explode(split(a,',')) table_tmp as b

split分割函数、explode爆破函数、lateral view函数具体函数使用可见第十期

更多推荐