Comprendre les fonctions de fenêtre
L’objectif courant du traitement de flux est d’agréger des événements en intervalles temporels ou en fenêtres. Par exemple, pour compter le nombre de publications de médias sociaux par minute ou pour calculer la pluviosité moyenne par heure.
Azure Stream Analytics inclut la prise en charge native de cinq types de fonctions de fenêtrage temporelle. Ces fonctions vous permettent de définir des intervalles temporels dans lesquels les données sont agrégées dans une requête. Les fonctions de fenêtrage prises en charge sont Tumbling (Bascule), Hopping (Récurrente), Sliding (Glissante), Session et Snapshot (Instantané).
Bascule
Les fonctions de fenêtrage de type Bascule segmentent un flux de données en une série contiguë de segments de temps à taille fixe et sans chevauchement et exécutent des opérations dessus. Les événements ne peuvent pas appartenir à plus d’une fenêtre bascule.
L’exemple de fenêtre bascule, représenté par la requête ci-dessous, recherche la valeur de lecture maximale dans chaque fenêtre d’une minute. Les fonctions de fenêtrage sont appliquées dans les travaux Stream Analytics à l’aide de la clause GROUP BY de la syntaxe de requête. La GROUP BY clause de la requête suivante contient la TumblingWindow() fonction, qui spécifie une taille de fenêtre d’une minute.
SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY TumblingWindow(minute, 1)
Récurrente
Les fonctions de fenêtre récurrente représentent les fenêtres qui se chevauchent planifiées, avançant dans le temps selon une période fixe. Il est plus facile de les considérer comme des fenêtres bascule qui peuvent se chevaucher et être émises plus souvent que la taille de la fenêtre. En fait, les fenêtres bascule sont simplement des fenêtres récurrentes dont la valeur hop est égale à celle de size. Lorsque vous utilisez des fenêtres glissantes, les événements peuvent appartenir à plusieurs ensembles de résultats de fenêtre.
Pour créer une fenêtre de saut, vous devez spécifier trois paramètres. Le premier paramètre indique l’unité de temps, telle que la seconde, la minute ou l’heure. Le paramètre suivant définit la taille de la fenêtre, qui désigne la durée de vie de chaque fenêtre. Le dernier paramètre obligatoire est la taille de saut, qui spécifie l’avancée dans le temps de chaque fenêtre par rapport à la précédente. Un quatrième paramètre facultatif indiquant la taille de décalage peut également être utilisé.
La requête suivante illustre l’utilisation d’un HoppingWindow() où la timeunit est défini à second. La windowsize valeur est de 60 secondes et la hopsize valeur est de 30 secondes. Cette requête génère un événement toutes les 30 secondes contenant la valeur de lecture maximale qui s’est produite au cours des 60 dernières secondes.
SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY HoppingWindow(second, 60, 30)
Coulissante
Les fenêtres glissantes génèrent des événements pour des points dans le temps où le contenu de la fenêtre change réellement. Ce modèle de fonction limite le nombre de fenêtres à prendre en compte. Azure Stream Analytics génère des événements uniquement pour ces points dans le temps lorsqu’un événement est entré ou a quitté la fenêtre. Par conséquent, chaque fenêtre contient un minimum d’un événement. Les événements dans les fenêtres glissantes peuvent appartenir à plusieurs fenêtres glissantes, comme les fenêtres bondissantes.
La requête suivante utilise la SlidingWindow() fonction pour rechercher la valeur de lecture maximale dans chaque fenêtre d’une minute dans laquelle un événement s’est produit.
SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SlidingWindow(minute, 1)
session
Les fonctions de fenêtre de session regroupent des événements qui arrivent à des moments similaires, en filtrant les périodes de temps où il n’y a pas de données. Il a trois paramètres principaux : délai d’expiration, durée maximale et clé de partitionnement (facultatif).
L’occurrence du premier événement démarre une fenêtre de session. Supposons qu’un autre événement se produit dans le délai d’expiration spécifié à partir du dernier événement ingéré. Dans ce cas, la fenêtre sera étendue pour incorporer le nouvel événement. Toutefois, si aucun autre événement ne se produit dans la période d’expiration spécifiée, la fenêtre est fermée au moment du délai d’expiration. Si les événements continuent de se produire dans le délai d’expiration spécifié, la fenêtre de session s’étend jusqu’à ce que la durée maximale soit atteinte.
La requête suivante mesure la longueur des sessions utilisateur en créant un SessionWindow sur les données de flux de clics avec un timeoutsize de 20 secondes et un maximumdurationsize de 60 secondes.
SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SessionWindow(second, 20, 60)
Instantané
Les fenêtres d’instantané regroupent les événements par valeurs d’horodatage identiques. Contrairement à d’autres types de fenêtrage, une fonction de fenêtre spécifique n’est pas nécessaire. Vous pouvez utiliser une fenêtre d'instantané en spécifiant la fonction System.Timestamp() dans la clause GROUP BY de votre requête.
Par exemple, la requête suivante recherche la valeur de lecture maximale pour les événements qui se produisent exactement en même temps.
SELECT System.TimeStamp() AS WindowTime,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY System.Timestamp()
System.Timestamp() est considéré dans la GROUP BY clause comme une définition de fenêtre d’instantané, car elle regroupe les événements dans une fenêtre en fonction de l’égalité des horodatages.