一、行转列
在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 |
小明 | [数学,数学} |
小张 | 语文 |
二、列转行
待更新