[ データ可視化ツール]MetabaseをDocker上で構築してRedshiftへ接続する

[ データ可視化ツール]MetabaseをDocker上で構築してRedshiftへ接続する

はじめに

データアナリティクス事業本部のkobayashiです。

前回の記事でRedashを調査している際に同じOSSとしてMetabaseと比較される情報が多く見つかりました。Metabaseは気になっていたのですが今まで触れたことがなかったので前回と同じくDocker環境で新規インストールして動かしてみました。またデータソースも前回と同様にMetabaseとRedshiftを接続してみたのでまとめます。

以前の記事

[ データ可視化ツール]RedashをDocker上で構築してRedshiftへ接続する

環境

  • macOS Mojave
  • Docker version 19.03.1
  • docker-compose version 1.24.1
  • Metabase v0.33.4

Metabase

Metabaseは「Metabase is the easy, open source way for everyone in your company to ask questions and learn from data.」との通り管理者がデータソースを設定すればユーザーが簡単にデータにアクセスできるデータ可視化ツールです。データソースに関してもRedash同様に有名所のデータソースに対応しています。データソースの設定も各データソースごとに入力項目が切り替わるので簡単に設定できます。 データを表示するだけなら「簡単な質問」、テーブルを組み合わせてデータを表示したいなら「カスタム質問」を使えばSQLの知識がなくてもデータ抽出が簡単に行なえます。また「ネイティブクエリ」というクエリエディタがあり入力補完機能もあるのでSQLも簡単に書けます。 また可視化するツールとしても一般的なグラフは揃っています。

これからBIツールを導入してみたいがまずはBIツールというものを触ってみたいという場面では選択肢の一つになるかと思います。

Metabase公式

GitHub - metabase/metabase

Metabase is the easy, open source way for everyone in your company to ask questions and learn from data.

Features - 5 minute setup (We're not kidding) - Let anyone on your team ask questions without knowing SQL - Rich beautiful dashboards with auto refresh and fullscreen - SQL Mode for analysts and data pros - Create canonical segments and metrics for your team to use - Send data to Slack or email on a schedule with Pulses - View data in Slack anytime with MetaBot - Humanize data for your team by renaming, annotating and hiding fields

使い方の流れとしては、

  1. データソースを設定
  2. 「簡単な質問」「詳しい質問」「ネイティブクエリ」でクエリを作成
  3. グラフ・テーブルなどでクエリを可視化
  4. ダッシュボードを作成

という形になります。

インストール

前回Redashで作成したディレクトリ構成と同じ様な形にしたいので以下のディレクトリ構造を最終的に想定しています。

~/Documents/Docker/metabase
├── docker-compose.yml
├── env
├── metabase-data
└── postgres-data
└── postgres-data # Redashのデータを保持するpostgres領域
    ├── PG_VERSION
    ├── base
    │   ├── 1
    ....
    └── postmaster.pid

セットアップファイルの作成

  • docker-compose.yml
  • env

の2つのファイルを~/Documents/Docker/metabaseに作成します。

  • docker-compose.ymlの内容

metabase/metabaseとpostgres:9.5-alpineのイメージを使います。環境変数はenvで管理したいので別ファイルを参照します。

$ cat docker-compose.yml
version: "2"
services:
  metabase:
    image: metabase/metabase
    env_file: ./env
    volumes:
      - ./metabase-data:/metabase-data
    ports:
      - 3000:3000
    depends_on:
      - postgres-mb

  postgres-mb:
    image: postgres:9.5-alpine
    env_file: ./env
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    ports:
      - 5432:5432

  • envの内容
$ cat env
# for metabase
MB_DB_FILE=/metabase-data/metabase.db
MB_DB_TYPE=postgres
MB_DB_DBNAME=metabase
MB_DB_PORT=5432
MB_DB_USER=postgres
MB_DB_PASS=postgres_user_pass
MB_DB_HOST=postgres-mb

# for postgres
POSTGRES_DB=metabase
POSTGRES_PASSWORD=postgres_user_pass

インストールの実行

あとはあとはコンテナの作成と開始をするのでいつものコマンドを実行します。

$ docker-compose up -d

Creating network "metabase_default" with the default driver
Creating metabase_postgres-mb_1 ... done
Creating metabase_metabase_1    ... done

これでMetabaseが立ち上がるのでhttp://localhost:3000へアクセスすればセットアップ画面に遷移します。

Metabaseと接続

1.Metabaseへアクセスすると以下のような画面になるので 「開始しましょう」をクリックしユーザ登録へ進みます。

2.ユーザ情報を入力し次へ進みます。

3.つぎにデータソースの登録を行います。 仕様留守データベースタイプをクリックするとMetabaseで接続可能なデータソースが選択できるのでRedshiftを選択すると必要な入力欄が現れるので接続情報を入力します。

4.データソースを登録するとトップ画面へ遷移し、以下の様な画面になります。 Metabaseの便利な機能として「データに基づく自動探査(X-RAY)」というものがあります。これはデータソースを登録するとデータベースからスキーマ、テーブル情報を取得して表やグラフが自動生成される機能です。

5.サンプルで登録したEventテーブルに進んでみると以下の様な画面とグラフが表示されます。テーブルに登録されいているカラムの属性やデータから最適な表とグラフが自動生成され表示されます。またフィルター項目も自動的に追加されているので日付形式のカラムなどがある場合はフィルターで絞り込んでデータを見ることもできます。

「データに基づく自動探査(X-RAY)」だけでもデータの特徴を確認することができますが、より詳細にデータを見たい場合は「カスタム質問」でSQLを使う事なくデータの結合、カスタムカラム、計算カラムの追加が行えます。もちろんSQLを使ってクエリを書く「ネイティブクエリ」の機能もあります。

まとめ

MetabaseはRedashと同じくOSSであり無料で使えるデータ可視化ツールです。こちらもRedash同様に試しに可視化ツールを導入してみたい場合には非常に良いと思います。 また「データに基づく自動探査(X-RAY)」によりデータソースを接続するだけで各テーブルのデータが可視化されますし、「カスタム質問」でSQLがわからなくても結合や計算列を追加できます。

とても使い勝手が良いのでまた引き続き使ってみて使用感などをお伝えしたいと思います。

最後まで読んで頂いてありがとうございました。