STRING_AGG |
Agglomération de chaîne de caractères |
|---|---|
| BigQuery | |
Syntaxe
| STRING_AGG([DISTINCT] expression [, delimiter] [ORDER BY key [{ASC|DESC}] [, ... ]] [LIMIT n]) [OVER (...)] |
Paramètres
| Nom | Description |
|---|---|
| DISTINCT | Ce paramètre facultatif permet de spécifier que seuls les valeurs uniques de l'expression doivent être concaténées. Si DISTINCT est présent, les doublons sont ignorés avant la concaténation. |
| expression | Ce paramètre permet de définir la valeur (de type STRING ou BYTES) que vous souhaitez agréger en une seule chaîne. |
| delimiter | Ce paramètre facultatif permet de spécifier la chaîne de caractères étant insérée entre chaque valeur agrégée. Si ce paramètre est omis, la virgule (,) est utilisée par défaut. |
| ORDER BY | Ce paramètre permet d'indiquer à BigQuery que vous souhaitez spécifier un ordre de tri pour les valeurs avant leur concaténation. Sans cette clause, l'ordre des éléments dans la chaîne résultante n'est pas garanti et peut varier d'une exécution à l'autre ou en fonction de facteurs internes à BigQuery. |
| key | Ce paramètre permet de définir la colonne ou l'expression sur laquelle le tri des valeurs à concaténer doit être effectué. Il peut s'agir de l'expression elle-même ou d'une autre colonne liée à la ligne. |
| ASC | DESC | Ce paramètre facultatif permet de spécifier l'ordre de tri pour la key définie. ASC : Abréviation de "Ascending" (croissant). Ce mot-clé indique que les valeurs de la key doivent être triées par ordre croissant. Si vous ne spécifiez ni ASC ni DESC, ASC est l'ordre par défaut. DESC : Abréviation de "Descending" (décroissant). Ce mot-clé indique que les valeurs de la key doivent être triées par ordre décroissant. |
| ... | Cette notation indique que vous pouvez spécifier plusieurs clés de tri, séparées par des virgules. |
| LIMIT n | Ce paramètre facultatif permet de limiter le nombre de valeurs à concaténer. La fonction arrêtera d'ajouter des valeurs une fois que n valeurs (après application de DISTINCT et ORDER BY) ont été traitées. |
| OVER (...) | Ce paramètre facultatif permet de définir la fenêtre d'analyse pour la fonction. Lorsqu'il est utilisé, STRING_AGG agit comme une fonction de fenêtre, concaténant les valeurs pour chaque ligne en fonction d'un ensemble de lignes défini par la clause OVER. Cette clause peut inclure des spécifications de partitionnement (PARTITION BY), d'ordonnancement (ORDER BY), et de cadrage de fenêtre (ROWS ou RANGE). Si OVER est omis, la fonction agit comme une fonction d'agrégation standard sur toutes les lignes du groupe ou de la table. |
Description
Cette fonction permet d'effectuer la concaténation de valeurs spécifiées.
Remarques
- Concaténation intelligente de valeurs multiples : La fonction STRING_AGG permet de regrouper plusieurs lignes textuelles en une seule chaîne. C'est particulièrement utile lorsqu'on souhaite obtenir une liste d'éléments séparés par des virgules ou un autre séparateur à partir de plusieurs enregistrements d'un groupe ou d'un sous-ensemble de données.
- Le séparateur peut être personnalisé : En ajoutant un paramètre delimiter, on peut choisir comment séparer les valeurs concaténées (virgule, point-virgule, saut de ligne, espace,...). Cela permet d'adapter le format de sortie au besoin (exemple : CSV, liste lisible, balisage HTML ou JSON simplifié).
- Le mot clef DISTINCT évite les doublons : Avec DISTINCT, seules les valeurs uniques sont conservées pour la concaténation. Cela est utile lorsqu'on veut éviter de répéter plusieurs fois les mêmes mots, codes ou éléments dans la chaîne finale, tout en gardant un format compact.
- L'ordre des éléments peut être strictement contrôlé : Grâce à la clause ORDER BY, il est possible de préciser l'ordre dans lequel les valeurs sont concaténées. Cela est crucial lorsqu'on veut une sortie déterministe, comme une liste triée par nom, date ou priorité, et éviter les résultats non reproductibles.
- La clause LIMIT optimise les performances et le résultat : En spécifiant un LIMIT, on peut restreindre le nombre de valeurs concaténées dans la chaîne finale. Cela peut être utile pour éviter des résultats trop longs ou pour créer des extraits (comme les 3 premiers balises associés à un produit).
- Peut être utilisée comme fonction de fenêtre : Lorsqu'on ajoute une clause OVER, STRING_AGG devient une fonction analytique, capable de concaténer des valeurs pour chaque ligne en fonction d'une fenêtre (comme toutes les lignes du même groupe, avec tri et limites spécifiques). Cela permet d'obtenir, pour chaque ligne, un résumé textuel de son contexte.
- Fonction précieuse pour la génération de rapports lisibles : Dans un contexte de BI ou de reporting, STRING_AGG permet par exemple de lister les noms de produits d'un même client, ou toutes les adresses de courriel liées à un groupe, en une seule ligne, ce qui rend les résultats plus lisibles et compacts.
- Compatible avec les types STRING et BYTES : La fonction fonctionne aussi bien avec des chaînes de caractères classiques qu'avec des séquences d'octets, ce qui lui donne une certaine flexibilité dans des contextes binaires ou encodés, bien que l'usage soit plus courant avec des chaînes lisibles (STRING).
Dernière mise à jour : Jeudi, le 18 Juin 2020