使用hive中的concat_ws,collect_set()列转行

本文介绍了如何使用SQL进行数据建表、批量插入及数据聚合。通过`CREATE TABLE`与`INSERT INTO`语句创建并填充表格,然后利用`SELECT`, `GROUP BY`, `CONCAT_WS`和`COLLECT_SET`函数实现数据的去重与合并,形成聚合后的字符串。这种方法在数据处理中十分实用。

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

建表

drop table if exists analyst.fiona_colunm_to_row;
CREATE TABLE IF NOT EXISTS analyst.fiona_colunm_to_row AS
SELECT
'c' as row_1,'d' as row_2,1 as row_3

批量插入数据:

insert into analyst.fiona_colunm_to_row values
('c','d',2),
('c','d',3),
('e','f',1),
('e','f',2),
('e','f',3),
('e','f',4)

得到表格如下:
在这里插入图片描述
现在想要得到:
在这里插入图片描述
可以使用如下代码:

SELECT row_1,
       row_2,
       concat_ws(',' , collect_set(cast(row_3 AS string))) AS colunm_to_row
FROM analyst.fiona_row_to_column
GROUP BY row_1,
         row_2;

其中:
collect_set作用有2个:
作用一:去重,去掉group by后面的重复元素
作用二:将group by后面属于同一组的第三列搞起来形成一个集合

concat_ws作用:
将collect_set形成的集合的每个元素之间添加逗号形成字符串

引用:https://blog.youkuaiyun.com/jsbylibo/article/details/82859168

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值