row_window_session()
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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:
Itera sobre a sequência de entrada de valores Expr em ordem.
Para cada valor, ele decide se deseja criar uma nova sessão.
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 comotrue
.
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 |