row_window_session()
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Calcula los valores de inicio de sesión de una columna en un conjunto de filas serializado.
Sintaxis
row_window_session
(
Expr ,
MaxDistanceFromFirst ,
MaxDistanceBetweenNeighbors [,
Restart])
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
Expr | datetime |
✔️ | Expresión cuyos valores se agrupan en sesiones. Cuando Expr da como resultado un valor NULL, el siguiente valor inicia una nueva sesión. |
MaxDistanceFromFirst | timespan |
✔️ | Determina cuándo una nueva sesión comienza a usar la distancia máxima entre el valor expr actual y su valor al principio de la sesión. |
MaxDistanceBetweenNeighbors | timespan |
✔️ | Otro criterio para iniciar una nueva sesión utilizando la distancia máxima de un valor de Expr a la siguiente. |
Restart (Reiniciar) | boolean |
Si se especifica, cada valor que se evalúa como true reinicia inmediatamente la sesión. |
Obtenga más información sobre las convenciones de sintaxis.
Devoluciones
La función devuelve los valores al principio de cada sesión. Usa el siguiente modelo de cálculo conceptual:
Recorre en iteración la secuencia de entrada de valores expr en orden.
Para cada valor, decide si se va a crear una nueva sesión.
Si se crea una nueva sesión, la función devuelve el valor actual de Expr. De lo contrario, devuelve el valor anterior de Expr.
Nota:
El valor representa una nueva sesión si cumple las condiciones siguientes mediante la operación OR lógica:
- Si no había ningún valor de sesión anterior o el valor de sesión anterior era NULL.
- Si el valor de Expr es igual o supera el valor de sesión anterior más MaxDistanceFromFirst.
- Si el valor de Expr es igual o supera el valor anterior de Expr más MaxDistanceBetweenNeighbors.
- Si
Restart
se especifica la condición y se evalúa comotrue
.
Ejemplos
En el ejemplo siguiente se calculan los valores de inicio de sesión de una tabla, datatable
, con una columna id. de secuencia y una columna Timestamp para registrar la hora de cada registro. Los datos se ordenan por los identificadores de secuencia y las marcas de tiempo y, a continuación, el ejemplo devuelve valores para ID, Timestamp y una nueva columna SessionStarted. Una sesión no puede superar una hora. Continúa mientras los registros tengan menos de cinco minutos de diferencia y el identificador permanece igual. En el ejemplo se incluyen registros que están separados por menos de cinco minutos.
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))
Salida
ID | Marca de tiempo | 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 |