在 Hive 中使用定界符连接多行
Concat multiple rows with a delimiter in Hive
我需要使用“~”作为分隔符逐行连接字符串值。
我有以下数据:
我需要按 'row_id' 的升序为每个 'id' 连接 'Comment' 列,并以“~”作为分隔符。
预期输出如下:
GROUP_CONCAT
不是一个选项,因为它在我的 Hive 版本中无法识别。
我可以使用 collect_set
或 collect_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 |
+----+-------------+
我需要使用“~”作为分隔符逐行连接字符串值。 我有以下数据:
我需要按 'row_id' 的升序为每个 'id' 连接 'Comment' 列,并以“~”作为分隔符。
预期输出如下:
GROUP_CONCAT
不是一个选项,因为它在我的 Hive 版本中无法识别。
我可以使用 collect_set
或 collect_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 |
+----+-------------+