mcpField
A
analytics-generation

analytics-generation

github.com/happy-technologies-llc数据与数据库4143 次安装2 天前更新
代码仓库

关于 analytics-generation

面向 ServiceNow 管理员和分析配置人员的技能,可将自然语言分析需求转化为 Performance Analytics 配置和标准报表。涵盖指标、数据收集器、仪表板、小组件及报表的创建与验证。

主要功能

  1. 01创建 Performance Analytics 指标
  2. 02配置指标数据收集器
  3. 03构建含小组件的仪表板
  4. 04生成图表、列表和数据透视报表
  5. 05查询并验证分析配置
  6. 06将自然语言需求映射为配置

适用场景

  1. 01为 KPI 创建指标和定时数据采集
  2. 02搭建含趋势和分解视图的仪表板
  3. 03根据业务需求生成 ServiceNow 报表
  4. 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-RecordPOST /api/now/table/pa_indicators
创建数据收集器SN-Create-RecordPOST /api/now/table/pa_data_collectors
创建仪表板SN-Create-RecordPOST /api/now/table/pa_dashboards
添加小组件SN-Create-RecordPOST /api/now/table/pa_widgets
创建报告SN-Create-RecordPOST /api/now/table/sys_report
查询指标SN-Query-TableGET /api/now/table/pa_indicators
查询仪表板SN-Query-TableGET /api/now/table/pa_dashboards
更新小组件SN-Update-RecordPATCH /api/now/table/pa_widgets/{sys_id}

最佳实践

  • 从指标入手: 在构建仪表板前先定义度量指标;指标是基础
  • 大多数 KPI 使用每日频率: 每日收集可兼顾数据粒度与性能
  • 设置指标方向: 指定“最小化”或“最大化”,确保趋势图能正确显示改进情况
  • 根据受众设计: 高管仪表板应包含 4-6 个小组件;运营仪表板可以包含更多
  • 使用细分项进行下钻分析: 允许用户按优先级、类别、群组或位置切分数据
  • 结合使用 PA 和标准报告: 使用 PA 查看趋势和 KPI;使用 sys_report 查看临时列表和详细信息
  • 测试数据收集: 手动运行一次收集,以确认指标条件返回预期结果
  • 设置阈值和目标: 配置指标阈值,以启用红色/黄色/绿色可视化
  • 避免过度汇总: 在单个小组件中使用过多细分项会让数据难以阅读
  • 记录指标公式: 使用描述字段说明每个指标的衡量内容及原因

故障排除

指标未显示数据

现象: 指标已存在,但显示为零或没有数据 原因:

  1. 数据收集器未启用或尚未运行
  2. 条件筛选器未返回任何记录
  3. 指标频率与收集计划不匹配 解决方案:
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
仪表板不可见

现象: 仪表板已创建,但未显示在导航中 原因:

  1. 仪表板尚未发布
  2. 用户缺少 pa_viewer 或 pa_admin 角色
  3. 仪表板未启用 解决方案:
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 - 应用级分析

评论

支持 Markdown