Hive行转列
今天遇到一个业务需求,要将Hive里一个维表实现分组行转列,例,table_sample如下
cd_var | cd_var_nm |
---|---|
A班-01 | 小若 |
A班-02 | 小红 |
B班-01 | 小离 |
B班-02 | 小敏 |
B班-03 | 小昭 |
实现按班级分组行转列:
1 | SELECT cdv,cdn[0] AS C1,cdn[1] AS C2,cdn[2] AS C3 |
输出结果如下
cdv | C1 | C2 | C3 |
---|---|---|---|
A班 | 小若 | 小红 | NULL |
B班 | 小离 | 小敏 | 小昭 |
注:
split返回是一个数组[],可以直接按下标取值,实现多列。
这个方法比较简单粗暴,业务需求中ETL需要快速处理完成,不够炫酷,但简单够用。