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_array
对 collect_list
得到的组合进行排序,再拼接即可。
参考链接:hive中实现group_concat
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2022-03-08 机器学习笔记:sklearn.datasets样本生成器——make_classification、make_blobs、make_regression