文字列値を区切り文字として「〜」で行ごとに連結する必要があります。次のデータがあります。
「〜」を区切り文字として、「row_id」の昇順で各「id」の「Comment」列を連結する必要があります。
予想される出力は次のとおりです。
GROUP_CONCATは、私のHiveバージョンでは認識されないため、オプションではありません。 collect_setまたはcollect_listを使用できますが、間に区切り文字を挿入することはできません。
回避策はありますか?
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 |
+----+-------------+