使用GROUP BY的Concat单列字段

时间:2014-06-13 06:46:18

标签: hadoop hive

有没有办法通过对一列中的字段进行分组来组合/连接它们。 例如:

col1   col2
1     aa
1     bb
1     cc
2     dd
2     ee

我想查询类似的内容:

select col1, concat(col2) from tableName group by col1;

输出应为:

1    aa,bb,cc
2    dd,ee

配置单元中是否有任何功能可以执行此操作?

2 个答案:

答案 0 :(得分:5)

假设您有一个表test,如下所示:

select id, val from test order by id, val;     
2   aa
2   bb
1   bb
1   aa

您可以使用HIVE函数collect_set

select id, collect_set(val) from test group by id;
1   ["aa","bb"]
2   ["bb","aa"]

但请注意collect_set会返回一组具有重复元素的对象。

您可以在Language Manual Wiki找到更多详情。

答案 1 :(得分:0)

您可以使用group_concat()实现此目的:

select col1,group_concat(col2) from test group by col1;

默认的分隔符为',',您可以像这样指定分隔符:

select col1,group_concat(col2 separator ';') from test group by col1;