Apache Superset 세팅

2019-04-26

Apache Superset

Apache Superset은 business intelligence를 위한 대시보드 툴입니다. 지원하는 data source도 많고 대시보드 구성에 필요한 일반적인 기능들도 다 제공하고 있어서, Superset을 이용해서 쉽게 대시보드를 구성해 볼 수 있습니다.

설치 및 실행화면

Reference: Superset 설치 참고

Docker 이미지를 사용하지 않고 pip으로 직접 설치하는 경우, 공식 문서에 나와있는 아래 스크립트를 따라하면 쉽게 설치할 수 있습니다.

# Install superset
pip install superset

# Create an admin user (you will be prompted to set a username, first and last name before setting a password)
fabmanager create-admin --app superset

# Initialize the database
superset db upgrade

# Load some data to play with
superset load_examples

# Create default roles and permissions
superset init

# To start a development web server on port 8088, use -p to bind to another port
superset runserver -d

이때, 사용하는 라이브러리(pandas, sqlalchemy)들의 버전 문제로 중간에 보통 아래와 같은 에러가 발생하기 때문에 superset 설치 후 다음과 같이 라이브러리 버전을 낮춰서 설치해주어야 중간에 에러가 발생하지 않습니다.

1. Admin 설정 시 에러

fabmanager create-admin --app superset

에서 admin 계정 생성 후 다음과 같이 에러가 발생합니다.

Was unable to import superset Error: cannot import name '_maybe_box_datetimelike' from 'pandas.core.common'

pandas version 문제로 발생하는 에러로 pandas 버전을 낮춰서 설치하면 잘 됩니다.

pip install pandas==0.23.4

2. DB initialization 시 발생하는 에러

superset db upgrade

마찬가지로 sqlalchemy 버전 문제로 아래와 같은 에러가 발생합니다.

"Can't determine which FROM clause to join "
sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, there are multiple FROMS which can join to this entity. Try adding an explicit ON clause to help resolve the ambiguity.

sqlalchemy 버전도 맞춰줍니다.

pip install sqlalchemy==1.2.18

실행 화면

설치 완료 후, 로컬 서버에서 테스트 대시보드를 불러온 화면

위 화면은 superset을 설치할 때 superset load_examples 이란 명령어로 예시 대시보드를 불러왔을 때 볼 수 있는 화면입니다.

Superset 공식 document에서 chart type에 따른 시각화 방법 (time column, metric 설정 등) 대한 내용이 부실하기 때문에 처음 사용 하시는 분이라면 예시 대시보드를 보면서 데이터를 시각화하는 방법을 익히는 것을 추천드립니다.

DB 연결

DB에 연결할 때는 사용할 DB 종류에 따라 superset이 설치된 환경에 설치해주어야하는 라이브러리들이 있습니다.

참고

해당하는 DB의 라이브러리를 표의 명령어를 사용하여 설치해주면 됩니다.