是否有接受 MBQL/SQL 查询并返回原始数据的 Metabase REST API?
我可以通过 API 在两步过程中执行 MBQL 查询,方法是执行通过 Metabase Web 应用程序 UI 创建问题的中间步骤,然后查询问题,但我还没有想出如何将 MBQL 与 REST 结合起来API 一步到位。
我想通过在 API 请求中使用 MBQL 而不是 UI 生成的问题来完成一些项目:
- 更好的版本管理,因为可以使用代码将 MBQL 查询签入源代码控制
- 更好的隔离,因为 API 调用不会依赖于可以改变的问题
以下是有关如何执行两步过程的一些信息。
两步过程
两步过程是:
- 使用 Web 应用程序创建 MBQL/SQL 元数据库问题
- 使用 REST API 查询使用 Card API 在 Web 应用程序中创建的现有问题
步骤 1) 通过 Web UI 创建问题
登录网络应用程序,然后单击顶部菜单中的“新问题”按钮。
创建问题后,您将被定向到如下所示的 URL,其中:question-id
是整数。
- Web UI 端点:
GET /question/:question-id
记下此值并在下一步的 API 中使用它。
注意:创建卡片的另一种方法是使用每个YakovL的
POST /api/card
API 端点。在某些需要 UI 问题/卡片的情况下,这可能很有用,但我也试图避免首先创建创建卡片/问题,因为我不打算使用 Metabase UI 来使用它们。对我来说避免使用卡片的原因包括需要执行额外的工作来验证卡片查询定义没有更改,但代码中仍有用于创建卡片的 SQL,并在 UI 中生成大量不需要的问题卡片。
步骤 2) 用于问题数据的 REST API
API 使用术语“卡片”来表示 Web UI “问题”对象,因此对以下卡片 API 进行 API 调用:
- API端点:
POST /api/card/:card-id/query/:export-format
在这个网址中:
:card-id
是:question-id
来自 Web UI URL:export-format
可以是json
或其他格式
API 文档中提供了有关 API 的更多信息:
https://github.com/metabase/metabase/blob/master/docs/api-documentation.md
问题
有没有办法通过在 API 请求中一步发送 MBQL/SQL 查询来直接执行此操作而无需预先存在的问题/卡片?