关于 analytics-generation
面向 ServiceNow 管理员和分析配置人员的技能,可将自然语言分析需求转化为 Performance Analytics 配置和标准报表。涵盖指标、数据收集器、仪表板、小组件及报表的创建与验证。
主要功能
- 01创建 Performance Analytics 指标
- 02配置指标数据收集器
- 03构建含小组件的仪表板
- 04生成图表、列表和数据透视报表
- 05查询并验证分析配置
- 06将自然语言需求映射为配置
适用场景
- 01为 KPI 创建指标和定时数据采集
- 02搭建含趋势和分解视图的仪表板
- 03根据业务需求生成 ServiceNow 报表
- 04检查指标、收集器和小组件配置
MCP 相关
该技能展示如何通过 ServiceNow MCP 工具创建、查询和更新分析记录,包括指标、数据收集器、仪表板、小组件与报表。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill analytics-generation安装后在 Claude Code 中输入/analytics-generation确认已加载。
详细介绍
分析仪表板和可视化生成
概述
此技能涵盖根据自然语言描述生成分析仪表板、Performance Analytics(PA)指标、数据收集器、小组件和标准报表:
- 创建 PA 指标,跟踪关键指标随时间的变化
- 配置数据收集器,以收集并存储指标快照
- 使用小组件和可视化内容构建仪表板布局
- 生成包含图表、列表和数据透视表的标准报表
- 将自然语言指标描述映射到 ServiceNow PA 配置
- 结合 PA 和报表,构建全面的分析解决方案
适用场景: 利益相关者提出新建仪表板、跟踪 KPI、分析趋势的需求,或需要将业务报表需求转化为 ServiceNow 分析配置时。
先决条件
- 角色:
pa_admin、report_admin或admin - 访问权限: pa_dashboards、pa_widgets、pa_indicators、pa_data_collectors、sys_report 表
- 知识: Performance Analytics 概念、ServiceNow 报表框架、数据聚合方法
- 插件: 必须激活 Performance Analytics(com.snc.pa)才能使用 PA 功能
- 相关技能: 完成
reporting/query-generation,以构建高级查询
操作步骤
第 1 步:了解分析数据模型
pa_dashboards (Dashboard)
├── pa_tabs (Dashboard Tabs)
│ └── pa_widgets (Widget Instances)
│ └── pa_widget_indicators (Widget-Indicator Links)
├── pa_indicators (Indicators/KPIs)
│ ├── pa_indicator_source (Indicator Sources)
│ └── pa_data_collectors (Data Collectors)
│ └── pa_job_logs (Collection Logs)
└── sys_report (Standard Reports)
主要表:
| 表 | 用途 |
|---|---|
| pa_dashboards | 仪表板容器定义 |
| pa_widgets | 放置在仪表板上的小组件实例 |
| pa_indicators | 包含公式的 KPI/指标定义 |
| pa_data_collectors | 收集指标数据的计划作业 |
| sys_report | 标准 ServiceNow 报表(图表、列表、数据透视表) |
第 2 步:创建 PA 指标
指标用于定义要衡量的内容。
创建基于计数的指标:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_indicators
data:
name: "Open Critical Incidents"
description: "Count of open incidents with priority 1 (Critical)"
type: 1
aggregate: "COUNT"
table: "incident"
conditions: "active=true^priority=1"
frequency: "daily"
direction: "minimize"
unit: "incidents"
precision: 0
active: true
REST 替代方式:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/pa_indicators" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-X POST \
-d '{
"name": "Open Critical Incidents",
"description": "Count of open incidents with priority 1",
"type": 1,
"aggregate": "COUNT",
"table": "incident",
"conditions": "active=true^priority=1",
"frequency": "daily",
"active": true
}'
创建基于平均值的指标:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_indicators
data:
name: "Average Incident Resolution Time"
description: "Average time in hours from opening to resolution"
type: 1
aggregate: "AVG"
table: "incident"
field: "business_duration"
conditions: "state=6^resolved_atISNOTEMPTY"
frequency: "daily"
direction: "minimize"
unit: "hours"
precision: 1
active: true
创建百分比指标:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_indicators
data:
name: "SLA Compliance Rate"
description: "Percentage of incidents resolved within SLA"
type: 2
aggregate: "COUNT"
table: "incident"
conditions: "state=6"
numerator_conditions: "state=6^made_sla=true"
frequency: "daily"
direction: "maximize"
unit: "%"
precision: 1
active: true
第 3 步:创建数据收集器
数据收集器用于定义何时以及如何收集指标数据。
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_data_collectors
data:
indicator: [indicator_sys_id]
name: "Daily Open Critical Incidents Collector"
active: true
run_as: "system"
collection_frequency: "daily"
is_scheduled: true
REST 替代方式:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/pa_data_collectors" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"indicator": "[indicator_sys_id]",
"name": "Daily Open Critical Incidents Collector",
"active": true,
"collection_frequency": "daily",
"is_scheduled": true
}'
第 4 步:创建仪表板
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_dashboards
data:
name: "IT Service Management Overview"
description: "Executive dashboard for ITSM key performance indicators"
active: true
published: true
owner: [user_sys_id]
REST 替代方式:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/pa_dashboards" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"name": "IT Service Management Overview",
"description": "Executive dashboard for ITSM KPIs",
"active": true,
"published": true
}'
第 5 步:向仪表板添加小组件
PA 指标小组件类型:
| 类型 | 值 | 使用场景 |
|---|---|---|
| 记分卡 | scorecard | 显示单个 KPI 及其趋势 |
| 时间序列 | time_series | 显示指标随时间的变化(折线图) |
| 分组 | breakdown | 按维度拆分指标 |
| 仪表盘 | dial | 以仪表样式显示单个指标 |
| 单值 | single_score | 显示大号数值 |
| 列表 | list | 表格数据 |
| 数据透视表 | pivot | 交叉制表 |
创建记分卡小组件:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_widgets
data:
dashboard: [dashboard_sys_id]
indicator: [indicator_sys_id]
visualization: "scorecard"
name: "Critical Incidents Scorecard"
row: 0
column: 0
width: 6
height: 4
active: true
创建时间序列小组件:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_widgets
data:
dashboard: [dashboard_sys_id]
indicator: [indicator_sys_id]
visualization: "time_series"
name: "Incident Volume Trend"
row: 0
column: 6
width: 6
height: 4
active: true
time_series_period: "last_12_months"
创建分组小组件:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: pa_widgets
data:
dashboard: [dashboard_sys_id]
indicator: [indicator_sys_id]
visualization: "breakdown"
name: "Incidents by Priority"
breakdown: [breakdown_sys_id]
row: 4
column: 0
width: 6
height: 4
active: true
chart_type: "bar"
第 6 步:创建标准报表
对于无需使用 PA 的简单报表需求,可使用 sys_report。
创建条形图报表:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: sys_report
data:
title: "Incidents by Category"
table: "incident"
type: "bar"
field: "category"
filter: "active=true"
aggregate: "COUNT"
group: "category"
is_published: true
active: true
chart_size: "large"
REST 替代方式:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/sys_report" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"title": "Incidents by Category",
"table": "incident",
"type": "bar",
"field": "category",
"filter": "active=true",
"aggregate": "COUNT",
"is_published": true
}'
创建趋势报表:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: sys_report
data:
title: "Weekly Incident Volume"
table: "incident"
type: "line"
field: "sys_created_on"
filter: "sys_created_on>=javascript:gs.daysAgo(90)"
aggregate: "COUNT"
trend_field: "sys_created_on"
interval: "week"
is_published: true
active: true
创建数据透视表报表:
MCP 方式:
Tool: SN-Create-Record
Parameters:
table_name: sys_report
data:
title: "Incidents: Priority vs State"
table: "incident"
type: "pivot"
field: "priority"
stack: "state"
filter: "sys_created_on>=javascript:gs.daysAgo(30)"
aggregate: "COUNT"
is_published: true
active: true
第 7 步:创建 PA 分组
分组用于定义切分指标数据的维度。
MCP 方式:
Tool: SN-Query-Table
Parameters:
table_name: pa_breakdowns
query: table=incident^active=true
fields: sys_id,name,field,table
limit: 50
如果所需的分组不存在:
Tool: SN-Create-Record
Parameters:
table_name: pa_breakdowns
data:
name: "Incident Priority Breakdown"
table: "incident"
field: "priority"
active: true
第 8 步:验证和测试
验证指标配置:
MCP 方式:
Tool: SN-Query-Table
Parameters:
table_name: pa_indicators
query: sys_id=[indicator_sys_id]
fields: sys_id,name,aggregate,table,conditions,frequency,active
验证仪表板小组件:
MCP 方式:
Tool: SN-Query-Table
Parameters:
table_name: pa_widgets
query: dashboard=[dashboard_sys_id]
fields: sys_id,name,visualization,indicator,row,column,width,height,active
limit: 50
检查数据收集器状态:
MCP 方式:
Tool: SN-Query-Table
Parameters:
table_name: pa_data_collectors
query: indicator=[indicator_sys_id]
fields: sys_id,name,active,is_scheduled,last_collection_time
工具用法
| 操作 | MCP 工具 | REST 端点 |
|---|---|---|
| 创建指标 | SN-Create-Record | POST /api/now/table/pa_indicators |
| 创建数据收集器 | SN-Create-Record | POST /api/now/table/pa_data_collectors |
| 创建仪表板 | SN-Create-Record | POST /api/now/table/pa_dashboards |
| 添加小组件 | SN-Create-Record | POST /api/now/table/pa_widgets |
| 创建报告 | SN-Create-Record | POST /api/now/table/sys_report |
| 查询指标 | SN-Query-Table | GET /api/now/table/pa_indicators |
| 查询仪表板 | SN-Query-Table | GET /api/now/table/pa_dashboards |
| 更新小组件 | SN-Update-Record | PATCH /api/now/table/pa_widgets/{sys_id} |
最佳实践
- 从指标入手: 在构建仪表板前先定义度量指标;指标是基础
- 大多数 KPI 使用每日频率: 每日收集可兼顾数据粒度与性能
- 设置指标方向: 指定“最小化”或“最大化”,确保趋势图能正确显示改进情况
- 根据受众设计: 高管仪表板应包含 4-6 个小组件;运营仪表板可以包含更多
- 使用细分项进行下钻分析: 允许用户按优先级、类别、群组或位置切分数据
- 结合使用 PA 和标准报告: 使用 PA 查看趋势和 KPI;使用 sys_report 查看临时列表和详细信息
- 测试数据收集: 手动运行一次收集,以确认指标条件返回预期结果
- 设置阈值和目标: 配置指标阈值,以启用红色/黄色/绿色可视化
- 避免过度汇总: 在单个小组件中使用过多细分项会让数据难以阅读
- 记录指标公式: 使用描述字段说明每个指标的衡量内容及原因
故障排除
指标未显示数据
现象: 指标已存在,但显示为零或没有数据 原因:
- 数据收集器未启用或尚未运行
- 条件筛选器未返回任何记录
- 指标频率与收集计划不匹配 解决方案:
Tool: SN-Query-Table
Parameters:
table_name: pa_data_collectors
query: indicator=[indicator_sys_id]
fields: sys_id,name,active,is_scheduled,last_collection_time
然后确认条件查询是否返回数据:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: active=true^priority=1
fields: sys_id
limit: 1
仪表板不可见
现象: 仪表板已创建,但未显示在导航中 原因:
- 仪表板尚未发布
- 用户缺少 pa_viewer 或 pa_admin 角色
- 仪表板未启用 解决方案:
Tool: SN-Update-Record
Parameters:
table_name: pa_dashboards
sys_id: [dashboard_sys_id]
data:
published: true
active: true
报告筛选器不起作用
现象: 报告显示所有记录,而不是筛选后的记录 原因: 筛选器的编码查询语法不正确 解决方案: 验证编码查询:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: [your_filter_query]
fields: sys_id
limit: 5
如果结果不符合预期,请调整查询。
仪表板上的小组件重叠
现象: 小组件重叠或显示不正确 原因: 行/列/宽度/高度值相互冲突 解决方案: 检查所有小组件的位置:
Tool: SN-Query-Table
Parameters:
table_name: pa_widgets
query: dashboard=[dashboard_sys_id]
fields: name,row,column,width,height
limit: 20
示例
示例 1:ITSM 高管仪表板
# 1. Create indicators
Tool: SN-Create-Record
Parameters:
table_name: pa_indicators
data:
name: "Open Incidents"
aggregate: "COUNT"
table: "incident"
conditions: "active=true"
frequency: "daily"
active: true
# Result: indicator1_sys_id
Tool: SN-Create-Record
Parameters:
table_name: pa_indicators
data:
name: "MTTR (Hours)"
aggregate: "AVG"
table: "incident"
field: "business_duration"
conditions: "state=6^sys_created_on>=javascript:gs.daysAgo(30)"
frequency: "daily"
active: true
# Result: indicator2_sys_id
# 2. Create data collectors for each indicator
Tool: SN-Create-Record
Parameters:
table_name: pa_data_collectors
data:
indicator: indicator1_sys_id
name: "Open Incidents Daily"
active: true
is_scheduled: true
# 3. Create dashboard
Tool: SN-Create-Record
Parameters:
table_name: pa_dashboards
data:
name: "ITSM Executive Dashboard"
published: true
active: true
# Result: dashboard_sys_id
# 4. Add widgets
Tool: SN-Create-Record
Parameters:
table_name: pa_widgets
data:
dashboard: dashboard_sys_id
indicator: indicator1_sys_id
visualization: "single_score"
name: "Open Incidents"
row: 0
column: 0
width: 3
height: 3
Tool: SN-Create-Record
Parameters:
table_name: pa_widgets
data:
dashboard: dashboard_sys_id
indicator: indicator2_sys_id
visualization: "time_series"
name: "MTTR Trend"
row: 0
column: 3
width: 9
height: 6
示例 2:快速创建标准报告
Tool: SN-Create-Record
Parameters:
table_name: sys_report
data:
title: "Top 10 Incident Categories This Month"
table: "incident"
type: "bar"
field: "category"
filter: "sys_created_on>=javascript:gs.beginningOfThisMonth()"
aggregate: "COUNT"
orderby: "COUNT"
order_direction: "desc"
row_count: 10
is_published: true
相关技能
reporting/query-generation- 为报告生成复杂查询itsm/incident-lifecycle- 事件数据模型背景信息development/scheduled-jobs- 配置计划数据收集ea/business-app-insights- 应用级分析