大数据学习(九)hive中行转列 列转行(都附带例子)
hive函数
一、行转列
在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 |
小明 | 数学 |
小张 | 语文 |
小明 | 数学 |
结果:
学生stu | a |
小明 | [数学,数学} |
小张 | 语文 |
二、列转行
将上面的结果表命为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函数具体函数使用可见第十期
更多推荐
所有评论(0)