Concat在hive中有多个分隔符的多行

时间:2017-03-22 10:38:01

标签: sql hadoop hive hdfs hiveql

我需要将'〜'作为分隔符以行方式连接字符串值。 我有以下数据:

enter image description here

我需要以“row_id”的升序排列每个“id”的“Comment”列,并以“〜”作为分隔符。

预期产出如下:

enter image description here

GROUP_CONCAT不是一个选项,因为它在我的Hive版本中无法识别。 我可以使用collect_set或collect_list,但我不能在它们之间插入分隔符。

有什么工作吗?

1 个答案:

答案 0 :(得分:13)

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     |
+----+-------------+