Kusto KQL查询问题:获取设备最新已安装应用列表
解决Log Analytics查询已安装应用列表的问题
优化后的查询
// 获取每个设备的最新应用列表上报时间 let latest_device_snapshots = Table | summarize latest_report_time = max(TimeGenerated) by DeviceName; // 关联最新快照时间的应用记录,得到当前有效应用集合 Table | join kind=inner latest_device_snapshots on DeviceName | where TimeGenerated == latest_report_time | project DeviceName, AppName, AppVersion, TimeGenerated // 根据需求调整输出字段
原查询问题分析
原查询Table | summarize arg_max(TimeGenerated, *) by DeviceName,AppName是按设备+应用名称维度取单条最新记录,存在两个核心问题:
- 应用更新时,同一
AppName的旧版本记录会被保留(只要该版本曾上报过) - 应用卸载后,旧的上报记录没有后续覆盖,会被误判为当前仍安装的应用
优化逻辑说明
- 先提取每个设备的最新上报时间戳:这代表该设备最近一次同步应用列表的快照时间,对应当前真实的应用状态
- 通过内连接关联原始表,仅保留每个设备在最新快照时间点上报的所有应用记录
- 最终结果就是各设备当前实际安装的应用集合,自动排除已更新的旧版本和已卸载的应用
内容的提问来源于stack exchange,提问作者Sean Lillis
相关产品推荐
相关产品推荐

