GENERATE_ARRAY |
Généré un tableau |
| BigQuery |
Syntaxe
|
GENERATE_ARRAY(start_expression, end_expression[, step_expression])
|
Paramètres
| Nom |
Description |
| start_expression |
Ce paramètre permet de spécifier la valeur de début de la séquence numérique qui sera générée dans le tableau. |
| end_expression |
Ce paramètre permet de spécifier la valeur de fin de la séquence numérique. Le tableau contiendra des valeurs jusqu'à et incluant cette valeur, tant qu'elle ne dépasse pas start_expression si step_expression est négatif. |
| step_expression |
Ce paramètre facultatif permet de définir l'incrément entre chaque valeur générée dans le tableau. Si ce paramètre n'est pas spécifié, la valeur par défaut est 1. Ce paramètre peut être positif (pour une séquence croissante) ou négatif (pour une séquence décroissante). |
Description
Cette fonction permet de demander un tableau avec des valeurs générées.
Remarques
- GENERATE_ARRAY est idéale pour créer des séquences numériques dynamiques : Elle permet de générer un tableau de nombres sans avoir besoin d'entreposer ces
données manuellement dans une table. Cette fonction est souvent utilisée pour construire des intervalles numériques ou simuler des boucles dans les requêtes
SQL.
- La fonction accepte un pas positif ou négatif via step_expression : Si le step_expression est positif, la séquence croît; s'il est négatif, elle décroît.
Cela permet de générer des tableaux dans les deux sens (croissant ou décroissant), ce qui est très utile pour des cas comme des rétro-comptes ou des calendriers
inversés.
- Le pas (step_expression) est optionnel mais fondamental pour le contrôle précis de la séquence : Par défaut, la valeur du pas est de 1, ce qui suffit pour
la majorité des cas simples. Cependant, pour générer des séries espacées (ex : tous les 5 ou tous les 10), il faut le spécifier explicitement pour adapter la densité des
valeurs.
- La fonction inclut la valeur de fin dans la séquence : Contrairement à d'autres langages de programmation excluant souvent la borne supérieure,
GENERATE_ARRAY inclut end_expression si elle respecte la logique du pas. Cela évite des ajustements manuels en fin de séquence.
- GENERATE_ARRAY fonctionne uniquement avec des types numériques compatibles : Elle est généralement utilisée avec des types INT64, mais peut également être
utilisée avec DATE ou DATETIME via des fonctions dérivées comme GENERATE_DATE_ARRAY. Pour les chaînes de caractères, une transformation complémentaire est nécessaire.
- Très utile pour générer des tableaux temporaires sans créer de tables physiques : Elle permet, par exemple, de produire une liste de jours, d'heures ou de
numéros sans créer de table dédiée. C'est une fonction courante dans les solutions analytiques pour créer des axes de comparaison ou des données de référence.
- Elle est fréquemment utilisée dans des jointures avec UNNEST : En combinaison avec UNNEST, GENERATE_ARRAY permet de transformer une séquence en table
temporaire, ce qui facilite l'utilisation dans des clauses JOIN ou CROSS JOIN afin de croiser des données avec des intervalles numériques.
- Peut entraîner des performances élevées si mal utilisée sur de grandes intervalles : Comme elle génère un tableau en mémoire, il faut éviter de l'utiliser
avec une plage immense (par exemple de 1 à 1 million) sans nécessité, car cela peut ralentir considérablement les requêtes ou épuiser les ressources.
Dernière mise à jour : Jeudi, le 18 Juin 2020