row_number()
返回序列化行集中当前行的索引。
默认情况下,第一行的行索引从 1
开始,每增加一行就增加 1
。
可以选择让行索引从不同于 1
的值开始。
此外,可以根据提供的谓词重置行索引。
语法
row_number(
[StartingIndex [,
Restart]] )
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
StartingIndex | long |
要从其开始(或重新开始)的行索引的值。 默认值为 1。 | |
restart | bool |
表示何时将编号重新设置为 StartingIndex 值。 默认为 false 。 |
返回
函数将当前行的行索引作为 long
类型的值返回。
示例
以下示例返回一个包含两列的表,第一列 (a
) 包含从 10
到 1
的数字,第二列 (rn
) 包含从 1
到 10
的数字:
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 |