Объединить несколько строк с разделителем в hive

Мне нужно объединить строки строковых значений с помощью " ~ " в качестве разделителя. У меня есть следующие данные:

enter image description here

Мне нужно объединить столбец "комментарий" для каждого " id "в порядке возрастания "row_id" С " ~ " в качестве разделителя.

ожидаемый результат, как показано ниже:

enter image description here

GROUP_CONCAT не является опцией, так как он не распознается в моей версии Hive. Я могу использовать collect_set или collect_list, но я не буду можно вставить разделитель между ними.

есть ли обойти?

1 ответов


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