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 MINUTE

Les événements arrivant jusqu’à 1 minute après la fermeture sont encore acceptés.