是否有Metabase REST API采用MBQL / SQL查询并返回原始数据?
我可以通过API执行MBQL查询,分两步完成通过Metabase Web应用UI创建问题的中间步骤,然后查询问题,但我还没有想到如何将MBQL与REST相结合API只需一步。
我想通过在API请求中使用MBQL而不是UI生成的问题来完成一些项目:
以下是有关如何执行两步流程的一些信息。
两步流程
这两步过程是:
步骤1)通过Web UI创建问题
登录Web应用程序,然后单击顶部菜单中的“新问题”按钮。
一旦你的问题被创建,你将被引导到如下的URL,其中:question-id
是一个整数。
GET /question/:question-id
请注意此值,并在下一步中将其用于API。
步骤2)问题数据的REST API
API对Web UI“问题”对象使用术语“卡”,因此对以下Card API进行API调用:
POST /api/card/:card-id/query/:export-format
在此网址中:
:card-id
是来自Web UI URL的:question-id
:export-format
可以是json
或其他格式API文档中提供了有关API的更多信息:
https://github.com/metabase/metabase/blob/master/docs/api-documentation.md
题
有没有办法直接通过在没有预先存在的问题/卡的情况下在API请求中发送MBQL查询来执行此操作?
通过原始SQL和MBQL查询都可以通过POST /api/dataset/
API获得。端点的文档提到了query
请求定义,但没有定义它。
我最后做了一些研究并询问了Metabase Discourse论坛。以下示例由sbelak发布。
原始SQL查询
我能够使用go-metabase SDK成功创建本机SQL查询。
POST /api/dataset
Content-Type: application/json
{
"database": 1,
"native": {
"query": "select count(*) from ORDERS"
},
type: "native"
}
笔记:
POST /api/dataset
没有设置响应Content-Type
标题。- 有一个
POST /api/dataset/json
端点,但似乎不接受native
属性。
MBQL
POST /api/dataset
Content-Type: application/json
{
"database": 1,
"type": "query",
"query": {
"source-table": 2,
"breakout": [
[
"binning-strategy", ["field-id", 14], "default"
]
],
"aggregation": [["avg", ["field-id", 17]]]
}
}