共用方式為


row_window_session()

計算串行化數據列集中數據行的會話開始值。

語法

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

參數

姓名 類型​​ 必要 描述
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其中包含序列 標識符 數據行和 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