Hive学习笔记:实现group_concat进行有序分组拼接

MySQL 中有 group_concat 进行分组拼接字符串的功能,但 hive 中没有这个函数,需要进行折中处理。

具体可参考以前文章:Hive学习笔记:列转行之collect_list/collect_set/concat_ws

功能更新

对于拼接的字段进行排序,例如:

有多个渠道来源的情况下,“线上”和“线下”渠道,拼接起来有两种情况,需要进行统一排序。

-- 分组拼接
select max(corp_name) as corp_name,
       acc_nbr,
       max(update_date) as update_date,
       concat_ws('|', sort_array(collect_list(channel))) as channel
from 
(
    select corp_name,
           acc_nbr,
           update_date,
           channel,
           row_number() over(partition by acc_nbr order by channel asc) as rn
    from tmp_cwh_table
    where acc_nbr in  ('aaa', 'bbb', 'ccc', 'ddd')
) dd
group by acc_nbr
/*
channel	_c1
线上|线下	10
线上	703
线下	1602
*/

通过 sort_arraycollect_list 得到的组合进行排序,再拼接即可。

参考链接:hive中实现group_concat

posted @   Hider1214  阅读(1741)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2022-03-08 机器学习笔记:sklearn.datasets样本生成器——make_classification、make_blobs、make_regression
点击右上角即可分享
微信分享提示