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