Partager via


row_window_session()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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 :

  1. Itère sur la séquence d’entrée des valeurs Expr dans l’ordre.

  2. Pour chaque valeur, elle décide s’il faut créer une session.

  3. 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, datatableavec 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