17
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CSVファイルを「Metabase」で可視化した話

Last updated at Posted at 2020-03-27

手元のCSVファイルのデータを手っ取り早く可視化ツールで見たい時などにご参考にしていただければ幸いです。

Metabase」は無料で使えるOSSのデータ可視化ツールです。
(「Kibana」や「Grafana」などと競合のようです)

構成

ローカルで環境を構成します。(ubuntuおよびwindowsで動作確認済み)
可搬性を持たせたかったため、docker(docker-compose)を利用しました。
metabase.png

流れ

大まかな流れは以下の通りです。

  1. 「Metabase」と「PostgreSQL」をDockerで環境構築する
  2. CSVファイルからDDL推測ツール「ddlgenerator」を利用してDDLを作成する
  3. 作成した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を生成してくれます。

Dockerfile
FROM postgres:11.4-alpine
RUN apk --update-cache \
    add python3 \
 && pip3 install --upgrade pip \
 && pip3 install ddlgenerator

docker-compose.yml

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 for Windowsでpostgresのデータマウントができない人へ

実行手順

  1. 起動
$ docker-compose up -d
  1. PostgreSQL環境へ入る
$ docker-compose exec postgres /bin/ash
  1. DDLを生成する
# cd /tmp
# ddlgenerator -i postgresql {your_file}.csv > {your_file}.sql
  1. SQLの発行
# psql -U postgres -d metabase -f {your_file}.sql > /dev/null
  1. ブラウザアクセス

http://localhost:3000 へアクセス

ユーザ登録後に、下記の通りデータベースへの接続設定をしてください。
※パスワードはdocker-compose.ymlに記載した「metabase」です。
metabase_settings.png

自動探査(X-ray)である程度自動的に可視化してくれます。
もちろん自分でSQLを画面から作成したり、テーブル結合をGUIから実施することも可能です。
metabase_example.png
Metabase自体の良い所や足りない所、その他OSSのBIツール比較に関しては下記の記事を参考にさせていただきました。

OSSのデータ可視化ツール「Metabase」が超使いやすい

参考記事

17
20
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?