トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

metabaseでAPI経由でDBアクセスする

参考

https://www.metabase.com/docs/latest/api-documentation.html
https://discourse.metabase.com/t/where-to-get-api-query-schema-specification/5483/5
https://qiita.com/macoril/items/2e3fff2785a9d3b80ad8
https://www.cdatablog.jp/entry/postmanaccesstokenrefresh

概要

postman等で色々なDBに対してAPI経由でDBアクセスしたいことがある。
MySQLならXmysqlがあるけど、SQL Serverとかだとなかなか良いのがない。
metabaseには、API経由でDBアクセスしたり、SQLクエリを実行したいする機能があるのでそれを使うと便利なときがある。

基本的な使い方

まずは普通にmetabaseを使えるようにする


session-idの発行

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

# -> {"id":"3e7b88f0-49db-44ac-bc09-b48679d60d06"}

SQLを発行する

 curl -X POST \
   http://localhost:3000/api/dataset \
   -H "Content-Type: application/json" \
   -H "X-Metabase-Session: 3e7b88f0-49db-44ac-bc09-b48679d60d06" \
   -d '{
   "database": 1,
   "native": {
     "query": "SELECT COUNT(*) FROM Orders"
   },
   "type": "native"
 }'

databaseは、metabaseに登録されているデータベースのID。
metabaseの画面で確認するかAPIでdatabaseを取得すれば確認できる。

SQLを発行する(JSON形式で受け取る)

curl -X POST \
   http://localhost:3000/api/dataset/json \
   -H "Content-Type: application/x-www-form-urlencoded" \
   -H "X-Metabase-Session: 3e7b88f0-49db-44ac-bc09-b48679d60d06" \
   -d 'query={
   "database": 1,
   "native": {
     "query": "SELECT COUNT(*) FROM Orders"
   },
   "type": "native"
 }'

形式は、JSONやCSV等を指定できる。
Content-Typeには、application/x-www-form-urlencoded を指定する。

Postmanで使う場合

session_idの発行

pre-requestで以下のような処理をする

 pm.sendRequest({
     url: 'http://dev.xxx.com:4001/api/v1/portal/account/tax-login',
     method: "post",
     body: {
       "username": "user@example.com", "password": "metapass"
     },
     header: {
       'Content-Type': 'application/json'
     }
 },function (err, res) {
   if(pm.response.to.be.ok && pm.response.to.have.jsonBody("id")){
     let json = JSON.parse(responseBody)
     pm.globals.set('metabase-session-id', json.id)
   }
 });


[カテゴリ: データベース]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2022年04月11日 21時41分27秒