hive中函数collect_set和collect_list区别

2022年03月26日 703点热度 0人点赞 0条评论
hive里通常通过collect_set和collect_list来进行列转行
collect相关的函数有collect_list和collect_set,它们都是将分组中的某列转为一个数组返回
二者区别在于:collect_list为不去重转换,collect_set为去重转换。
创建测试表:
CREATE table stu_score(
    stu_id string comment '学号',
    stu_name string comment '姓名',
    course string comment '科目',
    score string comment '分数'
) comment '学生成绩表';
数据如下:

列转行实现:

select 
    stu_id,
    stu_name,
    concat_ws(’,’,collect_set(course)) as course,
    concat_ws(’,’,collect_set(score)) as score
from stu_score
group by stu_id, stu_name;

结果展示:

 

阿布

源自灵魂深处的自我救赎。

文章评论