【问题标题】:Concat multiple rows with a delimiter in Hive在 Hive 中使用分隔符连接多行
【发布时间】:2017-08-14 10:04:48
【问题描述】:

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

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

预期输出如下:

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

有什么解决办法吗?

【问题讨论】:

标签: sql hive hiveql concat


【解决方案1】:

collect_list 返回数组,而不是字符串。
可以使用 concat_ws 将数组转换为分隔字符串。


这将起作用,没有特定的 cmets 顺序。

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 () 子句获得相同的结果吗?
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 2019-08-01
相关资源
最近更新 更多