建表语句
create table user_tag_merge
( uid int,
gender String,
agegroup String,
favor String
)
row format delimited fields terminated by '\t'
导入数据
insert into user_tag_merge values(1,'M','90后','sm');
insert into user_tag_merge values(2,'M','70后','sj');
insert into user_tag_merge values(3,'M','90后','ms');
insert into user_tag_merge values(4,'F','80后','sj');
insert into user_tag_merge values(5,'F','90后','ms');
先看需求:
原表数据格式为
需要将其转化格式为
直接上Hql
--先将每行粒度增粗,进行拼接
select
uid,
--str_to_map可以将一个固定格式的字符串转化为map类型
str_to_map(concat("gender",":",gender,",","agegroup",":",agegroup,",","favor",":",favor)) tagMap
from user_tag_merge;
--在作为子集进行侧窗炸裂,然后根据两列进行分组
select
col1 tag_code,
clo2 tag_value,
collect_set(uid)
from(
select
uid,
--将拼接的字符串转化为map
str_to_map(concat("gender",":",gender,",","agegroup",":",agegroup,",","favor",":",favor)) tagMap
from user_tag_merge
)t lateral view explode(tagMap) tmp as col1,clo2
group by col1, clo2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix