如何编写等效于Row_Rank()的Kusto语句?附Spark示例
Kusto等效实现方案
等效Kusto语句
// 模拟Spark中的输入数据集 datatable(Airport:string, Airline:string, Departures:int, Expected:int) [ 'SEA', 'LH', 3, 2, 'SEA', 'LY', 100, 3, 'SEA', 'UA', 3, 2, 'SEA', 'BA', 2, 1, 'SEA', 'EL', 3, 2, ] // 按Departures分区并生成连续序号 | extend row_number = row_number() over (partition by Departures order by Airline asc) // 按Departures升序、序号升序排序,匹配预期输出的展示顺序 | sort by Departures asc, row_number asc
逻辑说明
- 数据构造:用
datatable复刻Spark中createDataFrame创建的测试数据。 - 窗口逻辑映射:
- Spark的
Window.partitionBy("Departures")对应Kusto的partition by Departures,实现按Departures字段分组。 - 原Spark代码中,同分区内的Departures值完全相同,
dense_rank()实际生成连续唯一序号(与row_number()效果一致),因此Kusto直接使用row_number()即可匹配预期输出的row_number列。 - 新增
order by Airline asc是为了让同分区内的序号生成有固定规则(避免Kusto默认的无规则排序),如果需要完全匹配Spark输出的序号顺序,可根据实际需求调整排序字段。
- Spark的
- 结果排序:通过
sort by确保最终输出的行顺序与预期一致。
内容的提问来源于stack exchange,提问作者John Stud
相关产品推荐
相关产品推荐

