Passer au contenu principal
Lorsque vous travaillez avec des données de séries temporelles, des lacunes peuvent apparaître en raison de données manquantes ou de périodes d’inactivité. En général, nous ne souhaitons pas voir ces lacunes apparaître lorsque nous interrogeons les données. Dans ce cas, la clause WITH FILL peut s’avérer utile. Ce guide explique comment utiliser WITH FILL pour combler les lacunes dans vos données de séries temporelles.

Mise en place

Imaginons la table suivante, qui stocke les métadonnées des images générées par un service d’images GenAI :
Importons quelques enregistrements :

Interroger par intervalle

Nous allons explorer les images créées entre 00:24:03 et 00:24:04 le 24 mars 2023, créons donc quelques paramètres correspondant à ces instants :
Ensuite, nous allons écrire une requête qui regroupe les données par tranches de 100 ms et renvoie le nombre d’images créées dans chaque tranche :
Le jeu de résultats inclut uniquement les intervalles de 100 ms dans lesquels une image a été créée, mais pour une analyse de séries temporelles, on peut vouloir renvoyer chaque intervalle de 100 ms, même s’il ne contient aucune entrée.

WITH FILL

Nous pouvons utiliser la clause WITH FILL pour combler ces intervalles manquants. Nous allons également spécifier le STEP, qui correspond à la taille des intervalles à combler. Par défaut, cette valeur est de 1 seconde pour les types DateTime, mais nous voulons combler des intervalles de 100 ms ; utilisons donc un intervalle de 100 ms comme valeur de pas :
Nous pouvons voir que les intervalles manquants ont été remplis avec des valeurs 0 dans la colonne count.

WITH FILL…FROM

Il reste toutefois un manque au début de l’intervalle de temps, que nous pouvons corriger en spécifiant FROM :
Nous pouvons constater dans les résultats que tous les intervalles de 00:24:03.000 à 00:24:03.500 apparaissent désormais.

WITH FILL…TO

Il manque encore quelques intervalles à la fin de l’intervalle de temps, mais nous pouvons les remplir en spécifiant une valeur TO. TO n’étant pas inclusif, nous ajouterons donc une petite valeur à l’heure de fin pour nous assurer qu’elle est bien incluse :
Les intervalles manquants ont désormais tous été comblés et nous avons un point de données toutes les 100 ms de 00:24:03.000 à 00:24:05.000.

Comptage cumulatif

Supposons que nous souhaitions désormais suivre un comptage cumulatif du nombre d’images créées dans l’ensemble des intervalles. Nous pouvons le faire en ajoutant une colonne cumulative, comme indiqué ci-dessous :
Les valeurs de la colonne cumulative ne donnent pas le résultat souhaité.

WITH FILL…INTERPOLATE

Toutes les lignes qui ont 0 dans la colonne count ont également 0 dans la colonne cumulative, alors que nous préférerions qu’elles reprennent la valeur précédente de la colonne cumulative. Nous pouvons le faire en utilisant la clause INTERPOLATE, comme indiqué ci-dessous :
C’est bien mieux. Et pour finir, ajoutons un graphique en barres à l’aide de la fonction bar, sans oublier d’ajouter notre nouvelle colonne à la clause INTERPOLATE.
Dernière modification le 2 juillet 2026