OVER (Azure Stream Analytics)
行ごとに、OVER 句によって、関連付けられた集計関数または分析関数が適用される前に行のグループ化が決定されます。
OVER 句は、スカラー関数が許可されている任意の場所で使用できます。 たとえば、SELECT 句、WHERE 句、JOIN 句、または GROUP BY 句で OVER 句を使用できます。
OVER 句は、クエリ入力から直接行をグループ化します。 WHERE 句の述語、JOIN 句の結合条件、または GROUP BY 句のグループ化条件の影響を受けません。
現在、OVER 句では、次の集計関数がサポートされています。
- [SUM]
- AVG
- MIN
- MAX
構文
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