J'ai besoin de concaténer les valeurs de chaîne avec "~" comme délimiteur. J'ai les données suivantes:
J'ai besoin de concaténer la colonne 'Commentaire' pour chaque 'id' dans l'ordre croissant de 'row_id' avec '~' comme délimiteur.
La sortie attendue est la suivante:
GROUP_CONCAT n'est pas une option car il n'est pas reconnu dans ma version Hive. Je peux utiliser collect_set ou collect_list, mais je ne pourrai pas insérer de délimiteur entre les deux.
Y a-t-il une solution de contournement?
collect_list renvoie un tableau, pas une chaîne.
Le tableau peut être converti en chaîne délimitée en utilisant concat_ws.
Cela fonctionnera, sans ordre spécifique de commentaires.
select id
,concat_ws('~',collect_list(comment)) as comments
from mytable
group by id
;
+----+-------------+
| id | comments |
+----+-------------+
| 1 | ABC~PRQ~XYZ |
| 2 | LMN~OPQ |
+----+-------------+