手元のCSVファイルのデータを手っ取り早く可視化ツールで見たい時などにご参考にしていただければ幸いです。
「Metabase」は無料で使えるOSSのデータ可視化ツールです。
(「Kibana」や「Grafana」などと競合のようです)
構成
ローカルで環境を構成します。(ubuntuおよびwindowsで動作確認済み)
可搬性を持たせたかったため、docker(docker-compose)を利用しました。
流れ
大まかな流れは以下の通りです。
- 「Metabase」と「PostgreSQL」をDockerで環境構築する
- CSVファイルからDDL推測ツール「ddlgenerator」を利用してDDLを作成する
- 作成したDDLでPostgreSQLへデータ投入してMetabaseから参照する
詳細
ディレクトリ構成
.
├── postgres
│ └── Dockerfile
├── db_data
├── metabase
├── csv_data
│ └── {your_file}.csv
└── docker-compose.yml
- 「db_data」「metabase」はそれぞれPostgreSQLとMetabaseのデータ永続化用です(Windows除く)
- 「csv_data」には可視化したいCSVファイルを置いてください(PostgreSQL環境の「/tmp」にマウントされます)
Dockerfile
postgres:11.4-alpineにPython製のDDL推測ツール「ddlgenerator」をインストールしています。
ddlgeneratorは、CSVファイルから自動的にDDLを作成しデータ投入するSQLを生成してくれます。
FROM postgres:11.4-alpine
RUN apk --update-cache \
add python3 \
&& pip3 install --upgrade pip \
&& pip3 install ddlgenerator
docker-compose.yml
version: "3"
services:
metabase:
container_name: metabase
image: metabase/metabase:v0.34.3
ports:
- "3000:3000"
links:
- postgres
volumes:
- ./metabase:/metabase.db
postgres:
container_name: postgres
build: postgres
ports:
- "5432:5432"
environment:
TZ: "Asia/Tokyo"
POSTGRES_DB: metabase
POSTGRES_PASSWORD: metabase
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
volumes:
- ./db_data:/var/lib/postgresql/data
- ./csv_data:/tmp
Linuxでは上記のファイルでうまく行きましたが、Windowsだとディレクトリの権限の問題でこのままではうまく行きませんでした。
Windowsの場合は下記の記事を参考にdocker-compose.ymlを編集しました。
metabase&postgresでそれぞれボリュームを予め作成して、そのボリュームにマウントする形です。
実行手順
- 起動
$ docker-compose up -d
- PostgreSQL環境へ入る
$ docker-compose exec postgres /bin/ash
- DDLを生成する
# cd /tmp
# ddlgenerator -i postgresql {your_file}.csv > {your_file}.sql
- SQLの発行
# psql -U postgres -d metabase -f {your_file}.sql > /dev/null
- ブラウザアクセス
http://localhost:3000 へアクセス
ユーザ登録後に、下記の通りデータベースへの接続設定をしてください。
※パスワードはdocker-compose.ymlに記載した「metabase」です。
自動探査(X-ray)である程度自動的に可視化してくれます。
もちろん自分でSQLを画面から作成したり、テーブル結合をGUIから実施することも可能です。
Metabase自体の良い所や足りない所、その他OSSのBIツール比較に関しては下記の記事を参考にさせていただきました。