Kusto查询:获取Azure Data Explorer表中每个ID对应的最新记录
你可以使用KQL内置的arg_max()聚合函数实现该需求,该函数可以按照指定字段分组后,返回每组内排序字段最大值对应的记录,语法简洁且在大数据量场景下性能表现优异。
具体查询语句如下:
// 样例表定义 let data = datatable(id:int, dateTime:datetime) [ 1,"2021-03-03", 1,"2021-03-04", 1,"2021-03-12", 2,"2021-03-04", 2,"2021-03-04", 2,"2021-03-07" ]; // 核心查询逻辑 data | summarize arg_max(dateTime, *) by id
参数含义说明:
arg_max(dateTime, *):指定取dateTime字段最大值对应的记录,*表示返回该记录的所有字段,如果你只需要返回id和dateTime两个字段,也可以替换为arg_max(dateTime, dateTime)by id:指定按照id字段分组,每个id单独计算最新时间对应的记录
查询返回结果如下,完全符合预期:
| id | dateTime |
|---|---|
| 1 | 2021-03-12 00:00:00.0000000 |
| 2 | 2021-03-07 00:00:00.0000000 |
如果你的表还包含其他业务字段,该写法也可以直接复用,不需要额外调整。如果是超大规模数据集,建议确认表的dateTime字段已设置为分区键或建有索引,可以进一步提升查询效率。
内容的提问来源于stack exchange,提问作者Shane Bishop
相关产品推荐
相关产品推荐

