Поделиться через


row_window_session()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Вычисляет начальные значения сеанса столбца в сериализованном наборе строк.

Синтаксис

row_window_session( Expr , MaxDistanceFromFirst , MaxDistanceBetweenNeighbors [, Перезапуск])

Параметры

Имя (название) Type Обязательно Описание
Expr datetime ✔️ Выражение, значения которого группируются в сеансах. Если expr приводит к значению NULL, следующее значение запускает новый сеанс.
MaxDistanceFromFirst timespan ✔️ Определяет, когда новый сеанс начинает использовать максимальное расстояние между текущим значением Expr и его значением в начале сеанса.
MaxDistanceBetweenNeighbors timespan ✔️ Другой критерий запуска нового сеанса с максимальным расстоянием от одного значения Expr к следующему.
Перезапуск boolean Если задано, каждое значение, которое оценивается true немедленно перезапускает сеанс.

Дополнительные сведения о соглашениях синтаксиса.

Возвраты

Функция возвращает значения в начале каждого сеанса. В нем используется следующая концептуальная модель вычисления:

  1. Выполняет итерацию по входной последовательности значений Expr в порядке.

  2. Для каждого значения он решает, следует ли создать новый сеанс.

  3. Если создается новый сеанс, функция возвращает текущее значение Expr. В противном случае возвращается предыдущее значение Expr.

Примечание.

Значение представляет новый сеанс, если он соответствует следующим условиям с помощью логической операции OR:

  • Если не было предыдущего значения сеанса, или значение предыдущего сеанса было null.
  • Если значение Expr равно или превышает предыдущее значение сеанса плюс MaxDistanceFromFirst.
  • Если значение Expr равно или превышает предыдущее значение Expr плюс MaxDistanceBetweenNeighbors.
  • Если Restart условие задано и оценивается true.

Примеры

В следующем примере вычисляются значения начала сеанса для таблицы, datatableс столбцом идентификатора последовательности и столбцом метки времени для записи времени каждой записи. Данные сортируются по идентификаторам последовательности и меткам времени, а затем пример возвращает значения для идентификатора, метки времени и нового столбца SessionStarted . Сеанс не может превышать один час. Он продолжается до тех пор, пока записи находятся менее чем за пять минут, и идентификатор остается неизменным. В этом примере содержатся записи, которые находятся менее чем за пять минут.

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

Выходные данные

ID Метка времени 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