我正试图在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行相似。在输出中,它应该由,
而不是两行分隔。
答案 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以所需格式转换输出。