データ分析とインテリジェンス

BIではデータを加工しないでデータマートを作る

BIはデータマートと組み合わせて使うのがおすすめ

BIを使う時にツールの中でクエリを書かないほうがいい。その処理はDBで行ってデータマートに入れ、BIでは読み込ませるだけにする。

すると動作が軽くなって待たされる時間が減る。redashで数分かかっていたクエリが2・3秒で返るようになったこともある。tableauはそこまでではないけれども相当に早くなる印象。

BIを使うところから入った人にはあまり広まっていないようなのでまとめておく。最後に、「データマート」が何かわからない人向けにも指針を書いておく。

なお、筆者は全てのツールを使っているわけではなく、自分が今まで利用してきた範囲内で話をしていることはお断りしておく。

BIでクエリを書かない方がいいと思う理由

BIで加工すると以下のデメリットがある。

  • 表示までの時間が長くなる
  • 加工のための関数が貧弱
  • 修正が必要になったら個別に対応する必要がある
  • フラグや新しいカラムがまとめて作れない
  • ツールを変えるコストが膨大になる

表示までの時間が長くなる

テーブルをJOINするような込み入ったクエリだと実行に時間がかかる。データマートを作っておけば読み込むだけになるのですぐ終わる。

大きなテーブルならば、不要なカラムを落として期間を絞り込むだけでもかわる。

加工のための関数が貧弱

DBで出来ることがBIではできないこともある。同じことを実現するのに別の関数をいくつか組み合わせて作らなければならないのは面倒だ。

修正が必要になったら個別に対応する必要がある

もしクエリをBIの中に個別に書いていると1つ1つ修正して確認する必要がある。その前にどのダッシュボードで修正が必要なのかを探さなければいけない。

データマートならば共通して使っている指標はまとめて修正できる。

フラグや新しいカラムがまとめて作れない

BIだと1つ1つフラグを作らなければならないがクエリならCASE文でフラグやカラムをまとめて作ることができる。

1つのダッシュボードで2・3つのフラグを作るだけならたいした差ではない。しかしダッシュボードや指標が増えたら個別に作っていくだけでも大変だ。

BIを変えるコストが膨大になる

加工のための情報、つまり指標やフィルタは取り出せないのでBIを変更する際はまたゼロから作り直しになる。

一度入れ替えても、いつかまた別のBIに変更しようとして同じことを繰り返すことになる。そのためBIに依存することはできる限り避けておくことが望ましい。

BIで加工するメリット

デメリットばかりでは不公平なのでメリットもあげてみよう。と、思ったがあまり思い当たらない。強いて言えばクエリだけでなく指標の作り方や集計の定義(つまりメタデータ)も1か所に集まるので管理しやすいことか。

少ししかダッシュボードを作らない時にはそれでいいだろう。しかし、ダッシュボードは際限なく増えるので先を見越しておくならあまり良い方法ではない。

BIではデータを加工しないでデータマートを作る

以上の理由から、BIでは可視化と集計軸(ディメンジョン)の変更に特化して、データマートを作ることをお勧めする。

もちろんすべてが見事に解決する、とはいかないだろうが負担はかなり軽減されるはずだ。空いた時間でさらに考えたり他の仕事を進めるのに使えるようになる。

データマートが作れないならBIを使わないことも考える

環境によってはデータマートを作れないこともあるだろう。その状態で無理にBIを使おうとすると多くのテーブルを結合してさらに加工することになる。その結果、頻繁に見るのにすさまじく重いダッシュボードが出来る。

そんな時は「どうBIを使うか」の前に「BIを使わない選択肢もある」ことを思い出そう。目的はBIを使うことではない。やりたいことと重要度に合わせて考えよう。

たまにしか見ない指標であるならクエリを作っておき、依頼があったら抽出するかクエリを渡して自分で抽出してもらう。所定の位置に結果をそのまま張り付ければグラフが更新されるようにしておけばレポートもできる。

データマートを知らない人へ

要するに「今はBIでいろいろ加工しているがその加工を別のところで事前にやっておき、その結果を読み込むだけにすることでBIを使いやすくする」。その時に作るのが「データマート」だ。

「データマート」を検索すればいろいろ出てくる。とはいえそれだけ読んでいきなりエンジニアとやりとりするのは難しいだろう。なのでいっそデータマートという言葉は使わないでやりたいことをそのまま伝えた方がいい。

エンジニアと直接話すのが難しければデータアーキテクト(データ整備人)がいればその人に、そういう職名でなくても同じことをしている人は社内のどこかにいるはずなので探して相談する。

誰もいなかったら自分で挑戦するか、あきらめて他のところで効率化しよう。

一番いい方法を探そう

DBがさらに進化して複雑なクエリでも処理が早くなり、データの定義を個別に作らなくて済むならデータマートを作らないでもいいかもしれない。一部ツールでは実現できるようになってきたようだ。

今回の話は「現状は他でもっとうまくできるのだからBIでやらなくてもいい」というだけだ。なのでBI側で同等以上のことができるようになればそちらを使えばいい。

ツールの進化は早いのでぼさっとしているとあっという間に置いて行かれてしまう。もしかしてすでに遅れているかもしれない。このツールはあれができるとか知っていたら教えてください。

 Twitter  

データ整備