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

Metabase、まじでイケてる。

<a href="https://www.metabase.com/">
<img src=https://qiita-image-store.s3.amazonaws.com/0/103885/52194ae6-1c1c-59a1-840b-04a0824202b8.png>
</a>

https://github.com/metabase/metabase

1日で、Re:Dashから乗り換えました。

# Metabaseとは

OSSのデータ可視化ツール。Re:Dashとかと同じ類。
AWSとかに乗せて、誰もが見れるダッシュボードを作ったりする時に使うと、俺かっけーってなります。

# スクリーンショット

実際に社内で運用している様子をモザイク付きでお見せします。

毎日みているダッシュボード。これの4倍くらいの数値見てる。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103885/a3748639-602a-1314-ffd1-32316e7b5156.png)

ダッシュボードの編集。マウスで簡単に位置や大きさの変更ができる。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103885/3e7a3e8f-9daf-97a1-77f3-d8a352813504.png)

クエリビルダー的なやつがあり、グルーピングとか超絶便利。SQL書けない人でも、単一テーブルとかだったら余裕かと。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103885/bd79fc96-ba4c-3635-1665-1b70abf017f9.png)


グラフ化も簡単。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/103885/52194ae6-1c1c-59a1-840b-04a0824202b8.png)

SQLでのクエリ編集画面。ちゃんと補完してくれる。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103885/5b567d8e-0610-75f4-b1dd-36bba4c97ba9.png)


# Metabaseの良い所

- 見た目が格好いい。
- インストールが簡単。
    - openjdk-8-jdk入れて、jarファイル置くだけ。
- 豊富なデータソースに対応。MySQL・PostgreSQL・GoogleAnalytics・BigQueryなど。
- 結果を直感的にいい感じに可視化してくれ、グラフ種類が豊富。
    - 表
    - 時系列
    - パイチャート
    - バブルプロット
    - 単一の数値
- 結果のダッシュボード化も超直感的。
- SQLの補完が親切で書きやすい。
    - カラム名のFuzzy Matchingまでやってくれる
- Slack連携、ユーザー追加も超簡単。
    - [Slack連携時の注意点](https://qiita.com/acro5piano/items/5326197420f20429be9a) はある。
- ユーザーごとの権限を細かく設定できる
- 管理が楽
    - クライアント側で必要なのはブラウザだけ。（Re:Dashもそうだけど）
    - ユーザー追加が楽。勝手にパスワード発行してくれる。
    - ユーザーごとにできることの制限も簡単にできる。
    - Googleアカウントでのログイン、LDAP認証にも対応しているので、そこそこの規模の会社でも実用的
- 開発が活発
  - サーバーサイドがClojureっていうのも格好いい。
        - Pythonから移行したらしい。[Why we picked Clojure](https://medium.com/@metabase/why-we-picked-clojure-448bf759dc83)
  - フロントエンドはAngularからReactに移行した。そしてサクサク動く。

# Metabaseに足りないところ

- Slack通知（Pulseという機能）で、マルチバイト文字が使えない。
    - Issueはあるのでそのうち改善されるかも https://github.com/metabase/metabase/issues/2342
- たまに、長い間SQLを書いていると補完が変な挙動することがある。画面更新したら治る。
    - 画面更新しても、書きかけのSQLは消えないところもイケてる。
- ~~現時点では多言語対応していない。エンジニアだけの環境なら全く問題ないが。~~ 多言語対応した。

# その他OSSのBIツール比較

全部試した。

- Re:Dash
    - OSS版だとダッシュボードや図が寂しい。
    - Metabaseとできることは似ているが、「使いやすさ」が圧倒的に違う。レスポンシブなダッシュボード、SQL自動補完、グラフ化のオプションなど
- Superset
    - デモのデータを可視化するのは非常に良かったが、実際のデータを入れるのが難しかった。
    - Read OnlyなDBには使えない。
- Kibana ~~・Grafana~~ [@mashihara さんのご指摘](https://qiita.com/acro5piano/items/0920550d297651b04387#comment-391bf1731a38f8364e7d) の通り、 graphana は色々なソースに対応している
    - ダッシュボードがめっちゃかっこいいんだけど、DBがKVSやElasticsearch前提
    - MySQLに入ってるデータをSQLで取ってきて見たいんだよなーみたいな時に、いやまずRDBのスキーマをElasticsearchのインデックスにマッピングして同期しないと。
    - Elasticsearchのクエリを覚えるのが、学習コスト高い。

参考

https://www.astronomer.io/blog/six-open-source-dashboards/

日本語の記事が2017/11/04時点で少ないのはなんでだろう。

# 結論

Metabase最強。

# インストール

Ubuntu 16.04 ならこんな感じ。

```bash
sudo add-apt-repository 'ppa:openjdk-r/ppa'
sudo apt update
sudo apt install openjdk-8-jdk
sudo mkdir /opt/metabase
wget http://downloads.metabase.com/v0.27.1/metabase.jar -O /opt/metabase/metabase.jar
java -jar /opt/metabase/metabase.jar
```

デーモン化したいなら `nohup java -jar /opt/metabase/metabase.jar &` でいける。

[追記]

何度かインストールする機会があったので、環境構築をAnsibleで自動化しました。

https://github.com/acro5piano/metabase-playbook

Metabaseのインストールの他に、下記をやってくれます。

- 設定をMySQLに入れる（デフォルトはH2を使うのでバックアップなど面倒）
- Systemdでデーモン化

[/追記]

Dockerならコマンド一発。

```
docker run -d -p 3000:3000 --name metabase metabase/metabase
```

# 追記

好きすぎて、日本語ローカライズのプロジェクトに参加することにしました。これも完成したら敵無しか。

https://www.metabase.com/blog/Metabase-in-your-language/

# さらに追記

最近、 Redash の Version 5 をアップグレードする機会があり、こちらもけっこう便利そうでした。
UI が今っぽくなっていたり、クエリをテーブルのように使う機能が追加されていたりします。

内部的には、 SQLite 使ってテーブルのように問い合わせることができてます。 Google Spreadsheets との連携がすごかった。

アップグレードには苦労しましたがｗ

Python のマイグレーションに失敗して、ソースコード読んで手動で設定する必要がありました。いつか記事にしたい。

# さらにさらに追記

Metabase 0.30.4 にアップグレードしたら、セットアップしてからワンクリックでこんな画面になった・・・いけすぎててやばい。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103885/930c4587-fe12-b02d-7d67-0bc9847fd119.png)