我有一个带两列的蜂巢表。两列的类型都是字符串。一个是简单的客户端ID,另一个是命令分隔的项目ID字符串。可以有多个具有相同客户端ID但不同的项ID字符串的行。
我想要一个生成具有两列的表的配置单元查询。一个是客户端ID,另一个是逗号分隔的字符串,包含所有唯一的项ID。
原始表中的数据:
Client Id Item Ids
1 1,2,3,4
2 3,4,6,8
4 4,5,1,3
2 3,4,7,8
3 5,6,8,2
4 7,8,9,4
查询应生成此结果
Client Id Item Ids
1 1,2,3,4
2 3,4,7,6,8
4 4,5,1,3,7,8,9
3 5,6,8,2
答案 0 :(得分:1)
使用explode()
和collect_set()
使用concat_ws
获取唯一集合,汇总字符串,并按Client_id
分组:
hive> select Client_id, concat_ws(',',collect_set(item_id)) as item_ids
> from test_t lateral view explode(split(item_ids,',')) a as item_id
> group by Client_id;
输出:
OK
1 1,2,3,4
2 3,4,6,8,7
3 5,6,8,2
4 4,5,1,3,7,8,9