Passer au contenu principal
ClickHouse propose plusieurs méthodes pour travailler avec des séries temporelles, ce qui vous permet d’agréger, de regrouper et d’analyser des points de données sur différentes périodes. Cette section présente les opérations fondamentales couramment utilisées avec des données temporelles. Parmi les opérations courantes figurent le regroupement des données par intervalles de temps, la gestion des trous dans les séries temporelles et le calcul des variations entre différentes périodes. Ces opérations peuvent être effectuées à l’aide de la syntaxe SQL standard, combinée aux fonctions temporelles intégrées de ClickHouse. Nous allons explorer les capacités de requêtage sur les séries temporelles dans ClickHouse avec le jeu de données Wikistat (données de pages vues de Wikipedia) :
Remplissons cette table avec 1 milliard d’enregistrements :

Agrégation par tranche de temps

Le besoin le plus courant consiste à agréger les données par période, par exemple pour obtenir le nombre total de hits pour chaque jour :
Nous avons utilisé ici la fonction toDate(), qui convertit l’heure spécifiée en type Date. Sinon, nous pouvons regrouper par heure et filtrer sur une date précise :
La fonction toStartOfHour() utilisée ici ramène l’heure indiquée au début de l’heure. Vous pouvez également regrouper par année, trimestre, mois ou jour.

Intervalles de regroupement personnalisés

Nous pouvons même regrouper selon des intervalles arbitraires, par exemple 5 minutes, à l’aide de la fonction toStartOfInterval(). Supposons que nous voulions regrouper selon des intervalles de 4 heures. Nous pouvons spécifier l’intervalle de regroupement à l’aide de la clause INTERVAL :
Ou bien, nous pouvons utiliser la fonction toIntervalHour()
Dans les deux cas, nous obtenons les résultats suivants :

Remplissage des groupes vides

Dans de nombreux cas, nous traitons des données clairsemées avec certains intervalles absents. Cela se traduit par des groupes vides. Prenons l’exemple suivant, dans lequel nous regroupons les données par intervalles d’une heure. Cela produira les statistiques suivantes, avec des valeurs manquantes pour certaines heures :
ClickHouse fournit le modificateur WITH FILL pour remédier à ce problème. Cela permet de remplir toutes les heures sans données avec des zéros, afin de mieux comprendre la distribution dans le temps :

Fenêtres temporelles glissantes

Parfois, nous ne voulons pas nous baser sur le début des intervalles (comme le début d’une journée ou d’une heure), mais sur des fenêtres temporelles. Supposons que nous voulions connaître le nombre total de hits pour une fenêtre, non pas par journée, mais sur une période de 24 heures décalée à partir de 18 h. Nous pouvons utiliser la fonction date_diff() pour calculer la différence entre une heure de référence et l’heure de chaque enregistrement. Dans ce cas, la colonne day représentera l’écart en jours (par exemple, il y a 1 jour, il y a 2 jours, etc.) :
Dernière modification le 2 juillet 2026