Compartilhar via


row_window_session()

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Calcula os valores iniciais da sessão de uma coluna em um conjunto de linhas serializadas.

Sintaxe

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

Parâmetros

Nome Digitar Obrigatória Descrição
Expr datetime ✔️ Uma expressão cujos valores são agrupados em sessões. Quando Expr resulta em um valor nulo, o próximo valor inicia uma nova sessão.
MaxDistanceFromFirst timespan ✔️ Determina quando uma nova sessão começa usando a distância máxima entre o valor Expr atual e seu valor no início da sessão.
MaxDistanceBetweenNeighbors timespan ✔️ Outro critério para iniciar uma nova sessão usando a distância máxima de um valor de Expr para o próximo.
Reiniciar boolean Se especificado, cada valor avaliado como true reinicia imediatamente a sessão.

Saiba mais sobre as convenções de sintaxe.

Devoluções

A função retorna os valores no início de cada sessão. Ele usa o seguinte modelo de cálculo conceitual:

  1. Itera sobre a sequência de entrada de valores Expr em ordem.

  2. Para cada valor, ele decide se deseja criar uma nova sessão.

  3. Se uma nova sessão for criada, a função retornará o valor atual de Expr. Caso contrário, ele retornará o valor anterior de Expr.

Observação

O valor representa uma nova sessão se atender às seguintes condições usando a operação lógica OR:

  • Se não houver nenhum valor de sessão anterior ou se o valor da sessão anterior for nulo.
  • Se o valor de Expr for igual ou superior ao valor da sessão anterior mais MaxDistanceFromFirst.
  • Se o valor de Expr for igual ou superior ao valor anterior de Expr mais MaxDistanceBetweenNeighbors.
  • Se Restart a condição for especificada e avaliada como true.

Exemplos

O exemplo a seguir calcula os valores de início da sessão para uma tabela, datatable, com uma coluna ID de sequência e uma coluna Timestamp para registrar a hora de cada registro. Os dados são classificados pelas IDs de sequência e carimbos de data/hora e, em seguida, o exemplo retorna valores para ID, Timestamp e uma nova coluna SessionStarted. Uma sessão não pode exceder uma hora. Ele continua enquanto os registros tiverem menos de cinco minutos de intervalo e o ID permanecer o mesmo. O exemplo inclui registros com menos de cinco minutos de intervalo.

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

Saída

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