次の方法で共有


row_window_session()

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

された行セット内の列のセッション開始値を計算

構文

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

パラメーター

件名 タイプ Required 説明
Expr datetime ✔️ セッションで値がグループ化された式。 Expr の結果が null 値になると、次の値によって新しいセッションが開始されます。
MaxDistanceFromFirst timespan ✔️ 現在の Expr 値とセッションの開始時の値との間の最大距離を使用して、新しいセッションを開始するタイミングを決定します。
MaxDistanceBetweenNeighbors timespan ✔️ Exprの値から次の値までの最大距離を使用して新しいセッションを開始するための別の基準。
Restart boolean 指定した場合、 true に評価されるすべての値がすぐにセッションを再開します。

構文規則について詳しく知る。

返品

関数は、各セッションの開始時に値を返します。 次の概念計算モデルを使用します。

  1. Expr 値の入力シーケンスを順番に反復処理します。

  2. 値ごとに、新しいセッションを作成するかどうかを決定します。

  3. 新しいセッションが作成されると、関数は Expr の現在の値を返します。 それ以外の場合は、 Expr の前の値を返します。

Note

論理 OR 操作を使用して次の条件を満たす場合、値は新しいセッションを表します。

  • 以前のセッション値がない場合、または前のセッション値が null の場合。
  • Expr の値が前のセッション値に MaxDistanceFromFirst 以上である場合。
  • Expr の値が前の Expr の値に加えて、MaxDistanceBetweenNeighbors を超えています。
  • Restart 条件が指定され、true に評価される場合。

次の例では、シーケンス ID 列と Timestamp 列を使用して、テーブルdatatableのセッション開始値を計算して、各レコードの時刻を記録します。 データはシーケンス ID とタイムスタンプで並べ替えられた後、 ID、Timestamp、および新しい 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 タイムスタンプ 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