row_window_session()
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
計算串行化數據列集中數據行的會話開始值。
語法
row_window_session
(
Expr ,
MaxDistanceFromFirst ,
MaxDistanceBetweenNeighbors [,
Restart])
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
Expr | datetime |
✔️ | 表達式,其值會在會話中群組在一起。 當 Expr 產生 Null 值時,下一個值會啟動新的工作階段。 |
MaxDistanceFromFirst | timespan |
✔️ | 判斷新會話何時開始使用目前 Expr 值與會話開頭的值之間的最大距離。 |
MaxDistanceBetweenNeighbors | timespan |
✔️ | 使用Expr到下一個值的最大距離,啟動新工作階段的另一個準則。 |
重新啟動 | boolean |
如果指定,評估為 true 的每個值都會立即重新啟動會話。 |
深入瞭解 語法慣例。
傳回
函式會在每個會話的開頭傳回值。 它會使用下列概念性計算模型:
依序逐一查看 Expr 值的輸入順序。
針對每個值,它會決定是否要建立新的工作階段。
如果已建立新的會話,函式會傳回Expr的目前值。 否則,它會傳回先前的 Expr值。
注意
如果值符合下列條件,請使用邏輯 OR 作業來表示新的工作階段:
- 如果沒有先前的會話值,或先前的會話值為 Null。
- 如果 Expr 的值等於或超過先前的會話值加上 MaxDistanceFromFirst。
- 如果 Expr 的值等於或超過先前的 Expr 值加上 MaxDistanceBetweenNeighbors。
- 如果
Restart
已指定條件,並評估為true
。
範例
下列範例會計算數據表的會話開始值, datatable
其中包含序列 標識符 數據行和 Timestamp 資料行,以記錄每個記錄的時間。 資料會依順序標識碼和時間戳排序,然後範例會傳回 ID、時間戳和新的 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))
輸出
識別碼 | 時間戳記 | 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 |