✅ Azure 流分析 ✅ 构造事件流
返回排名记录的数组,其中排名根据指定的排序定义事件在窗口中的排名位置。 排序/排名基于事件列,可以在 ORDER BY 子句中指定。
语法
-- Aggregate Function Syntax
CollectTop(<number of events as integer literal> [ , <scalar_expression> ]) OVER (ORDER BY (<column name> [ASC |DESC])+)
-- Analytic Function Syntax
CollectTop(<number of events as integer literal> [ , <scalar_expression> ]) OVER ([<PARTITION BY clause>] ORDER BY (<column name> [ASC | DESC])+ <LIMIT DURATION clause> [<WHEN clause>])
论据
<整数文本形式的事件数>
用户希望从窗口中收集的顶级事件数。
<scalar_expression>
CollectTop 采用可选的标量表达式,用于指定对收集的事件的投影。 如果没有参数,将收集完整的事件记录。
<列名称>
输入事件中列的名称,通过该列进行排序。 仅允许按 bigint/float/datetime 类型排序。
OVER ([<PARTITION BY 子句><LIMIT DURATION 子句 [<WHEN 子>句>]]
确定应用 CollectTop 的行组。 PARTITION BY 子句指定将具有相同分区键的行组合在一起。 LIMIT DURATION 子句指定组中包含多少历史记录。 WHEN 子句指定要包含在组中的行的布尔条件。 有关用法的更多详细信息,请参阅 OVER 子句 。
返回类型
{ “rank”类型的记录数组:bigint、“value”: <projected_type> },其中 <projected_type> 是指定表达式的类型 <scalar_expression> 或记录。
注解
Null 被视为最小值,有关详细信息,请查看 https://msdn.microsoft.com/library/ms188385.aspx
例子
SELECT
value1,
CollectTop(2) OVER (ORDER BY value2 ASC, value3 DESC) as top1
FROM testinput timestamp by time
GROUP BY TumblingWindow(second, 5), value1
输入示例:
示例输出:
SELECT
value1,
CollectTop(2, x + y) OVER (ORDER BY value2 ASC, value3 DESC) as top1
FROM testinput timestamp by time
GROUP BY TumblingWindow(second, 5), value1