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

如何编写KQL查询实现Intune补丁数据的嵌套分类展示?

优化Intune补丁状态KQL查询以实现嵌套分类统计

针对你需要生成**两层嵌套分类(补丁KB编号→状态)**的补丁部署统计需求,原查询的问题在于保留了单设备单补丁的原始记录,导致数据量过大且结构不符合聚合统计要求。以下是调整后的KQL查询,可直接生成适合嵌套下拉展示的聚合数据:

let _SnapshotTime = datetime(2023-01-18T06:00:00Z);
// 核心逻辑:先按补丁+状态统计设备数,再按补丁打包状态详情
UCClientUpdateStatus
| where TimeGenerated == _SnapshotTime
// 若需关联设备额外属性(如OS版本、设备组),保留此join;仅统计状态可移除
| join kind=inner (UCClient | where TimeGenerated == _SnapshotTime) on DeviceName
// 第一步:统计每个KB对应各状态的设备数量(去重设备)
| summarize DeviceCount = dcount(DeviceName) by TargetKBNumber, OSSecurityUpdateStatus
// 第二步:按KB分组,将状态-计数打包为嵌套结构
| summarize StatusDetails = make_bag(pack(OSSecurityUpdateStatus, DeviceCount)) by TargetKBNumber
// 可选:按KB编号排序,方便下拉选择
| order by TargetKBNumber asc

查询说明:

  • 用dcount(DeviceName)确保同一设备不会在同一补丁状态下重复计数,避免统计误差
  • make_bag(pack(...))会将每个KB对应的所有状态及设备数打包为键值对集合,示例结构如下:
    {
      "TargetKBNumber": "KB5022845",
      "StatusDetails": {
        "Installed": 120,
        "Failed": 5,
        "Pending": 18
      }
    }
    
  • 在可视化工具(如Log Analytics仪表盘、Power BI)中,可将TargetKBNumber设为第一层下拉选项,StatusDetails中的状态设为第二层下拉,对应展示DeviceCount数值,完美匹配你需要的嵌套分类格式。

原查询问题分析:

原查询使用arg_max(TimeGenerated, *) by OSSecurityUpdateStatus, TargetKBNumber, DeviceName会保留每台设备针对每个补丁的状态记录,返回的是原始事件级数据而非聚合统计数据,因此数据量巨大且无法直接用于嵌套分类展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:40:24