name: data-metabase description: “Metabase REST API 自动化和故障排除:认证(优先使用API密钥,会话回退)、导出/更新问题(卡片)和仪表板、标准化visualization_settings、以及运行/导出结果。”
Metabase
通过API自动化Metabase:报告(卡片)、仪表板和图表设置。
快速开始
输入(环境变量)
METABASE_URL(例如,https://metabase.example.com)- 优先:
METABASE_API_KEY - 回退:
METABASE_USERNAME+METABASE_PASSWORD
完整性检查
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py health
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py whoami
实时API文档
您的Metabase实例在/api/docs提供OpenAPI文档(例如,https://metabase.example.com/api/docs)。使用此来发现版本特定的端点和请求形状。
工作流程
- 确认API可用性(
GET /api/util/health)。 - 使用API密钥(优先)或短期会话(回退)进行认证。
- 发现ID(优先发现而非跨环境硬编码):
collection_id用于保存位置databaseid 用于dataset_querysource-table/ 字段 ids 如果使用MBQL
- 创建/更新卡片:
- 优先使用原生SQL以实现稳定自动化。
- 明确设置
display+visualization_settings。
- 创建/更新仪表板并以一致布局添加卡片。
- 通过运行/导出结果进行验证。
关键概念
- 用户界面“问题” == API
card - 图表配置作为
display+visualization_settings存在于卡片上 - 大多数可视化键最容易通过复制现有卡片JSON然后编辑来管理
护栏
- 对于批量、跨环境迁移,优先使用Metabase“序列化”(专业/企业版);使用直接API进行增量更新。
- 当您可以发现它们或使用序列化/实体ID时,不要跨环境硬编码数字ID。
- 永远不要提交
METABASE_API_KEY、密码或会话令牌。 - 优先使用专用的、最小权限的自动化账户和集合。
参考(仅需时阅读)
| 主题 | 文件 |
|---|---|
| 认证(API密钥 + 回退) | references/api-auth.md |
| 报告(卡片):创建/编辑模式 | references/reports-cards.md |
| 仪表板和卡片放置 | references/dashboards.md |
图表和 visualization_settings |
references/charts-settings.md |
脚本
scripts/metabase_api.py 是一个小型、无依赖的助手,用于测试认证和更新卡片。
示例:
# 打印认证用户(尝试API密钥,然后会话)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py whoami
# 导出现有卡片JSON(用作visualization_settings的模板)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py export-card --id 123 --out card.json
# 导出现有仪表板JSON(用作布局的模板)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py export-dashboard --id 5 --out dashboard.json
# 从JSON规范创建/更新卡片(见references/reports-cards.md)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py upsert-card --spec card-spec.json
# 从JSON规范创建/更新仪表板(仅基本字段)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py upsert-dashboard --spec dashboard-spec.json