背景と目的
実は、BIツール詳しくありません。
なので、勉強するためにまず環境を作ることから始めています。
先日は、Redashの環境をDockerで作りました。
今回は、Supersetの環境をDockerで作ります。
今後は、AWSのQuickSight、GoogleのData StudioとTableauを確認して比較評価出来ればと思います。
Dockerfileを作成するのも面倒な人用に、Docker Cloudにイメージをアップしました。
バージョンは、0.22.1です。
$ docker run -d -p 8088:8088 maedamikio/superset
あとは、ブラウザで localhost を開いて、
Username: admin
Password: admin
でOKです!!!
概要
Supersetとは?
対応データベース
インストール手順の確認
Dockerfileの作成
イメージの作成とコンテナの起動
Supersetとは?
Airbnbを利用している方いると思います。
Supersetは、Airbnbから公開されているBIツールです。
GitHubを確認すると興味深い画像が多数あります。
参考
https://github.com/airbnb/superset
対応データベース
有名なデータベースは対応してます。さらに、SqlAlchemy経由でデータベースにアクセス出来るのでさらに幅が広がりますね。
- MySQL
- Postgres
- Presto
- Oracle
- SQLite
- Redshift
- Microsoft SQL Server
- Impala
- SparkSQL
- Greenplum
SqlAlchemy経由
- MySQL
- Postgres
- Oracle
- SQLite
- Microsoft SQL Server
- Firebird
- Sybase
- IBM DB2、Informix
- Redshift
- EXAsolution
- MonetDB
- Snowflake
- BigQuery
インストール手順の確認
パッと見た感じ、簡単そうでした。
そして、GitHubにDockerへのリンクがあり、こちらを使えば良いのですが、Dockerfileを見た所、最低限のデータベースのみ追加されている様です。
RedshiftとBigQueryを今後の検証で利用したいので、自分用にDockerfileを作成することにしました。
参考
https://hub.docker.com/r/amancevice/superset/
Dockerfileの作成
追加したデータベースのライブラリは以下です。
- MySQL
- Postgres
- Presto
- SQLite
- Redshift
- Microsoft SQL Server
- Impala
- SparkSQL
- Greenplum
- BigQuery
Dockerfile
FROM ubuntu:latest
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
RUN apt-get update && apt-get install -y \
build-essential \
curl \
libffi-dev \
libldap2-dev \
libmysqlclient-dev \
libsasl2-dev \
libssl-dev \
python3-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN curl -sL https://bootstrap.pypa.io/get-pip.py | python3
RUN pip install \
impyla \
mysqlclient \
psycopg2 \
pyhive \
pymssql \
sqlalchemy-bigquery \
sqlalchemy-redshift \
superset
RUN fabmanager create-admin \
--app superset \
--username admin \
--firstname admin \
--lastname user \
--email admin@fab.org \
--password admin
RUN superset db upgrade
RUN superset load_examples
RUN superset init
EXPOSE 8088
CMD ["superset", "runserver"]
イメージの作成とコンテナの起動
イメージの作成は、まあまあ時間がかかります。
$ docker build -t superset .
コンテナの起動も、まあまあ時間がかかります。
起動後も動作がもたつきます。本格的に利用するにはスペックが必要ですね。
$ docker run -d -p 8088:8088 superset
まとめ
- Dockerでイメージを作成しておけば、必要になったらコンテナを起動して、終わったら削除でスッキリできますね。環境を汚さなくて済むのが精神衛生的に嬉しいです。
- ユーザ管理もしっかりしていて、 以下などが利用できるそうです。本格的に高スペックサーバを用意して、ユーザで共有して利用するときは重要ですね。
- OpenID
- LDAP
- OAuth
- REMOTE_USER through Flask AppBuiler