✅ Azure Stream Analytics ✅ Fabric Eventstream
行ごとに、OVER 句によって、関連付けられた集計関数または分析関数が適用される前の行のグループ化が決定されます。
OVER 句は、スカラー関数が許可されている任意の場所で使用できます。 たとえば、SELECT、WHERE、JOIN、または GROUP BY 句で OVER 句を使用できます。
OVER 句は、クエリ入力から直接行をグループ化します。 WHERE 句の述語、JOIN 句の結合条件、または GROUP BY 句のグループ化条件の影響を受けません。
現在、OVER 句では次の集計関数がサポートされています。
- 合計
- 平均
- ミン
- マックス
構文
OVER ([<PARTITION BY clause>] <LIMIT DURATION clause> [<WHEN clause>])
<PARTITION BY clause> ::== PARTITION BY partition_key, ... [n]
<LIMIT DURATION clause> ::== LIMIT DURATION (unit, length)
<WHEN clause> ::== WHEN boolean_expression
論争
<PARTITION BY 句>
集計関数または分析関数に対して、同じ <partition_key> を持つ行のみを考慮することを指定します。
<LIMIT DURATION 句>
現在の行の履歴をグループに含める量を指定します。 サポートされているユニットとその省略形の詳細については、 DATEDIFF を参照してください。
<WHEN 句>
グループに含める行のブール条件を指定します。
全般的な解説
ウィンドウ関数の結果セットに OVER を使用して集計関数または分析 関数を 適用すると、予期しない結果が発生する可能性があります。 ウィンドウ関数は、すべてのウィンドウ操作がウィンドウの最後にイベントを出力する際に、イベントのタイムスタンプを変更します。 イベントの現在のタイムスタンプには system.timestamp()を使用してアクセスできます。ウィンドウ操作の後、元のイベント時刻属性とは異なります。
例示
センサーごとに、過去 5 分間の平均温度を計算します。
SELECT AVG(temperature) OVER (PARTITION BY id LIMIT DURATION (minute, 5))
FROM input
過去 1 時間にリソースが異常な場合にアラートをスローします。
SELECT 1 AS alert
FROM input
WHERE MAX(healthy) OVER (PARTITION BY id LIMIT DURATION (hour, 1)) = 0