Syntaxe
Paramètres
| Nom |
Description |
| subquery |
Ce paramètre permet de spécifier la sous-requête SQL dont les enregistrements seront utilisés pour créer les éléments du tableau. |
Description
Cette fonction permet de demander un tableau contenant un élément pour chaque enregistrement d'une sous-requête SQL.
Remarques
- La fonction ARRAY(subquery) permet de transformer les résultats d'une sous-requête en un tableau SQL (de type ARRAY) : Chaque ligne retournée par la
sous-requête devient un élément du tableau. C'est une construction puissante pour regrouper des données sous forme compacte ou imbriquée.
- Elle est souvent utilisée dans des requêtes de type SELECT imbriqué pour agréger plusieurs lignes en une seule ligne contenant un tableau : Cela est
particulièrement utile pour construire des objets JSON ou des structures hiérarchiques dans les rapports et API, comme une liste de commandes par client.
- Le type du tableau résultant dépend du type de la colonne sélectionnée dans la sous-requête : Par exemple, si la sous-requête retourne des entiers, le
tableau sera de type ARRAY<INT64>. Si elle retourne plusieurs colonnes, le tableau sera constitué de structures.
- Cette fonction peut être combinée avec GROUP BY pour regrouper des lignes liées à une même entité : On peut ainsi créer des colonnes de type tableau
pour résumer les données liées à un identifiant, par exemple une liste de transactions par utilisateur.
- La sous-requête utilisée dans ARRAY(...) doit retourner exactement une colonne, sinon BigQuery renverra une erreur : Si plusieurs colonnes sont
nécessaires, il faut les encapsuler dans une structure (STRUCT(...)) pour que chaque élément du tableau soit un enregistrement structuré.
- Cette fonction améliore la lisibilité et la performance dans des requêtes complexes, car elle évite les jointures redondantes pour agréger des
sous-ensembles : En résumé, elle permet une modélisation de type "relation vers tableau", ce qui est particulièrement utile dans les exports ou les vues
destinées à des outils de visualisation.
- Le tableau retourné peut être vide si la sous-requête ne retourne aucun enregistrement : Il est donc souvent judicieux de tester sa longueur avec
ARRAY_LENGTH(...) pour vérifier s'il contient des données avant de le traiter plus loin dans la requête.
- Le contenu du tableau peut ensuite être manipulé avec d'autres fonctions BigQuery comme UNNEST, OFFSET, ARRAY_LENGTH, ou encore ARRAY_TO_STRING : Cela
permet d'extraire des éléments spécifiques, de parcourir les éléments, de les convertir en chaîne ou de les analyser comme s'ils formaient une table temporaire.
Dernière mise à jour : Jeudi, le 18 Juin 2020