You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Kusto KQL筛选Azure Data Explorer中日期列最大值对应的数据

KQL筛选最新日期对应所有行的正确写法

你尝试的|where datecolumn == max(datecolumn)写法行不通,因为max()是聚合函数,where子句执行阶段还没完成聚合计算,没法直接引用聚合结果。下面给你几种实用的实现方式,适配你带extend的实际场景:

方法1:最简洁的top 1 with ties

这种写法最直观,直接取最新日期对应的所有行,支持在前面添加extend逻辑:

// 替换成你的表名
YourTable
// 这里插入你的extend操作,比如新增计算列
| extend AnimalInfo = strcat(Animals, " (", Color, ")")
// 将字符串日期转成datetime类型(示例中是dd-MM-yyyy格式),按日期降序取所有同最新日期的行
| top 1 with ties by todatetime(Datecolumn, 'dd-MM-yyyy') desc

针对你的示例数据,执行后会返回09-08-2023对应的2行数据。

方法2:子查询获取最大日期后过滤

先单独计算出最新日期,再用这个值过滤原表,适合需要复用最新日期值的场景:

let latest_date = YourTable | summarize max(todatetime(Datecolumn, 'dd-MM-yyyy'));
YourTable
| extend [你的extend逻辑]
| where todatetime(Datecolumn, 'dd-MM-yyyy') == latest_date

方法3:窗口函数rank()排名筛选

通过给日期排名,取排名为1的所有行(同日期的行排名相同):

YourTable
| extend [你的extend逻辑]
// 按日期降序排名,同日期的行rank值相同
| rank by todatetime(Datecolumn, 'dd-MM-yyyy') desc
// 筛选排名第一的行(即最新日期的所有行)
| where rank == 1

注意事项

如果你的Datecolumn是字符串类型,必须用todatetime(列名, '格式')转成datetime类型再比较,避免字符串排序导致的错误(比如01-09-2023字符串比31-08-2023小,但实际日期更大)。

内容的提问来源于stack exchange,提问作者nrod88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:03:11