hive中对多行进行合并—collect_set&collect_list函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive中对多行进行合并—collect_set&collect_list函数相关的知识,希望对你有一定的参考价值。
参考技术A 最近在做项目的时候需要对数据组埋点得到的数据进行合并:1.原始数据我需要拿到post_id,district_id字段,而一个post可能投放到同一城市的多个district,而在后期使用数据时,需要的数据形式是同一个post_id的记录不可以因为多个district产生多条记录,因此需要将多个district合并为一个值;
2.而在原始表中,district_id的值是INT类型;
3.需要对字段进行去重。
因此,我进行了如下操作:
select
post_id,
concat_ws(',',collect_set(string(district_id))) district_id
from
ods.ods_jz_post_address
group by post_id
***若不需要去重,可选择collect_list()函数代替collect_set(),具体语法请自行查找***
hive中多行合并一行concat_ws(去重及不去重)
原始数据:
id score
aaa 1
aaa 2
aaa 3
预期结果:
id score
aaa 1,2,3
可使用
select id,concat_ws(',',collect_set(cast(colname as string)))
from table group by id;
使用concat_ws函数,需将字段转成string格式,collect_set会对该列进行去重,如果不需要去重,可使用collect_list参数代替。
创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖以上是关于hive中对多行进行合并—collect_set&collect_list函数的主要内容,如果未能解决你的问题,请参考以下文章