求助:基于日期与Customer Id的Kusto数据排名查询
Kusto查询实现客户订单编号递增需求
可以使用Kusto的row_number()窗口函数实现该需求,该函数支持按指定字段分组并在组内排序后生成连续序号。
完整查询语句
datatable(OrderDate:datetime, CustomerId:string) [ datetime(2022-09-22), "CD-2123", datetime(2022-08-20), "CD-2123", datetime(2021-09-21), "CD-2123", datetime(2022-10-14), "ZE-8494", datetime(2022-09-23), "ZE-8494", datetime(2022-08-22), "ZE-8494", datetime(2022-10-13), "ME-8494", datetime(2022-05-23), "ME-8494" ] | partition by CustomerId (order by OrderDate desc | extend latestCustOrdId = row_number()) | order by CustomerId, latestCustOrdId
核心逻辑说明
partition by CustomerId:按客户ID分组,保证序号在每个客户的订单组内独立生成order by OrderDate desc:在每个客户组内,将订单按日期从新到旧排序row_number():在排序后的组内生成从1开始的递增序号,最新订单对应序号1- 外层
order by CustomerId, latestCustOrdId:让最终结果和预期的展示顺序一致
查询结果
| OrderDate | CustomerId | latestCustOrdId |
|---|---|---|
| 2022-09-22 00:00:00.000 | CD-2123 | 1 |
| 2022-08-20 00:00:00.000 | CD-2123 | 2 |
| 2021-09-21 00:00:00.000 | CD-2123 | 3 |
| 2022-10-13 00:00:00.000 | ME-8494 | 1 |
| 2022-05-23 00:00:00.000 | ME-8494 | 2 |
| 2022-10-14 00:00:00.000 | ZE-8494 | 1 |
| 2022-09-23 00:00:00.000 | ZE-8494 | 2 |
| 2022-08-22 00:00:00.000 | ZE-8494 | 3 |
内容的提问来源于stack exchange,提问作者Gurinder Singh
相关产品推荐
相关产品推荐

