Over (Azure 流分析)

对于每一行,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

如果资源在过去一小时内运行不正常,则引发警报:

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

另请参阅

分析函数
聚合函数