Compartir a través de


row_window_session()

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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:

  1. Recorre en iteración la secuencia de entrada de valores expr en orden.

  2. Para cada valor, decide si se va a crear una nueva sesión.

  3. 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 como true.

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