在Hive中将两行与a组合在一起

时间:2017-01-20 13:19:14

标签: sql hive hiveql

我正试图在HIVE中实现以下目标。

输入:

Col1  Col2  Col3  Col4  Col5
 A1    B1     C1    D1   E1
 A1    B1     C2    D1   E1
 A3    B3     C3    D3   E3
 A4    B4     C4    D4   E4

输出:

Col1  Col2  Col3  Col4  Col5
 A1    B1    C1,C2  D1   E1
 A3    B3     C3    D3   E3
 A4    B4     C4    D4   E4

除输入中的Col3外,第1​​行和第2行相似。在输出中,它应该由,而不是两行分隔。

1 个答案:

答案 0 :(得分:3)

collect_set完全符合您的要求。以下查询应该:

select col1, col2, col4, col5, concat_ws(",", collect_set(col3))  from <table> group by col1, col2, col4, col5;

collect_set删除重复项会为您提供唯一的列表。如果您在col3中有重复项并希望保留它们,则可以使用collect_list。所以如果你的col3有C1,C1,C2;使用collect_set给出“C1,C2”。使用collect_list给出“C1,C1,C2”

编辑:concat_ws以所需格式转换输出。