Condividi tramite


row_window_session()

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

Calcola i valori di inizio della sessione di una colonna in un set di righe serializzato.

Sintassi

row_window_session( Expr , MaxDistanceFromFirst , MaxDistanceBetweenNeighbors [, Restart])

Parametri

Nome Digita Obbligatorio Descrizione
Expr datetime ✔️ Espressione i cui valori vengono raggruppati in sessioni. Quando Expr restituisce un valore Null, il valore successivo avvia una nuova sessione.
MaxDistanceFromFirst timespan ✔️ Determina quando una nuova sessione inizia usando la distanza massima tra il valore expr corrente e il relativo valore all'inizio della sessione.
MaxDistanceBetweenNeighbors timespan ✔️ Un altro criterio per avviare una nuova sessione usando la distanza massima da un valore di Expr a quello successivo.
Riavviare boolean Se specificato, ogni valore che restituisce true riavvia immediatamente la sessione.

Altre informazioni sulle convenzioni di sintassi.

Valori restituiti

La funzione restituisce i valori all'inizio di ogni sessione. Usa il modello di calcolo concettuale seguente:

  1. Scorre in ordine la sequenza di input dei valori Expr .

  2. Per ogni valore, decide se creare una nuova sessione.

  3. Se viene creata una nuova sessione, la funzione restituisce il valore corrente di Expr. In caso contrario, restituisce il valore precedente di Expr.

Nota

Il valore rappresenta una nuova sessione se soddisfa le condizioni seguenti usando l'operazione OR logica:

  • Se non è presente alcun valore di sessione precedente o il valore della sessione precedente era Null.
  • Se il valore di Expr è uguale o supera il valore della sessione precedente più MaxDistanceFromFirst.
  • Se il valore di Expr è uguale o supera il valore precedente di Expr più MaxDistanceBetweenNeighbors.
  • Se Restart la condizione viene specificata e restituisce true.

Esempi

Nell'esempio seguente vengono calcolati i valori di inizio della sessione per una tabella, datatable, con una colonna ID sequenza e una colonna Timestamp per registrare l'ora di ogni record. I dati vengono ordinati in base agli ID sequenza e ai timestamp e quindi l'esempio restituisce i valori per ID, Timestamp e una nuova colonna SessionStarted. Una sessione non può superare un'ora. Continua fino a quando i record sono inferiori a cinque minuti di distanza e l'ID rimane invariato. L'esempio include record inferiori a cinque minuti di distanza.

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))

Output

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