KQL查询生成的Adobe Acrobat应用饼图数据异常求助
问题分析与修正方案
原查询统计数量异常,主要是分组逻辑和版本判断逻辑存在问题,以下是修正后的查询及说明:
修正后的KQL查询
AppInventory_CL | where AppName_s in ('Adobe Acrobat DC (64-bit)', 'Adobe Acrobat Reader - Italiano') | summarize arg_max(TimeGenerated, *) by ManagedDeviceID_g, AppName_s // 仅按设备和应用分组,确保同一设备同一App只取最新记录 | project ComputerName_s, AppName_s, AppVersion_s | extend AppVersionParts = split(AppVersion_s, '.') | extend MajorVersion = toint_or_null(AppVersionParts[0]) // 用toint_or_null避免版本号解析失败报错 | extend BuildVersion = toint_or_null(AppVersionParts[-1]) | extend Versione = iif( // 给两个应用的判断条件分别加括号,确保逻辑优先级正确 (AppName_s == 'Adobe Acrobat Reader - Italiano' and MajorVersion >= 23 and BuildVersion > 0) or (AppName_s == 'Adobe Acrobat DC (64-bit)' and MajorVersion >= 22), 'OK', 'KO' ) | where MajorVersion != null // 过滤版本号解析失败的无效记录 | summarize DeviceCount = dcount(ManagedDeviceID_g) by Versione // 用dcount统计唯一设备数,避免重复计数 | render piechart
关键修改点
- 分组优化:原查询按
ManagedDeviceID_g, AppName_s, AppPublisher_s分组,可能导致同一设备同一App因Publisher不同被多次统计,改为仅按设备和应用分组,确保每个设备的每个App只保留最新记录。 - 逻辑优先级修正:原iif条件未加括号,导致逻辑判断优先级错误,给两个应用的判断条件分别添加括号,确保符合预期的版本规则。
- 版本解析容错:使用
toint_or_null替代toint,避免版本号格式异常时出现报错,同时过滤解析失败的无效记录。 - 统计唯一设备数:用
dcount(ManagedDeviceID_g)替代count(),确保统计的是唯一设备数量,避免同一设备的重复记录影响结果。
内容的提问来源于stack exchange,提问作者Alessandro Zola
相关产品推荐
相关产品推荐

