Metabase API 使用示例

news/2024/10/23 9:26:31/

Metabase API

官网介绍:

Metabase Api

Api Documentation

1、登陆并获取会话令牌

POST /api/session/

用于登陆并获取令牌

PARAMS:

  • username value must be a non-blank string.

  • password value must be a non-blank string.

  • request

示例:

请求:

curl -X POST \-H "Content-Type: application/json" \-d '{"username": "person@metabase.com", "password": "fakepassword"}' \http://localhost:3000/api/session

返回:

 {"id":"38f4939c-ad7f-4cbe-ae54-30946daf8593"}

2、一般方式的查询接口(需认证)

POST /api/card/:card-id/query

需要认证的访问配置的报表(question,这里叫card)

PARAMS:

  • card-id 配置的报表的ID,是数字

  • parameters 查询参数

  • ignore_cache value may be nil, or if non-nil, value must be a boolean.

  • dashboard_id value may be nil, or if non-nil, value must be an integer greater than zero.

2.1、应用场景:

如果要修改前端页面,将metabase配置的报表,重新用自己的前端页面进行修改,那么可以使用这个API,通过自己写的前端,调用metabase提供的API获取报表查询数据结果(JSON)。

相对public的方式而言,这种加了权限验证,更加安全。(metabase的前端也是调用的这些接口)

2.2、具体示例(带查询条件):

由于Metabase不支持分页,是直接查出所有的。而在报表明细中通常会有使用分页进行展现。下面拿一个将分页作为查询条件的示例。

1)配报表

所以下面配置一个question(报表),将分页作为查询条件(平时)。

 

2)报表分享

然后将这个question进行分享,拿到UUID:8b630704-f23f-4745-9a81-f59d41240690

 

 

3)使用API进行访问

a) 调用登陆获取令牌

请求:

curl -X POST \-H "Content-Type: application/json" \-d '{"username": "xxx", "password": "xxx"}' \http://ip:3000//api/session

返回:

 {"id":"38f4939c-ad7f-4cbe-ae54-30946daf8593"}

b) 调用API查询

uuid就是分享出来的UUID

parameters参数,就是带入查询条件,这里是start=0,pagesize=20

请求:

curl -X POST \-H "Content-Type: application/json" \-H "X-Metabase-Session: 38f4939c-ad7f-4cbe-ae54-30946daf8593" \-d '{    "ignore_cache": true,\"parameters": [{\"type": "category",\"target": ["variable", ["template-tag", "start"]],\"value": "0"\}, {\"type": "category",\"target": ["variable", ["template-tag", "pagesize"]],\"value": "20"\}]}' \http://ip:3000/api/card/104/query

从metabase抓包也可以拿到parameters。

返回:

 {"data": {"rows": [["IC21102700003"],["IC21102700016"],["IC21102700015"],["IC21102700009"],["IC21102700014"],["21102600005"],["IC21102700005"],["IC21102700002"],["IC21102800003"],["IC21102900003"],["21102600006"],["IC21102900002"],["IC21102700006"],["IC21110500004"],["IC21110500007"],["IC21102900008"],["WG21110300003"],["IC21110500002"],["IC21102700004"],["IC21102700008"]],"cols": [{"display_name": "QUESTION_BUSI_ID","source": "native","field_ref": ["field-literal","QUESTION_BUSI_ID","type/Text"],"name": "QUESTION_BUSI_ID","base_type": "type/Text"}],"native_form": {"query": "","params": []},"results_timezone": "Asia/Shanghai","results_metadata": {"checksum": "r+TtQmdTF+/hnugKE9fV1g==","columns": [{"base_type": "type/Text","display_name": "QUESTION_BUSI_ID","name": "QUESTION_BUSI_ID","special_type": null,"fingerprint": {"global": {"distinct-count": 20,"nil%": 0.0},"type": {"type/Text": {"percent-json": 0.0,"percent-url": 0.0,"percent-email": 0.0,"percent-state": 0.0,"average-length": 15.0}}}}]},"insights": null},"database_id": 2,"started_at": "2022-04-24T11:41:22.412+08:00","json_query": {"constraints": {"max-results": 10000,"max-results-bare-rows": 2000},"type": "native","middleware": {"js-int-to-string?": true},"native": {"query": "xxx","template-tags": {"start": {"id": "c7ab1e98-2e91-2698-0114-4a87f0ae35dc","name": "start","display-name": "Start","type": "number","default": null},"pagesize": {"id": "1281cd3e-4941-f119-b0b0-8a22945b5135","name": "pagesize","display-name": "Pagesize","type": "number","default": null}}},"database": 2,"parameters": [{"type": "category","target": ["variable",["template-tag","start"]],"value": "0"},{"type": "category","target": ["variable",["template-tag","pagesize"]],"value": "20"}],"async?": true,"cache-ttl": null},"average_execution_time": null,"status": "completed","context": "question","row_count": 20,"running_time": 27
}

3、public方式的查询接口(免认证)

GET /api/public/card/:uuid/query

不需要认证的访问分享出来的报表(question,这里叫card)

PARAMS:

  • uuid public出来的uuid

  • parameters 请求参数,可以添加过滤条件

3.1、应用场景:

