다음을 통해 공유


row_window_session()

적용 대상: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

serialize된 행 집합에 있는 열의 세션 시작 값을 계산합니다.

구문

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

매개 변수

이름 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이전 값과 같거나 초과하는 경우
  • 조건을 지정하고 .로 계산하는 true경우 Restart

예제

다음 예제에서는 시퀀스 ID 열과 타임스탬프 열을 사용하여 각 레코드의 시간을 기록하는 테이블datatable의 세션 시작 값을 계산합니다. 데이터는 시퀀스 ID 및 타임스탬프를 기준으로 정렬된 다음, ID, 타임스탬프 및 새 SessionStarted 열의 값을 반환합니다. 세션은 1시간을 초과할 수 없습니다. 레코드가 5분 미만 떨어져 있고 ID가 동일하게 유지되는 한 계속됩니다. 이 예제에는 5분 미만의 레코드가 포함됩니다.

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