SuperAPI AI 工具集

cube-build-content

数据与分析

查看项目

更新于 10-27 16:20

技能介绍

用途

本技能用于在 Cube 中创建和更新已保存内容,包括工作簿(workbooks)、报表(reports)、仪表板(dashboards)、文件夹(folders)和定时通知(scheduled notifications)。由于报表和仪表板是他人可见的内容,写入操作需要谨慎,错误会影响不止创建者本人。

两条路径

可通过 Cube MCP 工具或 Cube CLI 操作。文中 MCP 工具以 cube:<tool> 形式书写,指本插件捆绑的 cube 服务器;通过 Cube 连接器使用时,同一工具会带有连接器的名称。

如果 Cube MCP 工具可用(本插件的 cube 服务器或 Cube 连接器),用它处理工作簿、报表、仪表板和文件夹:

  1. 先用 cube:runQuery 验证查询,参见 cube-run-query。
  2. cube:createWorkbook — 返回 workbookId 和 url。若用户已指定要构建的工作簿,则跳过此步。
  3. cube:createReport,传入该 workbookId,每个图表一个报表。报表接收 Cube SQL(sqlQuery)和 chartCategory。仅在独立探索时省略 workbookId,这也是 Sheets 和 Excel 加载项列出的内容。
  4. cube:readWorkbook,然后用 cube:updateDashboard 布局报表。
  5. cube:publishDashboard — 返回实时 url,交给用户。

就地修改现有报表应使用 cube:readReport 和 cube:updateReport,而不是重新创建。cube:manageFolders 用于列出和创建文件夹。

定时通知、复制工作簿、将报表连接到外部电子表格仅支持 CLI。这些操作以及 MCP 工具未连接时的所有操作,使用下面的 CLI 路径。操作顺序和约定对两条路径都适用。

预检(CLI)

command -v cube >/dev/null || echo "Cube CLI not installed: curl -fsSL https://raw.githubusercontent.com/cube-js/cube/master/install-cli.sh | sh"
cube whoami || echo "Not authenticated. Interactive: cube login. Headless: set CUBE_API_URL + CUBE_API_KEY."
cube context list

操作顺序

内容依附于工作簿,因此从工作簿向外构建:

  1. 先验证查询。用 cube-run-query 运行并确认数字正确。保存错误查询会让错误数字获得受众。
  2. 创建或选择工作簿。
  3. 向其中添加报表。
  4. 若需要他人消费,发布为仪表板。
  5. 若需按周期送达,设置定时通知。

工作簿

cube workbooks create <deployment> --name "Revenue review"
cube workbooks update <deployment> <workbook> --name "Revenue review Q3"
cube workbooks duplicate <deployment> <workbook>
cube workbooks dashboard <deployment> <workbook> --data '<dashboard-input>'
cube workbooks publish <deployment> <workbook>      # makes the dashboard
cube workbooks delete <deployment> <workbook>

复制现有工作簿通常比创建空工作簿更好,因为它继承了团队已有的布局和约定。

报表

cube reports create <deployment> --workbook <workbook> --name "Revenue by month" --json-query '<query>'
cube reports update <deployment> <report> --json-query '<query>'
cube reports refresh <deployment> <report>
cube reports delete <deployment> <report>

--json-query 接收与 cube-run-query 发送到 load 端点相同的查询结构——measures、dimensions、timeDimensions、filters。应使用已验证的查询,而不是重新输入;重新输入容易漏掉过滤器。

复杂请求体通过 -d/--data 传入,接受内联 JSON、@file.json 或 - 表示 stdin。专用标志会覆盖 --data 中的值。

cube reports connect-workbook 用于将报表放入外部电子表格,而不是附加到 Cube 工作簿。该工作流使用:

cube reports connect-workbook <deployment> <report> --external-workbook-id <id> --result-location <range>

文件夹

cube folders create <deployment> --name "Finance"
cube folders update <deployment> <folder> --name "Finance & RevOps"
cube workspace move <deployment> --type WORKBOOK|REPORT|FOLDER --id <id> --folder <folder>   # omit --folder for the root
cube folders delete <deployment> <folder>

定时通知

cube notifications create <deployment> --data '{"scheduleType":"WEEKLY","dashboardPublicId":"<id>","dayOfWeek":1,"hour":9,"timezone":"Europe/London"}'
cube notifications recipients add <deployment> <notification> --data '{"recipients":[{"type":"USER","userId":<id>}]}'
cube notifications recipients list <deployment> <notification>
cube notifications update <deployment> <notification> --data '<UpdateNotificationInput JSON>'

scheduleType 为 HOURLY、DAILY、WEEKLY、MONTHLY 或 CUSTOM(配合 customCron);dayOfWeek 从周日开始取值 0–6;hour 在 timezone 中取值 0–23。收件人类型为 USER、EMBED_USER 或 SLACK。完整请求体可通过 cube spec notification --json 打印 schema。

在更改或删除计划前,先列出其收件人并说明当前谁在接收。报表停止送达时人们会注意到,但很少会将其与某人所做的更改联系起来。

约定

  • 按用户所说的方式命名。除非被要求,不要把 "MRR" 整理成 "Monthly Recurring Revenue"。
  • 报告所创建内容的 id,若输出带 URL 也一并报告。用户的下一步是打开它。
  • 创建成本低,删除成本高。当请求在"修改现有"和"新建"之间含糊时,新建并说明。

失败时

症状 原因
报表保存但无数据 查询错误,而非报表——用 cube-run-query 验证
Member not found 成员名称过时;模型已更改。用 cube-explore-model 重新检查
发布无可见效果 工作簿尚无报表——先添加
403 账户可读工作区但不可写入

适用场景

适用于需要在 Cube 中构建或维护已保存分析内容的场景,包括创建报表、组织仪表板、管理文件夹结构、设置周期性通知,以及将报表连接到外部电子表格。

限制

定时通知、复制工作簿、将报表连接到外部电子表格仅支持 CLI。MCP 工具未连接时需使用 CLI 路径。写入操作会影响他人可见内容,需谨慎。