row_window_session()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft 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:
Scorre in ordine la sequenza di input dei valori Expr .
Per ogni valore, decide se creare una nuova sessione.
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 restituiscetrue
.
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 |