用途
本技能用于在 Cube 中创建和更新已保存内容,包括工作簿(workbooks)、报表(reports)、仪表板(dashboards)、文件夹(folders)和定时通知(scheduled notifications)。由于报表和仪表板是他人可见的内容,写入操作需要谨慎,错误会影响不止创建者本人。
两条路径
可通过 Cube MCP 工具或 Cube CLI 操作。文中 MCP 工具以 cube:<tool> 形式书写,指本插件捆绑的 cube 服务器;通过 Cube 连接器使用时,同一工具会带有连接器的名称。
如果 Cube MCP 工具可用(本插件的 cube 服务器或 Cube 连接器),用它处理工作簿、报表、仪表板和文件夹:
- 先用 cube:runQuery 验证查询,参见 cube-run-query。
- cube:createWorkbook — 返回 workbookId 和 url。若用户已指定要构建的工作簿,则跳过此步。
- cube:createReport,传入该 workbookId,每个图表一个报表。报表接收 Cube SQL(sqlQuery)和 chartCategory。仅在独立探索时省略 workbookId,这也是 Sheets 和 Excel 加载项列出的内容。
- cube:readWorkbook,然后用 cube:updateDashboard 布局报表。
- 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
操作顺序
内容依附于工作簿,因此从工作簿向外构建:
- 先验证查询。用 cube-run-query 运行并确认数字正确。保存错误查询会让错误数字获得受众。
- 创建或选择工作簿。
- 向其中添加报表。
- 若需要他人消费,发布为仪表板。
- 若需按周期送达,设置定时通知。
工作簿
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 路径。写入操作会影响他人可见内容,需谨慎。