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