在Hive中使用分隔符连接多行数据

15

我需要将字符串数据按行串联起来,使用“~”作为分隔符。

我有以下数据:

enter image description here

我需要按照'row_id'的升序顺序为每个'id'串联'Comment'列,并使用'~'作为分隔符。

期望的输出如下:

enter image description here

GROUP_CONCAT不是我的Hive版本所支持的选项。

我可以使用collect_setcollect_list,但无法在其中插入分隔符。

有没有什么解决方法?


请用文本替换图像。 - David דודו Markovitz
1
你尝试过使用Hive提供的concat函数吗? 请查看此链接:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF - Deepan Ram
是的,我尝试了所有提供的连接函数。它们都是针对列操作的。我正在寻找行操作。 - Vaishak
1个回答

39

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

我们可以使用 concat() over partition by() 子句来获得相同的结果吗? - Regressor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接