共用方式為


結束 (assuming "OVER" means complete or finished)

✅ Azure 串流分析 ✅ 網狀架構事件串流

對於每個數據列,OVER 子句會決定套用相關聯匯總或分析函式之前的數據列群組。

您可以在允許純量函式的任何位置使用 OVER 子句。 例如,您可以在 SELECT、WHERE、JOIN 或 GROUP BY 子句中使用 OVER 子句。

OVER 子句會直接從查詢輸入將數據列分組。 它不受 WHERE 子句中的述詞、JOIN 子句中的聯結條件,或 GROUP BY 子句中的群組條件所影響。

目前,OVER 子句支援下列聚合函數:

  • 總和
  • AVG
  • 最小值
  • 麥克斯

語法

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

如果資源在過去一小時內狀況不良,請擲回警示:

SELECT 1 AS alert
FROM input
WHERE MAX(healthy) OVER (PARTITION BY id LIMIT DURATION (hour, 1)) = 0

另請參閱

分析函式
彙總函式