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