简单介绍一下如何使用 Hive 函数实现 Oracle listagg() 函数效果
测试数据如下
1001 90001
1001 90002
1001 90003
1001 90004
1002 90005
1002 90006
建 ORC 表并导入测试数据
create table test_orc(
pro_id string,
no_id string)
clustered by (no_id) into 1 buckets
stored as orc
tblproperties('transactional'='true');
-- 导入数据
insert into test_orc values('1001','90001');
insert into test_orc values('1001','90002');
insert into test_orc values('1001','90003');
insert into test_orc values('1001','90004');
insert into test_orc values('1002','90005');
insert into test_orc values('1002','90006');
对 no_id 进行合并,并以「,」分隔
select pro_id,concat_ws(',',collect_set(no_id)) as no_ids from test_orc group by pro_id;
-- 返回结果
1001 90001,90002,90003,90004
1002 90005,90006
其中 collect_set() 函数返回没有重复的记录,返回类型为 Array。