Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Les événements de groupe Windows de session qui arrivent à des moments similaires, en filtrant les périodes de temps où il n’y a pas de données. La fonction de fenêtre de session a trois paramètres principaux : délai d’expiration, durée maximale et clé de partitionnement (facultatif).
Le diagramme suivant illustre un flux avec une série d’événements et la façon dont ils sont mappés dans les fenêtres de session de 5 minutes et la durée maximale de 10 minutes.
Une fenêtre de session commence lorsque le premier événement se produit. Si un autre événement se produit dans le délai d’expiration spécifié à partir du dernier événement réceptionné, alors la fenêtre s’étend pour inclure le nouvel événement. Dans le cas contraire, si aucun événement ne se produit dans le délai imparti, la fenêtre est fermée une fois le délai expiré.
Si des événements continuent à se produire durant le délai d’expiration spécifié, la fenêtre de session continuera à s’étendre jusqu'à ce que la durée maximale soit atteinte. Notez que les intervalles de vérification de durée maximale sont définis sur la même taille que la durée maximale spécifiée. Par exemple, si la durée maximale est de 10, les vérifications sur si la fenêtre dépasse la durée maximale se produisent à t = 0, 10, 20, 30, etc. Cela signifie que la durée réelle d’une fenêtre de session peut alors être jusqu’à deux fois maxDuration.
Ainsi, mathématiquement, notre fenêtre de session se termine si la condition suivante est satisfaite :
Lorsqu’une clé de partition est fournie, les événements sont regroupés par la clé et la fenêtre de session est appliquée indépendamment à chaque groupe. Cela est utile pour les cas où vous avez besoin de différentes fenêtres de session pour différents utilisateurs ou appareils.
Syntaxe
{SESSIONWINDOW | SESSION} (timeunit, timeoutSize, maxDurationSize) [OVER (PARTITION BY partitionKey)]
{SESSIONWINDOW | SESSION} (Timeout(timeunit , timeoutSize), MaxDuration(timeunit, maxDurationSize)) [OVER (PARTITION BY partitionKey)]
Remarque
La fenêtre session peut être utilisée de deux manières ci-dessus.
Les arguments
timeunit Unité de temps pour la fenêtre. Le tableau suivant répertorie tous les arguments d’unité de temps valides.
| Timeunit | Abréviations |
|---|---|
| jour | dd, d |
| heure | Hh |
| minute | mi, n |
| deuxième | ss, s |
| milliseconde | milliseconde |
| microseconde | Mcs |
timeoutsize
Entier volumineux qui décrit la taille d’écart de la fenêtre de session. Les données qui se produisent dans la taille d’écart sont regroupées dans la même fenêtre.
maxdurationsize
Si la taille totale de la fenêtre dépasse la valeur maxDurationSize spécifiée à un point de vérification, la fenêtre est fermée et une nouvelle fenêtre est ouverte au même point. Actuellement, la taille de l’intervalle de vérification est égale à maxDurationSize.
partitionkey
Paramètre facultatif qui spécifie la clé sur laquelle la fenêtre de session fonctionne. Si elle est spécifiée, la fenêtre regroupe uniquement les événements de la même clé.
Exemples
Supposons que vous disposez des données json suivantes :
[
// time: the timestamp when the user clicks on the link
// user_id: the id of the user
// url: the url the user clicked on
{
"time": "2017-01-26T00:00:00.0000000z",
"user_id": 0,
"url": "www.example.com/a.html"
},
{
"time": "2017-01-26T00:00:20.0000000z",
"user_id": 0,
"url": "www.example.com/b.html"
},
{
"time": "2017-01-26T00:00:55.0000000z",
"user_id": 1,
"url": "www.example.com/c.html"
},
// ...
]
Pour mesurer la durée de chaque session utilisateur, vous pouvez utiliser la requête suivante :
CREATE TABLE localinput(time DATETIME, user_id BIGINT, url NVARCHAR(MAX))
SELECT
user_id,
MIN(time) AS window_start,
System.Timestamp() AS window_end,
DATEDIFF(s, MIN(time), System.Timestamp()) AS duration_in_seconds
FROM localinput TIMESTAMP BY time
GROUP BY user_id, SessionWindow(minute, 2, 60) OVER (PARTITION BY user_id)
La requête précédente crée une fenêtre de session avec un délai d’expiration de 2 minutes, une durée maximale de 60 minutes et une clé de partitionnement de user_id. Cela signifie que les fenêtres de session indépendantes sont créées pour chaque user_id. Pour chaque fenêtre, cette requête génère une sortie qui contient le user_id, l’heure de début de la fenêtre (window_start), la fin de la fenêtre (window_end) et la durée totale de la session utilisateur (duration_in_seconds).