如果要修改前端页面,将metabase配置的报表,重新用自己的前端页面进行修改,那么可以使用这个API,通过自己写的前端,调用metabase提供的API获取报表查询数据结果(JSON)。

3.2、具体示例(带查询条件):

由于Metabase不支持分页,是直接查出所有的。而在报表明细中通常会有使用分页进行展现。下面拿一个将分页作为查询条件的示例。

1)配报表

所以下面配置一个question(报表),将分页作为查询条件。

2)报表分享

然后将这个question进行分享,拿到UUID:8b630704-f23f-4745-9a81-f59d41240690

3)使用API进行访问

1、uuid就是分享出来的UUID

2、parameters参数,就是带入查询条件,这里是start=0,pagesize=20

请求:

http://ip:3000/api/public/card/8b630704-f23f-4745-9a81-f59d41240690/query?parameters=[{"type":"category","target":["variable",["template-tag","start"]],"value":"0"},{"type":"category","target":["variable",["template-tag","pagesize"]],"value":"20"}]

响应:

{"data":{"rows":[
["IC21102700003"],
["IC21102700016"],
["IC21102700015"],
["IC21102700009"],
["IC21102700014"],
["21102600005"],
["IC21102700005"],
["IC21102700002"],
["IC21102800003"],
["IC21102900003"],
["21102600006"],
["IC21102900002"],
["IC21102700006"],
["IC21110500004"],
["IC21110500007"],
["IC21102900008"],
["WG21110300003"],
["IC21110500002"],
["IC21102700004"],
["IC21102700008"]
],
"cols":[{"display_name":"QUESTION_BUSI_ID","source":"native","field_ref":["field-literal","QUESTION_BUSI_ID","type/Text"],"name":"QUESTION_BUSI_ID","base_type":"type/Text"}],"insights":null,"results_timezone":"Asia/Shanghai"},
"json_query":{"parameters":[{"type":"category","target":["variable",["template-tag","start"]],"value":"0"},{"type":"category","target":["variable",["template-tag","pagesize"]],"value":"20"}]},"status":"completed"}

http://www.ppmy.cn/news/124713.html

相关文章

hdu 4740

题目链接 老虎左拐&#xff0c;老鼠右拐&#xff0c;碰到不能走的拐一次&#xff0c;如果还不能走就停下&#xff0c;自己走过的不能走&#xff0c;求相遇的坐标或-1 一个停下之后&#xff0c;另一个还可以走 #include <cstdio> #include <cstring> using namespa…

HDU 4714

HDU 4714 题意&#xff1a; 给出一棵树&#xff0c;设定切断一条边花费跟连接一条边的花费均为1&#xff0c;问将这棵树变为一个圆的最小花费。 钻牛角尖了&#xff0c;钻牛角尖了&#xff0c;一直去抓树的直径&#xff0c;这个时候就体现出队友的重要性了&#xff0c;给了我…

更新后改写m3u8文件 钉钉回放视频下载

文章目录 前言一、m3u8文件的修改方式二、下载步骤1.下载m3u8文件2.修改数据 后记 前言 今天下载钉钉群的网课&#xff0c;发现以往使用的m3u8下载方式没法正常下载了&#xff0c;经过观察发现是钉钉对m3u8文件进行了改写&#xff0c;导致正常的下载器直接下载出错。 下载m3u8…

HDU 4734

比赛的时候先写了个裸的数位dp T掉了&#xff0c;然后加加剪枝过了 #include <cstdio> #include <cstring> using namespace std;int len,lim; int num[20],mi[20],mii[20]; int dp[10][5000];int dfs(int pos,int sta,int doing){if(pos-1){if(sta<lim) return…

IN4007和IN4148的用途

IN4007的用途 二极管1n4001 1n4002 1n4003 1n4004 1n4005 1n4006 1n4007正向电流1A 二极管1N4007的最大反向电压是1000V 二极管1n4001 1n4002 1n4003 1n4004 1n4005 1n4006 1n4007常用作整流 IN4148的用途 in4148是硅材料小功率开关二极管 in4148的封装,贴片和插件都有,如贴片…

javaScript对账号卡号进行脱敏处理

导读&#xff1a;一般8位以上账号&#xff0c;显示首尾各4位&#xff0c;中间固定用8位*代替&#xff1b;8位及以下账号&#xff0c;显示首尾各2位&#xff0c;中间固定用8位*代替。 这里简单处理一下16位及以上的账号&#xff0c;卡号&#xff0c;其它的情况同理&#xff0c; …

实战 | HCL模拟器实现交换机DHCP配置案例

实战 | HCL模拟器实现交换机DHCP配置案例 https://mp.weixin.qq.com/s/D2h5uHOxJc5YlrFJxphlNQ 组网及说明 现有一台S5820交换机&#xff0c;连接两个不同的局域网&#xff0c;现要求两个不同的局域网通过DHCP自动获取IP地址后实现互联互通。 网络拓扑图如下&#xff1a; …

flashcp: verification mismatch at 0x0

# flashcp rootfs.bin /dev/mtd3 flashcp: verification mismatch at 0x0 # flashcp -v rootfs.bin /dev/mtd3 Erasing block: 75/75 (100%) Writing kb: 4745/4745 (100%) Verifying kb: 0/4745 (0%) flashcp: verification mismatch at 0x0 Flash_eraseall 擦除很快…