MAX(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