ietty TECH blog

re:dashでBusiness Intelligence

こんにちは。iettyの大浜です。 ietty TECH blog初の記事ということで、先日社内に導入したSQLベースのBIツール、re:dashのインストールとダッシュボードの作成をご紹介します。

re:dashとは

re:dashはドキュメントによればデータ連携と可視化のためのオープンソースプラットフォーム(Open Source Data Collaboration and Visualization Platform)

現行版ではどちらかというと可視化の方に重点が置かれているようですが、折れ線、棒グラフ、ヒートマップなどの一通りの可視化の他、複数のデータソースからのデータを1つのダッシュボードでまとめて閲覧する、などは当たり前のようにサクッとできます。

f:id:takemi_ohama:20160413021340p:plain

BIツールとしての最大の特徴はSQLから直接グラフの生成を行うこと。

ETLとかOLAPとかMDXとか、細かいことは抜きにして「SQLを書いたらグラフが出来た」というアドバンテージは計り知れないと感じています。

いつかこういうのを作ろうと思ってたらもうあった、というぐらい「いい感じ」のツールです。

そのほか、re:dashの良いところ、足りないところについてはこちらも推奨。

インストール

AWSの場合はAMIが用意されているのでそれを使うのが良いみたいです。この辺参照。

今回は別のBI系ツール用コンテナと同居させたかったのであえてdockerを使いました。 docker-compose.ymlのサンプルがこちらにあるので、ファイル名を変更してdocker-compose up -dすれば起動します。

あとDBのマイグレーションとSeed(初期ユーザ)の登録が必要ですが、これはドキュメントが詳しいので省略。

データソースの指定

最初に分析する対象のデータソース(DBやストレージ)を指定します。adminグループに属しているユーザに表示される右上のストレージっぽいアイコンをクリックしAdd Data Sourceを選択すると、データソース設定画面に遷移します。

f:id:takemi_ohama:20160411184026p:plain

対象のミドルウエアを選び、それぞれの接続情報を入力してSaveすればOK。接続確認のようなボタンはないので、次のフェーズで実際にクエリを発行して確認することになります。

Add Data Sourceを繰り返して複数のデータソースを登録することも可能です。

クエリ操作

クエリの作成と保存

上部のメニューからQueries-New Queryを選択すると、SQLを入力する画面が開きます。

f:id:takemi_ohama:20160413021620p:plain

複数データソースを登録している場合は、画面下の「Data Source」で、分析対象のデータベースを選択する必要があります。残念ながらいわゆるETLのような複数データソースをJOINしたりマージするような機能はまだないようですね。

SQLはそのDBのネイティブのものが通るようですが、動的なパラメータ設定のようなことをやりたい場合はre:dash独自のやり方で指定することになります。

エディタの右側にschema情報を表示するツリービューがあり、テーブル名やフィールドの簡単な検索ができるので、クエリ書く時の参考になります。

そのうちドラッグ&ドロップかダブルクリックでのエディタへの貼り付けあたりが実装されそうな気が。

SQLをExecuteして期待通りのテーブルが出たら、左上の「New Query」というタイトルをクリックして適切な名前を付けて、Saveすれば、クエリは完成です。

企業で複数人でBIやっていると、特にユーザ情報や購買履歴の分析はそれぞれ似たようなクエリを抱え込んで散逸しているケースが多いので、こういったツールで集めておくだけでもデータの価値は飛躍的に高まります。

Refresh Scheduleを指定しておくと、 SQLを定期的に実行して結果を保持してくれますので、ダッシュボードを使う場合は是非指定しておいてください。

グラフ作成

re:dashオペレーションの一つ目のハイライトがこのグラフ作成になります。

Executeしてテーブルが出力された状態から、グラフを作成していきます。 以下の6つのヴィジュアルから選べます。

  • Boxplot ... 箱ひげ図。四分位点と最大最小値を用いて分布を表示
  • Chart... 折れ線、棒(積み上げ可)、円、散布図を生成
  • Cohort...日次、週次、月次のコホート図を生成
  • Counter...ダッシュボードに現在値を大きな数字で表示する。
  • Map... 緯度経度を指定して世界地図に描画
  • Pivot Table...テーブルをピボットテーブルに組みなおして表示

MapやCohort等、使いどころさえ選べば強力な分析ができそうですが、とりあえずBIダッシュボードとしては、ChartとCounterを押さえておけば十分でしょう。

例)積み上げ縦棒グラフの作成

  • SQLをExecuteして結果をTable表示させる
  • +New Visualizationをクリック
  • セレクタで以下を設定

    • Visualization Type = Chart
    • Chart Type = Bar
    • X Column = 縦軸を表示。ダッシュボードなら通常時系列(日付や月)になります。
    • Y Column = 分析軸(Series)を指定。複数選択可。
    • Name... 任意の名前。
    • Stacking...積み上げをするかどうか。Disableなら横並びに、Enableなら積み上げ。Percentだと帯グラフになります。
    • Group by ... Group by句でY軸を指定することでも積み上げができるようなのですが、MySQLだと全ての軸が同一色になってしまい、ました。使い方要調査。
  • さらにX軸、Y軸(左右2つ)とSeries別のチャートタイプ、順序指定が可能です。

    • Scale... 日付, 線形,対数, カテゴリカルから選択。

    希望のグラフができたら、Saveして保存してください。一つのクエリに対して複数のグラフを設定することが可能です。

クエリの一覧表示

上部メニューでQueries- Queriesと選択していくと、作成されたクエリの一覧が表示されます。

  • My Queries ... 自身が作成したクエリのみ表示
  • All QUeries ... 別のユーザが作成したクエリも表示
  • Drafts ... 名前をNew QueryのままSaveすると、このタブに入るようです

各クエリの実行時間もここに表示されていますので、遅いクエリなどは適宜チューニングするようにしましょう。

ダッシュボード

このような感じでいくつかクエリとチャートを作ったら、、ダッシュボードで1ページにまとめます。

ダッシュボード作成

  • 上部メニュー左のタコメーターのマークをクリックし、New Dashboardを選択
  • 適当な名前を入れる
    • 日本語も入力可能ですが、パーマネントリンクに利用されるのでURL利用可能文字(英数字とハイフン)を使うほうが良いです。
  • タイトル右のアイコンから「+」マーク(Add Widget)を選択

ダッシュボードWidget追加

  • クエリ名、グラフの名称を選択
  • Widget SizeはRegularとDoubleの2種。Regularだとある程度の画面サイズがあれば2段組みになります。

ダッシュボードは毎日見ることで意味が出てくるものですので、できるだけシンプルに、かつ重要なデータを選んで組みましょう。

なお、グラフ同士の配置や順序は次の編集で修正できますので、とりあえず順序は気にせずどんどん追加してかまいません。

ダッシュボードの編集

1ページで表示したいテーブルやグラフを選択し終わったら設定アイコンをクリックして編集します。

f:id:takemi_ohama:20160413022116p:plain

ドラッグ&ドロップが有効ですので、内容の重要度を考慮して配置していきます。

組みあがったらSaveしてダッシュボードの完成。リンクを皆に共有しましょう!