在 Hive 中使用定界符连接多行

Concat multiple rows with a delimiter in Hive

我需要使用“~”作为分隔符逐行连接字符串值。 我有以下数据:

我需要按 'row_id' 的升序为每个 'id' 连接 'Comment' 列,并以“~”作为分隔符。

预期输出如下:

GROUP_CONCAT 不是一个选项,因为它在我的 Hive 版本中无法识别。 我可以使用 collect_setcollect_list,但我无法在两者之间插入定界符。

有什么解决方法吗?

collect_list returns 数组,不是字符串。
可以使用 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     |
+----+-------------+