2019年4月

metabaseが便利らしい

metabaseが便利らしい」と小耳に挟んだことをふと思い出しました。
テストや調査業務でExcel等の数値と睨めっこしていたことがきっかけです。
グラフとかで見ると変化や傾向が見えやすいのになぁと思い、ふと思い出しました。

ただ、便利「らしい」ことしかわからなかったので、実際に触れてみていきたいと思います。

今回は以前の投稿記事「2ファイルでLAMP開発環境構築」で構築した環境にmetabaseを導入していきます。

よって各バージョンは以下のようになります。

vagrant 2.2.3
virtualBox 6.0
centos 7.2
php(今回は不要) 7.3
mysql 8.0
java(OpenJDK) 8(1.8)
metabase 0.32.1

1. metabaseとは


metabaseはデータを可視化してくれるOSSです。
DBのデータから、Excelのようにグラフを作成できすることができるので、データ解析に(おそらく)役立ちます。
加えて、直感的に使用できるクエリビルダーが組み込まれており、sqlの知識がなくても調査や集計を簡易に行うことができるのではと…。
もちろんsqlを直接叩いて結果を描画することも可能です。
SQLite、MongoDb、Postgresなど複数対応しておりますが、私が業務で最も使用するMysqlを対象に紹介を行っていきます。


2. 下準備


metabaseを起動させるため、OpenJDKをインストールしましょう

$ sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

公式ページから執筆時点で最新であるv0.32.1をダウンロードし、適当な場所に設置します

https://www.metabase.com/docs/latest/getting-started.html

https://www.metabase.com/start/jar.html


今回はサンプルとして、テスト用DB/テーブルを作成し、適当なレコードをセットしておきます。

mysql> CREATE DATABASE metabase DEFAULT CHARACTER SET utf8;

また、テスト用テーブルを作成し、データを放り込んでおきます。
metabase.item_m
metabase.boss_m
metabase.user_t
metabase.user_l_boss_drop_item

※解析対象のDBがある場合は不要です

なお、Mysql8.0.4以降の場合、デフォルトで認証方式が caching_sha2_password となっています。
metabaseでは非対応となっており、DBへの接続が失敗してしまいますので、以下のようにして接続用のユーザを作成しておくと良いでしょう。

mysql> create user metabase@localhost identified with mysql_native_password by 'Sr47f*dkdk3';
g
mysql> grant select on *.* to 'metabase'@'localhost';
mysql> flush privileges;

3. metabaseを起動させてみる


「下準備」でダウンロードしたjarを実行しましょう

$ sudo java -jar metabase.jar

こんな感じに起動が完了したら、
http://***.***.**.**:3000/setup/
にアクセスします。


こんな感じの画面が出ればOKです。指示に従って初期登録を行っていきましょう。

①②③と3ステップあります。

②では参照するDBを登録していきます。

本記事では、下準備で登録しておいた
db:metabase
user:metabase
pass:Sr47f*dkdk3
で登録します

ページ下部の「データ」項目に先程設定したものが表示されていればOKです。


もし追加されていない場合は、
設定>管理者>データベースを追加する
から再登録を行いましょう。
※参照先のDBの追加したい場合もこの手順で行います


4. metabaseをちょっと触ってみる


とりあえず、実験で
user_l_boss_drop_item
というテーブルの中身を見てみます。
(ゲームアプリのボスドロップログテーブルを適当に作ってみました。三か月分のデータをこれまた適当に突っ込んでおります)

初期表示時点でいい感じにグラフができており、前月比なども自動で出力してくれていますね。
縦軸がアイテムドロップ数、横軸が日付(Y-m-d)となっており、
累計(Total User L Boss Drop Item)の日ごとの数値が確認できます。

クエリビルダも触ってみます。

絞り込みなんかも直感的に操作できます。

とりあえず全件表示してみました。


idだけだとなんのアイテムがドロップしているのかよくわからんので、アイテム名を出してみます。
joinが必要なので、直接sqlを叩きます。

結果が表示されました。(アイテム名もこれまた適当です)

5. 実際にmetabaseに触れてみて

ちょっと触ってみましたが、なんだか色々できそうです。
実際に触ってみて「metabaseが便利らしい」ということは実感できました。
使い方次第でデータ解析を効率よく行えのではないかと。
まだまだ操作が不慣れなので、描画するグラフを変えてみたり、ダッシュボードをカスタマイズしてみたりと今後も色々試していけたらと思います。

以上、phpエンジニアのmetabase紹介でした。乱文長文、失礼しました。

2016/09/19Database
1