Объединить несколько строк с разделителем в hive
Мне нужно объединить строки строковых значений с помощью " ~ " в качестве разделителя. У меня есть следующие данные:
Мне нужно объединить столбец "комментарий" для каждого " id "в порядке возрастания "row_id" С " ~ " в качестве разделителя.
ожидаемый результат, как показано ниже:
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 |
+----+-------------+