row_number()

返回序列化行集中当前行的索引。

默认情况下,第一行的行索引从 1 开始,每增加一行就增加 1。 可以选择让行索引从不同于 1 的值开始。 此外,可以根据提供的谓词重置行索引。

语法

row_number( [起始索引 [,重启]] )

详细了解语法约定

参数

客户 类型​​ 必需 说明
StartingIndex long 要从其开始(或重新开始)的行索引的值。 默认值为 1。
restart bool 表示何时将编号重新设置为 StartingIndex 值。 默认为 false

返回

函数将当前行的行索引作为 long 类型的值返回。

示例

以下示例返回一个包含两列的表,第一列 (a) 包含从 101 的数字,第二列 (rn) 包含从 110 的数字:

range a from 1 to 10 step 1
| sort by a desc
| extend rn=row_number()

下面的示例与上面的示例类似,只是第二列 (rn) 从 7 开始:

range a from 1 to 10 step 1
| sort by a desc
| extend rn=row_number(7)

最后一个示例展示了如何对数据进行分区,以及如何为每个分区的行编号。 此处,我们按 Airport 对数据进行分区:

datatable (Airport:string, Airline:string, Departures:long)
[
  "TLV", "LH", 1,
  "TLV", "LY", 100,
  "SEA", "LH", 1,
  "SEA", "BA", 2,
  "SEA", "LY", 0
]
| sort by Airport asc, Departures desc
| extend Rank=row_number(1, prev(Airport) != Airport)

运行此查询会生成以下结果:

Airport 航空公司 Departures 排名
SEA BA 2 1
SEA LH 1 2
SEA LY 0 3
TLV LY 100 1
TLV LH 1 2