如何合并两个Application Insights自定义事件Kusto查询并计算平均百分比
合并Kusto查询并计算平均百分比
可以通过两种方式合并查询,最终返回两个百分比的平均值:
方法一:单次扫描数据(更高效)
直接在一个查询中处理两种事件类型,避免重复扫描数据:
customEvents | where name in ("JobsStarted", "JobsCompleted") | project timestamp, Id = tostring(customDimensions["Id"]), Frequency = toint(customDimensions["Frequency"]), IsValid = case( name == "JobsStarted", toint(customDimensions["JobsStarted"]) >= 1, name == "JobsCompleted", toint(customDimensions["JobsCompleted"]) >= 1, false ) | summarize Percentage = (toreal(countif(IsValid)) / sum(Frequency)) * 100 by name | summarize AveragePercentage = avg(Percentage)
逻辑说明:
- 第一步过滤出目标事件类型
- 用
case函数统一判断两种事件的有效条件,生成IsValid标记字段 - 按事件名称分组计算各自的百分比
- 最后对两个百分比求平均值,得到单一结果
方法二:复用原有查询逻辑(更直观)
通过临时变量保存两个查询的结果,再合并计算平均值:
let started_percent = customEvents | where name == "JobsStarted" | project Id = tostring(customDimensions["Id"]), Frequency = toint(customDimensions["Frequency"]), JobsStarted = toint(customDimensions["JobsStarted"]) | summarize Percentage = (toreal(countif(JobsStarted >= 1)) / sum(Frequency)) * 100; let completed_percent = customEvents | where name == "JobsCompleted" | project Id = tostring(customDimensions["Id"]), Frequency = toint(customDimensions["Frequency"]), JobsCompleted= toint(customDimensions["JobsCompleted"]) | summarize Percentage = (toreal(countif(JobsCompleted >= 1)) / sum(Frequency)) * 100; union started_percent, completed_percent | summarize AveragePercentage = avg(Percentage)
逻辑说明:
- 用
let语句定义两个临时变量,分别存储原有查询的结果 - 通过
union合并两个结果集 - 最后计算平均值得到单一结果
内容的提问来源于stack exchange,提问作者user989988
相关产品推荐
相关产品推荐

