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

求教:计算最近1天与30天平均时长的标准差(Kusto查询)

解决Kusto查询中计算两类平均时长标准差的方案

首先你原来的查询里有个小问题:table2里的字段名和table1重复了,join之后会出现自动重命名的冗余字段,建议先把字段名改清晰,比如把table2的平均时长字段改成AvgDuration30d。

接下来分三种常见需求给出实现方案:

1. 按每个itemtype计算自身1天平均与30天平均的标准差

这种场景下,每个itemtype会得到一个对应的标准差结果,代表该类型下两个平均时长的离散程度:

let table1 = view() { 
    requests | where TimeGenerated > ago(1d) | summarize AvgDuration1d = avg(duration) by itemtype 
};
let table2 = view() { 
    requests | where TimeGenerated > ago(30d) | summarize AvgDuration30d = avg(duration) by itemtype 
};
table1 
| join kind=leftouter table2 on itemtype
// 将两个平均值转为数组,再计算标准差
| extend DurationValues = pack_array(AvgDuration1d, AvgDuration30d)
| summarize StdDev = stdev_array(DurationValues) by itemtype

2. 计算所有itemtype的两类平均时长整体的标准差

如果需要把所有itemtype的1天平均、30天平均放在一起,计算整个数据集的标准差,可以这么写:

let table1 = view() { 
    requests | where TimeGenerated > ago(1d) | summarize AvgDuration = avg(duration), Period = "1d" by itemtype 
};
let table2 = view() { 
    requests | where TimeGenerated > ago(30d) | summarize AvgDuration = avg(duration), Period = "30d" by itemtype 
};
// 合并两个表的所有平均时长数据
union table1, table2
// 计算整体标准差
| summarize OverallStdDev = stdev(AvgDuration)

3. 计算所有itemtype的1天平均与30天平均差值的标准差

如果需求是统计各类型两个平均时长差值的离散程度,用这个写法:

let table1 = view() { 
    requests | where TimeGenerated > ago(1d) | summarize AvgDuration1d = avg(duration) by itemtype 
};
let table2 = view() { 
    requests | where TimeGenerated > ago(30d) | summarize AvgDuration30d = avg(duration) by itemtype 
};
table1 
| join kind=leftouter table2 on itemtype
| extend DurationDiff = AvgDuration1d - AvgDuration30d
| summarize StdDevOfDiffs = stdev(DurationDiff)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:19:58