繁体   English   中英

将多行合并为一个空格分隔的字符串

[英]Combine multiple rows into one space separated string

所以我有5行

userid, col
--------------
1, a
1, b
2, c
2, d
3, e

我将如何查询,使其看起来像这样

userid, combined
1, a b
2, c d
3, e

在蜂巢中,您可以使用

SELECT userid, collect_set(combined) FROM tabel GROUP BY user_id;

collect_set删除重复项。 如果您需要保留它们,可以查看以下信息:

Hive中的COLLECT_SET()是否保留重复项?

使用GROUP_CONCAT聚合函数

  SELECT yt.userid,
         GROUP_CONCAT(yt.col SEPARATOR ' ') AS combined
    FROM YOUR_TABLE yt
GROUP BY yt.userid

默认的分隔符是逗号(“,”),因此您需要指定单个空格的SEPARATOR以获得所需的输出。

如果要确保GROUP_CONCAT中值的顺序,请使用:

  SELECT yt.userid,
         GROUP_CONCAT(yt.col ORDER BY yt.col SEPARATOR ' ') AS combined
    FROM YOUR_TABLE yt
GROUP BY yt.userid
SELECT 
  userid,
  concat_ws(" ", collect_set(col)) AS combined
FROM table 
GROUP BY userid
  1. 有重复的MySQLselect col1, group_concat(col2) from table1 group by col1
  2. 没有重复的MySQLselect col1, group_concat(distinct col2) from table1 group by col1
  3. Hive项重复的Hiveselect col1, collect_list(col2) from table1 group by col1
  4. 没有重复项的Hiveselect col1, collect_set(col2) from table1 group by col1

我很确定您不能使用Hive QL做到这一点。 但是,如果您编写自己的Map / Reduce脚本,则应该可以这样做-请参阅本教程以开始使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM