row_window_session()
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
serialize된 행 집합에 있는 열의 세션 시작 값을 계산합니다.
구문
row_window_session
(
Expr ,
MaxDistanceFromFirst ,
MaxDistanceBetweenNeighbors [,
Restart])
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
Expr | datetime |
✔️ | 세션에서 값이 함께 그룹화되는 식입니다. Expr에서 null 값을 생성하면 다음 값이 새 세션을 시작합니다. |
MaxDistanceFromFirst | timespan |
✔️ | 새 세션이 세션 시작 시 현재 Expr 값과 해당 값 사이의 최대 거리를 사용하여 시작하는 시기를 결정합니다. |
MaxDistanceBetweenNeighbors | timespan |
✔️ | Expr의 한 값에서 다음 값까지의 최대 거리를 사용하여 새 세션을 시작하는 또 다른 기준입니다. |
다시 시작 | boolean |
지정된 경우 평가되는 모든 값이 true 세션을 즉시 다시 시작합니다. |
구문 규칙에 대해 자세히 알아봅니다.
반품
함수는 각 세션의 시작 부분에 있는 값을 반환합니다. 다음과 같은 개념적 계산 모델을 사용합니다.
Expr 값의 입력 시퀀스를 순서대로 반복합니다.
각 값에 대해 새 세션을 만들지 여부를 결정합니다.
새 세션이 만들어지면 함수는 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 |