是否有采用MBQL / SQL查询并返回原始数据的Metabase REST API?
我可以通过API执行MBQL查询,通过Metabase网络应用UI创建问题,然后查询问题的中间步骤,通过两步流程执行MBQL查询,但我还没有想到怎么做只需一步即可将MBQL与REST API结合使用。
我想通过在API请求中使用MBQL而不是UI生成的问题来完成一些项目:
以下是有关如何执行两步流程的一些信息。
两步流程
两步过程是:
步骤1)通过Web UI创建问题
登录网络应用并点击"新问题"顶部菜单中的按钮。
创建问题后,您将被定向到以下网址,其中:question-id
是整数。
GET /question/:question-id
请注意此值,并在下一步中将其用于API。
步骤2)问题数据的REST API
API使用术语" card"对于Web UI"问题"对象,因此对以下Card API进行API调用:
POST /api/card/:card-id/query/:export-format
在此网址中:
:card-id
是来自网络用户界面网址的:question-id
:export-format
可以是json
或其他格式API文档中提供了有关API的更多信息:
https://github.com/metabase/metabase/blob/master/docs/api-documentation.md
问题
有没有办法直接通过在没有预先存在的问题/卡片的情况下在API请求中发送MBQL查询来直接执行此操作?
答案 0 :(得分:0)
通过原始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]]]
}
}