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

使用Kusto查询计算含operationID的操作间时间差

Kusto实现同操作ID首尾时间差(秒级)计算

需求说明

从日志表的name字段提取开头的GUID作为操作ID,按ID分组计算该ID关联的所有日志记录中最早时间和最晚时间的差值,单位为秒,匹配如下样例输入输出规则:

  • 样例输入表结构:包含timestamp [IST]时间字段、name操作字段(ID+操作描述拼接格式)
  • 预期输出:操作ID、对应时间差(秒)

可直接使用的Kusto查询语句

// 实际使用时请将YourLogTable替换为你的真实表名
YourLogTable
// 若timestamp是字符串格式存储,先取消注释下一行做类型转换
// | extend timestamp = todatetime(['timestamp [IST]'])
// 从name字段开头提取GUID格式的操作ID
| extend OperationId = extract(@"^([a-z0-9-]{36})\s+", 1, name)
// 过滤无有效ID的脏数据
| where isnotempty(OperationId)
// 按操作ID分组,取组内最早、最晚时间
| summarize 
    MinTime = min(timestamp),
    MaxTime = max(timestamp)
    by OperationId
// 计算秒级时间差
| extend TimeDiffInSeconds = datetime_diff('second', MaxTime, MinTime)
// 输出最终结果
| project OperationId, TimeDiffInSeconds

关键逻辑说明

  • 操作ID提取:通过正则匹配name字段开头连续36位的GUID格式字符串(GUID标准长度为36位,由横杠和十六进制字符组成),如果业务中ID位置不在字段开头,调整正则匹配规则即可。
  • 时间差计算:直接取同ID下的最小、最大时间做差,无需逐行排序遍历,计算效率更高,结果和样例预期值完全匹配:

    结果校验:

    • fbf759a0-d4be-4d07-adfb-7090a207e667 首尾时间差为604秒
    • ewerewtetete-4d07-adfb-7090a207e667 首尾时间差为310秒
  • 时区适配:如果表中时间字段已经是datetime类型存储的IST时区时间,无需额外转换;如果是字符串类型存储,打开代码中类型转换那行的注释即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:48:21