Superset을 사용해보자
SuperSet이란?
Apache(글 작성 기준 아직은 인큐베이팅)에 속한 오픈소스 웹기반의 데이터 시각화 툴입니다. 소개글엔 직관적이고 예쁘게 시각화를 할 수 있고, 가볍고 빠르다고 합니다. 자세한 사항은 Github Repository를 참고해주세요.
설치 및 실행
준비물
-
Python - Python 2.7과 3.4에서 테스트가 완료되었다고 한다. Airbnb에서는 2.7을 사용중이며, 2.6 이하는 지원 할 예정이 없다고 함.
-
virtualenv - 당연히 있겠죠? (라고 썼는데 막상 없어서 글쓰다가 pyenv설치함)
-
OS Dependencies: Cryptography 위해 운영체제 Dependency 가 존재한다고 한다. 각 운영체제에 맞게 다음 명령어를 입력해준다.
-
Ubuntu and Debian
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
-
Ubuntu 16.04의 경우 아래 명령어 또한 추가해준다.
sudo apt-get install build-essential libssl-dev libffi-dev python3.5-dev python-pip libsasl2-dev libldap2-dev
-
-
Fedora and RHEL
sudo yum upgrade python-setuptools sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel
-
OSX
brew install pkg-config libffi openssl python env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography==1.9 # 문서에는 안 나와있는 내용인데, 진행중 에러가 발생하여 추가함. pip install contextlib2
-
설치와 초기화
진행에 앞서 공식 문서에는 나와 있지 않지만, 아래의 명령어를 입력하고 시작한다. 현재 dependency 관련 문제가 있는 듯 보인다.
pip install 'Flask<1.0.0'
pip install 'SQLAlchemy-Utils~=0.0,<0.33'
다음 명령어를 입력해준다.
# Superset 설치,
pip install superset
# 어드민 유저를 생성한다. (contextlib2 모듈 임포트 관련 에러가 발생하면 pip로 설치해준다.)
fabmanager create-admin --app superset
# DB 초기화
superset db upgrade
# 가지고 놀 데이터 예제 가져오기
superset load_examples
# 퍼미션과 기본적인 롤 초기화
superset init
# 기본적으로 8088 포트로 올라가며, 다른 포트 사용 원할시 -p 옵션을 사용한다.
# superset runserver -d
사이트 접속
http://localhost:8088 로 접속하여, 아까 입력했던 어드민 정보로 로그인 한다. 로그인 하면 아래와 같은 화면을 볼 수 있다.
아까 예제 가져오기를 했기 때문에 기본적인 샘플데이터가 있고, 따로 DB를 설정하기 위해선 아래와 같은 방법으로 진행한다.
DB 설정
상단 메뉴에서 [Sources] -> [Databases] 클릭
우측 상단의 + 버튼 클릭
Database 이름을 입력한 뒤 MySQL 기준으로 다음과 같이 URI를 설정해준다.
mysql://{username}:{password}@{hostname}/{database_name}
Test Connection을 눌러서 정상적으로 연결 되었는 지 확인한뒤, Save를 눌러서 저장해준다.
같은 방법으로 [Datasources] -> [Tables] 에서 테이블을 등록해준다. Schema를 적는 칸이 있지만 Postgres, Redshift, DB2를 사용하지 않는다면 가볍게 무시해주고 Table Name만 적어준다.
마무리
사실 차트위주로 하고 싶었는데, 데이터 특성상 공개할 수 없는 면과 차트 관련은 어렵지 않게 할 수 있을 것 같아서 일단 생략한다.