2017-01-20 2 views
1

私はHIVEで以下のようなことを達成しようとしています。2つの行をハイブでaを使って組み合わせる

入力:

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を除いて同様です。出力では、2行の代わりに,で区切る必要があります。

+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を使用して、必要な形式で解析できます。 –

関連する問題