✅ Azure 流分析 ✅ 构造事件流
返回表达式中的最大值。
语法
-- Aggregate Function Syntax
MAX ( expression )
-- Analytic Function Syntax
MAX ( expression ) OVER ([<PARTITION BY clause>] <LIMIT DURATION clause> [<WHEN clause>])
论据
expression
是常量、列名或函数,以及算术运算符的任意组合。 不允许使用聚合函数和子查询。
MAX 可用于 Bit、Bigint、Datetime 和 Float 列。
MAX 还可用于具有以下行为的 NVARCHAR(MAX):
- 如果列未显式强制转换为 NVARCHAR(MAX),则 MAX 将尝试将其隐式转换为 FLOAT。 类型不匹配将导致错误。
- 如果使用 CAST 或 TRY_CAST显式将列强制转换为 NVARCHAR(MAX),则将返回最大字符串值。
OVER ([<PARTITION BY 子句><LIMIT DURATION 子句 [<WHEN 子>句>]]
确定应用 MAX 的行组。 PARTITION BY 子句指定将具有相同分区键的行组合在一起。 LIMIT DURATION 子句指定组中包含多少历史记录。 WHEN 子句指定要包含在组中的行的布尔条件。 有关用法的更多详细信息,请参阅 OVER 子句 。
返回类型
返回与表达式相同的值。
例子
使用聚合语法,我们将减少行数。 在这里,我们每小时选择每个收费站的最高票价:
SELECT
TollId,
System.Timestamp() AS WindowEnd,
MAX(Toll) AS MaxFare
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
TumblingWindow(hour,1)
使用分析语法,我们维护输入基数。 对于每辆经过通行费的车辆,我们将当前票价与过去一小时内的最大值进行比较:
SELECT
TollId,
System.Timestamp() AS PassageTime,
LicensePlate,
Toll AS Fare,
MAX (Toll) OVER (PARTITION BY VehicleClass LIMIT DURATION(hour,1)) AS MaximumFareOverLastHour
FROM Input TIMESTAMP BY EntryTime