Principe
Les fenêtres temporelles regroupent les événements par plages de temps.
Essentielles pour les agrégations sur streams infinis.
Trois types principaux : Tumbling, Hopping, Session.
Tumbling windows
Fenêtres de taille fixe sans chevauchement.
[----5m----][----5m----][----5m----]
Syntaxe :
WINDOW TUMBLING (SIZE 5 MINUTES)Exemple : température moyenne par ville toutes les 5 minutes :
SELECT
ville,
AVG(temperature) AS avg_temp
FROM iot_stream_data
WINDOW TUMBLING (SIZE 5 MINUTES)
GROUP BY ville
EMIT CHANGES;Cas d’usage : rapports périodiques, métriques par intervalles réguliers.
Hopping windows
Fenêtres de taille fixe avec chevauchement.
[----5m----]
[----5m----]
[----5m----]
Syntaxe :
WINDOW HOPPING (SIZE 5 MINUTES, ADVANCE BY 1 MINUTE)SIZE : durée de la fenêtre.
ADVANCE BY : décalage entre deux fenêtres.
Exemple : moyenne mobile sur 5 minutes, mise à jour chaque minute :
SELECT
ville,
AVG(temperature) AS avg_temp
FROM iot_stream_data
WINDOW HOPPING (SIZE 5 MINUTES, ADVANCE BY 1 MINUTE)
GROUP BY ville
EMIT CHANGES;Cas d’usage : moyennes mobiles, détection de tendances.
Session windows
Fenêtres dynamiques basées sur l’activité.
Se ferment après un gap d’inactivité.
[--activity--][gap][--activity--]
Syntaxe :
WINDOW SESSION (2 MINUTES)Exemple : sessions de mesures par ville (gap de 2 minutes) :
SELECT
ville,
COUNT(*) AS nb_mesures,
MIN(temperature) AS temp_min,
MAX(temperature) AS temp_max
FROM iot_stream_data
WINDOW SESSION (2 MINUTES)
GROUP BY ville
EMIT CHANGES;Si aucune mesure pendant 2 minutes, la session se termine.
Cas d’usage : sessions utilisateur, détection d’activité continue.
Tableau comparatif
Type Chevauchement Use Case
Tumbling Non Moyennes périodiques
Hopping Oui Moyennes mobiles
Session Dynamique Sessions d'activité
GRACE PERIOD
Permet d’accepter des événements en retard après la fermeture de fenêtre :
WINDOW TUMBLING (SIZE 5 MINUTES)
GRACE PERIOD 1 MINUTELes événements arrivant jusqu’à 1 minute après la fermeture sont encore acceptés.