2017-03-22 12 views
6

デリミタとして「〜」を使用して文字列値を列方向に連結する必要があります。 は、私は、次のデータを持っている:デリミタをハイブにして複数行を連結する

私は区切り文字として持つ「ROW_ID」「〜」の順に各「ID」のための「コメント」欄をCONCATする必要が

enter image description here

の予想される出力は以下の通りです:

enter image description here

GROUP_CONCATその私のハイブバージョンで認識されていないので、オプションではありません。 私はcollect_setまたはcollect_listを使うことができますが、間に区切り文字を挿入することはできません。

回避策はありますか?

+0

テキストと画像を交換してください。 –

+1

Hiveが提供するconcat関数を使用しようとしましたか? このリンクをチェックしてください: - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF –

+0

はい私は与えられたすべてのconcat関数を試しました。それらのすべてが列方向の操作のためのものです。私は行の賢明な操作を探しています – Vaishak

答えて

6

collect_listは、文字列ではなく配列を返します。
配列は、concat_wsを使用して区切り文字列に変換できます。


これは、特定のコメントの順番では機能しません。

select  id 
      ,concat_ws('~',collect_list(comment)) as comments 

from  mytable 

group by id 
; 

+----+-------------+ 
| id | comments | 
+----+-------------+ 
| 1 | ABC~PRQ~XYZ | 
| 2 | LMN~OPQ  | 
+----+-------------+ 
関連する問題