OVER (Azure 串流分析)

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

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

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

目前,OVER 子句支援下列彙總函式:

  • SUM
  • 平均
  • 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

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

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

另請參閱

分析函式
彙總函式