两个listmap合并去重_Sql:用collect_函数用实现上下合并

本文介绍了如何使用Hive SQL的collect_set函数处理用户访问日志,合并ListMap并去除重复项。通过示例展示了如何将daily_log表中的数据转化为用户访问路径的格式,利用concat_ws进行字段分隔,同时比较了collect_set和collect_list的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某网站有一批用户访问日志记录,源数据如下:

Table_name: daily_log

cc1fdb28e523e2e2f614af771eb96336.png

我们想追踪这些用户在该网站内的访问路径,并存储在如下格式:

18d95cfcba9af8ebb8b525d62dce0e83.png

其实用hive-sql内置函数collect_set(或者collect_list)一行简单代码即可实现:

—-* hive-sqlCreate table result as Select user_id,concat_ws(‘,’,collect_set(location)) as location_trackingFrom (    select * from daily_log order by user_id,create_time) t group by t.user_id;

这里concat_ws是为了将已经合并好的字段用’,’分隔开,它与concat类似,只是去掉了两端。

collect_set也可以用collect_list替换,二者主要区别是输出的变量类型不同。前者是字符串类型,后者为array(数组)类型。

除此之外,collect_set会对合并内容去重,而collect_list保留所有的内容。                                                                                                                                                                                                                                                                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值