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

如何用KQL实现环绕搜索:获取指定记录前后各5条数据

如何基于特定datetime列检索目标记录前后各5条完整日志?

你需要实现类似Linux中grep -B 5 -A 5 'failed login' var/log/auth.log的效果——找到匹配特定datetime条件的记录,同时返回这些记录前后各5条完整日志,但使用next()/prev()运算符只能获取单个列的值,无法拿到完整记录。

正确的KQL实现方案

核心思路是先给按datetime排序后的日志分配行号,定位目标记录的行号后,筛选出行号在目标行号±5范围内的所有完整记录:

// 1. 定位目标记录的行号
let target_rows = cluster("https://help.kusto.windows.net").database("Samples").StormEvents
| sort by StartTime asc  // 必须按datetime列排序,保证行号顺序与时间顺序一致
| serialize RowNumber = row_number()
| where StartTime == datetime(2007-12-13T09:02:00Z) and EndTime == datetime(2007-12-13T10:30:00Z)
| project RowNumber;

// 2. 筛选目标行前后各5条的完整记录
cluster("https://help.kusto.windows.net").database("Samples").StormEvents
| sort by StartTime asc
| serialize RowNumber = row_number()
// 处理边界:避免行号小于1或超过总行数
| let min_row = max(1, toscalar(target_rows) - 5);
| let max_row = min(toscalar(row_number()), toscalar(target_rows) + 5);
| where RowNumber between (min_row .. max_row)
| project-reorder RowNumber, *  // 行号前置,方便查看前后顺序

代码说明

  • sort by StartTime asc:必须先按datetime列排序,这是准确获取前后日志的核心前提,确保行号顺序与日志时间线一致
  • serialize RowNumber = row_number():给每条排序后的记录分配连续行号
  • target_rows:先查询出符合条件的目标记录的行号
  • min_row/max_row:处理边界情况,比如目标行是前5条时,最小行号取1;目标行是最后5条时,最大行号取总行数
  • where RowNumber between (min_row .. max_row):筛选出目标行前后各5条的所有完整记录

如果存在多个目标记录,只需调整行号范围的计算逻辑即可:

let target_rows = cluster("https://help.kusto.windows.net").database("Samples").StormEvents
| sort by StartTime asc
| serialize RowNumber = row_number()
| where StartTime between (datetime(2007-12-13) .. datetime(2007-12-14))  // 多目标条件
| project RowNumber;

cluster("https://help.kusto.windows.net").database("Samples").StormEvents
| sort by StartTime asc
| serialize RowNumber = row_number()
| let min_row = max(1, toscalar(min(target_rows)) - 5);
| let max_row = min(toscalar(max(row_number())), toscalar(max(target_rows)) + 5);
| where RowNumber between (min_row .. max_row)
| project-reorder RowNumber, *

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:15:34