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

Kusto查询:按ID获取对应最大时间戳的所有行数据

Kusto获取每个ID对应最新时间戳全量行的实现

核心思路

不要直接用arg_max做单步聚合,先按ID维度计算每个ID对应的全局最大时间戳,再回表过滤匹配所有时间戳等于该最大值的记录,即可保留同最新时间戳下所有业务列不同的行。

正确查询写法

source
// 第一步:计算每个ID对应的全局最大时间戳
| summarize LatestTimestamp = max(Timestamp) by ID
// 第二步:关联回原表
| join kind=inner (source) on ID
// 第三步:筛选出时间戳匹配最新值的所有行
| where Timestamp == LatestTimestamp
// 移除临时计算的辅助字段,保留原表全部业务列
| project-away LatestTimestamp

原有写法的问题说明

  • 写法1:source | summarize arg_max(Timestamp, *) by ID
    arg_max 函数的设计逻辑是返回每个分组下命中极值的单条记录,不会自动返回同极值的其他行,因此会丢失同一最新时间戳下业务列取值不同的记录。
  • 写法2:source | summarize arg_max(Timestamp, *) by ID, other_column
    该写法把分组粒度细化为「ID+其他业务列」的组合,计算得到的是每个组合维度下的最大时间戳,而非ID维度的全局最大时间戳,因此会返回大量不属于ID全局最新时间的历史数据。

性能优化提示

如果表数据量极大,且ID基数较高,可以在关联前对原表做必要的字段裁剪,只保留需要用到的业务列,减少join阶段的数据传输量。


内容的提问来源于stack exchange,提问作者M. Köppen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:18:21