已经有人问过并回答了SQL(将多行转换为一个逗号作为分隔符),所提到的任何方法都可以在Hive中工作,例如从这里开始:
+------+------+
| Col1 | Col2 |
+------+------+
| a | 1 |
| a | 5 |
| a | 6 |
| b | 2 |
| b | 6 |
+------+------+
Run Code Online (Sandbox Code Playgroud)
对此:
+------+-------+
| Col1 | Col2 |
+------+-------+
| a | 1,5,6 |
| b | 2,6 |
+------+-------+
Run Code Online (Sandbox Code Playgroud)
Nee*_*els 19
聚合器功能collect_set可以实现您想要获得的功能.这是文档.所以你可以写一个像这样的查询:
SELECT Col1, collect_set(Col2)
FROM your_table
GROUP BY Col1;
Run Code Online (Sandbox Code Playgroud)
然而,MySQL GROUP BY和Hive 之间存在一个显着差异,collect_set即GROUP_CONCAT在结果数组中保留重复数据,同时collect_set删除数组中出现的重复项.在您显示的示例中,没有重复的组值,Col2因此您可以继续使用它.
小智 5
尝试这个
SELECT Col1, concat_ws(',', collect_set(Col2)) as col2
FROM your_table
GROUP BY Col1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12315 次 |
| 最近记录: |