row_window_session()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Calcule les valeurs de début de session d’une colonne dans un jeu de lignes sérialisé.
Syntaxe
row_window_session
(
Expr ,
MaxDistanceFromFirst ,
MaxDistanceBetweenNeighbors [,
Restart])
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
Expr | datetime |
✔️ | Expression dont les valeurs sont regroupées dans les sessions. Lorsque Expr génère une valeur Null, la valeur suivante démarre une nouvelle session. |
MaxDistanceFromFirst | timespan |
✔️ | Détermine quand une nouvelle session commence à utiliser la distance maximale entre la valeur Expr actuelle et sa valeur au début de la session. |
MaxDistanceBetweenNeighbors | timespan |
✔️ | Un autre critère pour démarrer une nouvelle session à l’aide de la distance maximale entre une valeur Expr et la suivante. |
Restart | boolean |
Si elle est spécifiée, chaque valeur qui prend la valeur pour true redémarrer immédiatement la session. |
En savoir plus sur les conventions de syntaxe.
Retours
La fonction retourne les valeurs au début de chaque session. Il utilise le modèle de calcul conceptuel suivant :
Itère sur la séquence d’entrée des valeurs Expr dans l’ordre.
Pour chaque valeur, elle décide s’il faut créer une session.
Si une nouvelle session est créée, la fonction retourne la valeur actuelle d’Expr. Sinon, elle retourne la valeur précédente d’Expr.
Remarque
La valeur représente une nouvelle session si elle répond aux conditions suivantes à l’aide de l’opération OR logique :
- S’il n’y avait pas de valeur de session précédente, ou si la valeur de session précédente était null.
- Si la valeur d’Expr est égale ou dépasse la valeur de session précédente plus MaxDistanceFromFirst.
- Si la valeur d’Expr est égale ou dépasse la valeur précédente d’Expr plus MaxDistanceBetweenNeighbors.
- Si
Restart
la condition est spécifiée et est évaluée àtrue
.
Exemples
L’exemple suivant calcule les valeurs de début de session d’une table, datatable
avec une colonne ID de séquence et une colonne Timestamp pour enregistrer l’heure de chaque enregistrement. Les données sont triées par les ID de séquence et les horodatages, puis l’exemple retourne des valeurs pour l’ID, l’horodatage et une nouvelle colonne SessionStarted. Une session ne peut pas dépasser une heure. Il se poursuit tant que les enregistrements sont inférieurs à cinq minutes et que l’ID reste le même. L’exemple inclut des enregistrements qui sont séparés de moins de cinq minutes.
datatable (ID:string, Timestamp:datetime) [
"1", datetime(2024-04-11 10:00:00),
"2", datetime(2024-04-11 10:18:00),
"1", datetime(2024-04-11 11:00:00),
"3", datetime(2024-04-11 11:30:00),
"2", datetime(2024-04-11 13:30:00),
"2", datetime(2024-04-11 10:16:00)
]
| sort by ID asc, Timestamp asc
| extend SessionStarted = row_window_session(Timestamp, 1h, 5m, ID != prev(ID))
Sortie
id | Timestamp | SessionStarted |
---|---|---|
1 | 2024-04-11T10:00:00Z | 2024-04-11T10:00:00Z |
1 | 2024-04-11T11:00:00Z | 2024-04-11T11:00:00Z |
2 | 2024-04-11T10:16:00Z | 2024-04-11T10:16:00Z |
2 | 2024-04-11T10:18:00Z | 2024-04-11T10:16:00Z |
2 | 2024-04-11T13:30:00Z | 2024-04-11T13:30:00Z |
3 | 2024-04-11T11:30:00Z | 2024-04-11T11:30:00Z |