ARRAY_CONCAT_AGG |
Tableau de concaténation d'agrégation |
|---|---|
| BigQuery | |
Syntaxe
| ARRAY_CONCAT_AGG(expression [ORDER BY key [{ASC|DESC}] [, ... ]] [LIMIT n]) |
Paramètres
| Nom | Description |
|---|---|
| expression | Ce paramètre permet de spécifier l'expression, qui doit être de type ARRAY, dont les éléments seront concaténés dans un tableau unique. |
| ORDER BY key [{ASC|DESC}] [, ...] | Ce paramètre est une clause fondamentale en SQL, y compris dans BigQuery, permettant de contrôler l'ordre dans lequel les résultats d'une requête ou les éléments agrégés sont présentés. Voici une explication spécifique de chaque composante : key: Ce paramètre permet de spécifier la colonne ou l'expression sur laquelle le tri doit être effectué. Il s'agit de la base de l'ordonnancement. Vous pouvez utiliser le nom d'une colonne, une expression (par exemple, LENGTH(nom_produit)) ou même la position numérique de la colonne dans le SELECT (bien que ce soit moins recommandé pour la lisibilité). {ASC|DESC}: Ce sont des mots-clés optionnels qui déterminent la direction du tri pour la key spécifiée. ASC (Ascendant): Ce paramètre permet de trier les éléments de la valeur la plus basse à la plus élevée. Pour les nombres, c'est du plus petit au plus grand (1, 2, 3...). Pour le texte, c'est alphabétique (A, B, C...). C'est le comportement par défaut si ni ASC ni DESC n'est spécifié. DESC (Descendant): Ce paramètre permet de trier les éléments de la valeur la plus élevée à la plus basse. Pour les nombres, c'est du plus grand au plus petit (3, 2, 1...). Pour le texte, c'est alphabétique inversé (Z, Y, X...). [, ... ]: Cette notation indique que vous pouvez spécifier plusieurs clés de tri, séparées par des virgules. Ce paramètre permet de définir un ordre de tri secondaire, tertiaire, etc. Si les valeurs de la première key sont identiques pour plusieurs éléments, le tri est ensuite effectué sur la deuxième key, et ainsi de suite. Par exemple, ORDER BY pays ASC, ville DESC triera d'abord par pays en ordre alphabétique croissant, puis pour chaque pays, il triera les villes en ordre alphabétique décroissant. |
| LIMIT n | Ce paramètre facultatif permet de limiter le nombre de tableaux de l'expression qui seront concaténés. n doit être une constante de type INT64. |
Description
Cette fonction permet d'effectuer la concaténation de tableau en un seul tableau.
Remarques
- La fonction ARRAY_CONCAT_AGG est utilisée pour agréger plusieurs tableaux en un seul tableau concaténé : Contrairement à ARRAY_AGG agrégeant des scalaires dans un tableau, cette fonction traite directement des ARRAY en entrée et les fusionne dans une seule structure tabulaire. Cela permet de manipuler efficacement des colonnes déjà structurées en tableau.
- Chaque élément de l'expression doit être un tableau (ARRAY) pour que la fonction fonctionne correctement : Si vous fournissez une valeur n'étant pas un tableau, la fonction échouera. Elle est donc particulièrement utile dans des cas où les données ont déjà été pré-agrégées ou structurées sous forme de sous-listes.
- ARRAY_CONCAT_AGG conserve l'ordre des éléments tel que défini dans les tableaux d'origine, sauf si l'on utilise une clause ORDER BY : Grâce à ORDER BY, il est possible de définir dans quel ordre les tableaux doivent être concaténés les uns aux autres, ce qui est crucial pour certains cas comme l'historique ordonné ou le classement d'événements.
- L'utilisation de LIMIT permet de restreindre le nombre de tableaux concaténés, ce qui peut éviter des tableaux très volumineux : Par exemple, on peut vouloir ne concaténer que les 10 premiers tableaux (les 10 meilleurs vendeurs, les 10 premiers jours,...), ce qui donne plus de contrôle sur la taille du résultat.
- Cette fonction est très utile dans des scénarios d'agrégation hiérarchique ou de restructuration complexe : Par exemple, on peut agréger des listes de produits par commande, puis regrouper toutes les commandes par client pour obtenir une seule grande liste de produits livrés.
- Il est possible de combiner ARRAY_CONCAT_AGG avec GROUP BY pour produire une structure par groupe : Cela permet de regrouper et fusionner des tableaux par catégories, clients, dates ou tout autre identifiant, ce qui est très efficace pour des rapports consolidés.
- Attention à la gestion des NULL : si des entrées sont NULL, elles seront ignorées dans l'agrégation, mais pas les tableaux contenant des éléments NULL : En d'autres termes, la fonction ne filtre pas les valeurs NULL internes aux tableaux. Si nécessaire, un ARRAY(SELECT x FROM UNNEST(...) WHERE x IS NOT NULL) devra être utilisé.
- Les performances de ARRAY_CONCAT_AGG peuvent se dégrader si elle traite de très nombreux tableaux volumineux : Il est recommandé d'utiliser LIMIT, de filtrer les données préalablement, ou d'indexer les sous-requêtes pour éviter de surcharger la mémoire ou de ralentir les requêtes complexes.
Dernière mise à jour : Jeudi, le 18 Juin 2020