Python을 통해 Metabase에 대한 질의 결과 가져오기

4822 단어 MetabasePython

개시하다


Pythhon으로 Metabase의 API를 두드려 Metabase가 만든 검색 결과를 얻는 방법의 노트입니다.

컨디션

$sw_vers
ProductName:    Mac OS X
ProductVersion: 10.13.6
BuildVersion:   17G14042
$python --version
Python 3.7.3

사전 준비


Metabase


설치 및 시작


공식 문서https://www.metabase.com/start/oss/에 설명된 대로
docker run -d -p 3000:3000 --name metabase metabase/metabase
이렇게 하면 Metabase가 현지 환경에서 실행될 수 있습니다.편리합니다!
다만, 일어서기에는 시간이 걸리기 때문에 docker logs -f metabase 시동이 끝나기 전에 보는 것이 좋다.
크롬과 같은 브라우저http://localhost:3000를 통해 액세스할 수 있습니다.

사용자 작성


사용자 이름: [email protected]
암호:P@ssw0rd
사용자를 작성합니다.

DB


원래는 기존 데이터베이스 정보에 접속해 접속한 뒤 조회를 제출하는 것이었는데 이번에는 샘플로 준비한 자료를 사용해야 해 건너뛰었다.

조회


질의 - 간단한 질문에서 질의를 작성합니다.
다음 그림과 같이 Metabase와 함께 제공되는 Sample Dataset의 ORDERS 테이블에서 출발하여 SELECT를 빠르게 진행합니다.

이때 조회한 번호는 URL의 /question/의 다음 번호(지금은 1)이다.
이 질의 번호를 사용하여 Pythhon에서 결과를 가져옵니다.

Metabase의 Pytohon 라이브러리


메타베이스는 API 공개https://www.metabase.com/docs/latest/api-documentation.html로, 여기에 요청하면 된다.
파이썬 라이브러리가 몇 개 있으니까 그걸로 해요.
내 조사에 의하면 현재 세 개의 창고가 있다.
#
라이브러리 이름
URL
최종 업데이트(2021년 1월 26일 기준)
1
metabase-api
https://pypi.org/project/metabase-api/ https://github.com/vvaezian/metabase_api_python
2021/01/18
2
metabasepy
https://github.com/mertsalik/metabasepy
2020/10/30
3
metabase-py
https://github.com/STUnitas/metabase-py
2020/5/28
이번에 사용한 것은 최근의 최종 업데이트metabase-api입니다.
나는 다른 프로그램 라이브러리를 시도하지 않았는데, 아마도 그곳이 비교적 편리할 것이다.pip install metabase-api에 설치합니다.

파이톤을 통해 획득

run.py 아래 내용에 따라 제작한다.
run.py
from metabase_api import Metabase_API
import pandas as pd

mb = Metabase_API('http://localhost:3000', '[email protected]', 'P@ssw0rd')

out = mb.post('/api/card/1/query/json')

df = pd.DataFrame.from_records(out)

print(df.head())
처음에는 메타베이스였어요.도메인 이름, 사용자의 메일 주소 및 암호를 통해 API를 인증합니다.
이후mb.post 조회 결과를 얻습니다.
이는 API 일람https://www.metabase.com/docs/latest/api-documentation.html#post-apicardcard-idqueryexport-format에 따른 것으로, 조회 결과를 얻기 위해 포스터/api/card/:card-id/query/:export-format로 치면 된다.:card-id는 조회번호입니다.
결과를 판다스의 DataFrame으로 만들고 싶어서 json 형식으로 형식을 지정했습니다.
out의 내용은 json의 List이기 때문에 pd.DataFrame.from_recordspandas의 DataFrame로 변환합니다.
$python run.py
실행한 후에 Metabase에 표시된 조회 결과를 얻었습니다.
   ID  USER_ID
0   1        1
1   2        1
2   3        1
3   4        1
4   5        1

좋은 웹페이지 즐겨찾기