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

使用GlideAggregate统计cmdb_rel_ci表特定关系类型parent.sys_class_name遇空值问题

解决GlideAggregate查询cmdb_rel_ci时parent.sys_class_name为空的问题

刚看到你的问题,我之前在ServiceNow里用GlideAggregate处理关联表统计时也踩过类似的坑,className为空大概率是这几个原因导致的,给你整理下解决方案:

核心问题分析

你要统计的parent.sys_class_name是关联表(parent指向的CI表)的字段,直接用GlideAggregate时如果没处理好关联查询、分组逻辑或者关系类型的匹配条件,就会出现字段为空的情况。

正确的实现代码

方案1:用关系类型显示名称查询(不推荐,易受名称变更影响)

var agg = new GlideAggregate('cmdb_rel_ci');

// 匹配目标关系类型
agg.addQuery('type', 'Depends on::Used by');
// 按parent的sys_class_name分组统计数量
agg.addAggregate('COUNT', 'parent.sys_class_name');
agg.groupBy('parent.sys_class_name');

agg.query();

// 遍历输出结果
while (agg.next()) {
    var className = agg.getValue('parent.sys_class_name');
    var totalCount = agg.getAggregate('COUNT', 'parent.sys_class_name');
    gs.info(`CI类名:${className},关联数量:${totalCount}`);
}

方案2:用关系类型sys_id查询(推荐,更稳定)

因为关系类型的显示名称可能会被修改,直接用sys_id匹配更可靠:

// 先获取目标关系类型的sys_id
var relTypeGR = new GlideRecord('cmdb_rel_type');
relTypeGR.addQuery('name', 'Depends on::Used by');
relTypeGR.query();

if (relTypeGR.next()) {
    var agg = new GlideAggregate('cmdb_rel_ci');
    agg.addQuery('type', relTypeGR.sys_id);
    agg.addAggregate('COUNT', 'parent.sys_class_name');
    agg.groupBy('parent.sys_class_name');
    
    agg.query();
    
    while (agg.next()) {
        var className = agg.getValue('parent.sys_class_name');
        var totalCount = agg.getAggregate('COUNT', 'parent.sys_class_name');
        gs.info(`CI类名:${className},关联数量:${totalCount}`);
    }
} else {
    gs.error('未找到关系类型"Depends on::Used by",请检查名称是否正确');
}

你之前可能踩的坑

  1. 未添加groupBy语句:如果只加了addAggregate但没指定groupBy('parent.sys_class_name'),GlideAggregate只会返回一个总数量,无法提取每个分组的sys_class_name,自然显示为空。
  2. 关系类型匹配错误:如果直接用显示名称查询type字段,但系统中该关系类型的实际存储值(比如sys_id)和显示名称不匹配,会导致没有查询到任何结果,className自然为空。
  3. 字段引用错误:比如误写为sys_class_name(这会取cmdb_rel_ci表自身的类名,而非parent关联CI的类名),或者拼写错误成parent.class_name。
  4. 权限问题:当前执行脚本的角色没有权限访问parent关联CI表的sys_class_name字段,也会导致返回空值,可以检查角色权限配置。

内容的提问来源于stack exchange,提问作者Done With Fun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:54:39