GENERATE_DATE_ARRAY |
Génère un tableau de date |
|---|---|
| BigQuery | |
Syntaxe
| GENERATE_DATE_ARRAY(start_date, end_date[, INTERVAL INT64_expr date_part]) |
Paramètres
| Nom | Description |
|---|---|
| start_date | Ce paramètre permet de spécifier la date de début de la séquence. La génération du tableau commencera à partir de cette date. |
| end_date | Ce paramètre permet de spécifier la date de fin de la séquence. Le tableau inclura des dates jusqu'à cette date, à condition que l'intervalle le permette. |
| INTERVAL INT64_expr date_part | Ce paramètre facultatif permet de définir l'incrément entre chaque date du tableau. INT64_expr : Ce paramètre permet de spécifier la valeur numérique de l'intervalle (par exemple, 1, 7, 30). date_part : Ce paramètre permet de spécifier l'unité de temps pour l'intervalle (par exemple, DAY, WEEK, MONTH, YEAR). Si ce paramètre n'est pas fourni, l'incrément par défaut est de 1 DAY. |
Description
Cette fonction permet de demander un tableau avec des dates de générées.
Remarques
- GENERATE_DATE_ARRAY permet de créer facilement des séquences de dates : Elle est particulièrement utile lorsqu'on veut créer une série chronologique, comme une liste de jours, de semaines ou de mois, sans avoir besoin d'une table de calendrier externe. Cela facilite la mise en place de rapports temporels dynamiques.
- La fonction inclut toujours la date de fin si elle correspond à un pas valide : Contrairement à certaines fonctions dans d'autres langages ou outils excluant la borne supérieure, ici end_date est intégrée dans la liste générée tant qu'elle s'aligne avec le pas. Cela évite de devoir ajouter manuellement une date supplémentaire.
- L'intervalle par défaut est d'un jour : Si on n'indique pas le paramètre INTERVAL, BigQuery utilise automatiquement un incrément de 1 jour (1 DAY). C'est pratique pour générer rapidement des calendriers quotidiens, mais peut être trop dense si on veut des périodes plus espacées (comme des semaines ou des mois).
- L'intervalle peut être personnalisé pour s'adapter à différents besoins temporels : Grâce au couple INT64_expr date_part, on peut créer des séquences par semaine (7 DAY ou 1 WEEK), par mois (1 MONTH), ou même par année (1 YEAR). Cela rend la fonction extrêmement flexible selon le niveau de granularité requis.
- Elle génère une sortie sous forme de tableau de type ARRAY<DATE> : Le résultat est un tableau de dates, que l'on peut ensuite manipuler avec UNNEST() pour le convertir en lignes exploitables dans des requêtes SQL. Cela permet, par exemple, de croiser cette séquence avec des données transactionnelles ou d'activité.
- Très utile pour créer des périodes manquantes dans des séries temporelles : On peut générer un tableau de dates attendu (par exemple, tous les jours du mois) puis le croiser avec des événements existants pour identifier les jours sans données. C'est une méthode puissante pour compléter des jeux de données incomplets.
- Elle prend en charge des intervalles croissants mais pas décroissants : Contrairement à GENERATE_ARRAY qui peut aller dans les deux sens, GENERATE_DATE_ARRAY ne permet que des séquences progressives. Si start_date est après end_date, la fonction renverra un tableau vide.
- Peut générer rapidement un grand nombre de lignes selon l'intervalle choisi : Il faut être prudent avec de longs intervalles de dates combinées à de petits intervalles, car cela peut produire des milliers de lignes. Il est donc conseillé de limiter la période ou d'augmenter l'intervalle pour éviter des performances dégradées.
Dernière mise à jour : Jeudi, le 18 Juin 2020