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

Azure日志KQL查询需求:计算函数执行时长平均值

Azure日志分析:计算两类平均时长的KQL查询

1. 计算whole_time的全局平均值

whole_time指同一operation_Id下首条日志到末条日志的时长,以下是实现查询:

// 替换YourLogTable为实际的Azure日志表名
YourLogTable
| summarize 
    first_log_time = min(timestamp),
    last_log_time = max(timestamp)
    by operation_Id
| extend whole_time = last_log_time - first_log_time
| summarize avg_whole_time = avg(whole_time)

逻辑说明:

  • 按operation_Id分组,提取每个分组内的最早、最晚日志时间戳
  • 计算每个分组的首尾日志时长差whole_time(结果为timespan类型,示例:00:02:15代表2分15秒)
  • 对所有分组的whole_time求平均值,得到全局平均首尾时长

2. 计算special_time的全局平均值

special_time指同一operation_Id下,包含Request Part_One与Request Part_Two日志的时间差,以下是实现查询:

// 替换YourLogTable为实际的Azure日志表名
YourLogTable
| where message in ("Request Part_One", "Request Part_Two")
| summarize 
    part_one_time = maxif(timestamp, message == "Request Part_One"),
    part_two_time = maxif(timestamp, message == "Request Part_Two")
    by operation_Id
// 过滤掉缺少任意一条目标日志的分组,避免无效计算
| where isnotempty(part_one_time) and isnotempty(part_two_time)
| extend special_time = part_two_time - part_one_time
| summarize avg_special_time = avg(special_time)

逻辑说明:

  • 先筛选出仅包含目标message的日志记录
  • 按operation_Id分组,提取每个分组内两类目标日志的时间戳(maxif用于处理同一operation_Id下有多条相同message的情况,取最晚的记录;若确保每个operation_Id仅各有一条,可替换为any)
  • 过滤掉缺少任意一条目标日志的分组
  • 计算两类日志的时间差special_time,再求全局平均值

额外说明:

  • 若需将时长转为秒/毫秒数值,可将时间差计算替换为datetime_diff('second', last_log_time, first_log_time)(秒)或datetime_diff('millisecond', ...)(毫秒)
  • 若需保留每个operation_Id的明细数据,去掉最后一步的summarize avg_xxx即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:20:23