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函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL实现将多行记录合并成一行

SQL实现将多行记录合并成一行

SQL实现将多行记录合并成一行

SQL实现将多行记录合并成一行

SQL实现将多行记录合并成一行

SQL实现将多行记录合并成一行