TopOne (Azure 流分析)

返回排名靠前的记录,其中 rank 根据指定的排序定义事件在窗口中的排名位置。 排序/排名基于事件列,并可以在 ORDER BY 子句中指定。

语法

-- Aggregate Function Syntax
TopOne( [ <scalar_expression> ] ) OVER (ORDER BY (<column name> [ASC |DESC])+)  

-- Analytic Function Syntax
TopOne( [ <scalar_expression> ] ) OVER ([<PARTITION BY clause>] ORDER BY (<column name> [ASC |DESC])+ <LIMIT DURATION clause> [<WHEN clause>])  

参数

<scalar_expression>

TopOne 采用可选的标量表达式,用于指定顶部事件的投影。 如果没有 参数,则返回完整的事件记录。

<column_name>

指定将按其完成排序的输入事件中的列的名称。 请注意,仅允许按 bigint、float 和 datetime 类型排序。

OVER ([<PARTITION BY 子句><LIMIT DURATION 子句> [<WHEN 子句>]]

确定应用 TopOne 的行组。 PARTITION BY 子句指定具有相同分区键的行将组合在一起。 LIMIT DURATION 子句指定组中包含的历史记录量。 可选的 WHEN 子句指定要包含在组中的行的布尔条件。 有关用法的更多详细信息,请参阅 OVER 子句

返回类型

参数 <scalar_expression> 投影的值,如果未提供参数,则为记录值。

示例

SELECT   
    TopOne() OVER (ORDER BY value DESC) as topEvent  
FROM input  
GROUP BY Tumbling(second, 10)  
  
SELECT   
    TopOne(x * y) OVER (ORDER BY value DESC) as topEvent  
FROM input  
GROUP BY Tumbling(second, 10)