2017-01-20 34 views
1

我試圖在HIVE中實現如下所示的內容。在Hive中組合兩行,在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 

行1和行2相同,除了在COL3輸入相似。在輸出中,應該用,而不是兩行來分隔。

+0

這是否也適用於其他列?例如:col1在2行上是不同的,所有其他列是相同的? –

+0

no ..它僅用於Col3 – user2810706

回答

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以所需格式轉換輸出。

+0

它具有魔力,但它將值與'[「'和'」]'連接起來。無論如何,可以處理...感謝您的答案 – user2810706

+0

我編輯了我的答案。您可以使用concat_ws以所需格式解析它。 –