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

如何在Kusto中遍历时间戳列表执行关联查询?

Kusto 查询实现方案

你可以使用Kusto的apply操作实现需求,它能对每条"Sample message"记录单独执行子查询,找到对应时间范围内最早的"Different message"日志。完整查询代码如下:

// 筛选过去1天内所有"Sample message"的记录
let sample_records = table1
| where Timestamp > ago(1d)
| where Message == "Sample message";

// 对每条样本记录,查找其10分钟窗口内最早的目标日志
sample_records
| extend SampleTimestamp = Timestamp  // 重命名样本时间戳,避免后续混淆
| apply (
    table1
    | where Timestamp between (SampleTimestamp .. SampleTimestamp + 10m)
    | where Message == "Different message"
    | arg_min(Timestamp, *)  // 取出时间最早的日志,*保留该日志的所有列
)
// 可选:整理输出列,按需保留字段
| project 
    样本时间戳 = SampleTimestamp,
    最早目标日志时间戳 = Timestamp,
    目标日志内容 = Message

关键逻辑说明

  • apply操作会遍历sample_records中的每一条记录,针对每条记录的SampleTimestamp执行子查询。
  • 子查询通过between限定时间范围:从样本时间戳开始,往后10分钟。
  • arg_min(Timestamp, *)确保只返回该时间范围内时间最早的"Different message"日志,*会保留这条日志的所有字段(比如Message、其他可能存在的列)。
  • 如果某个样本时间戳在10分钟内没有匹配的"Different message"日志,这条样本记录会被自动过滤掉;若需保留无匹配的记录,可以在apply的子查询末尾添加| union (datatable(Timestamp:datetime, Message:string)[datetime(null), ""]) | take 1来补充空结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:15:13