ビジネスダッシュボード 設計・実装ガイドブック(7)
データ準備の全体像と概要
要件の確認
要件/設計をまずは確認する。
ダッシュボードで集計・分析したい指標を精査して、その計算ロジックを決定する。
特注意するのが「データ粒度の検討」。どれくらいの細かさでデータを保持するか。粒度が細かいほど柔軟に処理できるけど、データサイズが大きく、速度も落ちる。
テーブルの設計
定義された指標・比較軸をBIツール上で作成できるテーブルを設計する。
気にするのはデータソース、テーブル、カラムの3つ。
MAツールや、CRMツールなどのデータを、一度データウェアハウスなどの分析用データベースに連携 → ダッシュボード用のデータマート構築が多い。
- データマートの作成方針(どのテーブルから何を抽出するかなどの方針)策定
- データマートの環境パターンを検討
下記どちらかを利用するが、
1. 複数データから作成した統合テーブルをBIツールに指定するパターン
2. 複数のデータテーブルやデータマートのテーブルをBIツールに適用するパターン
- テーブルの項目の設計
チャートのデザインから逆算する。構成要素は「ディメンション*1」「メジャー*2」「フィルター条件」「計算条件」があるので、これを検討したうえでテーブル設計していきます。
テーブルの形状は
- Entry-Attribute-Value 型 : ディメンション、メジャー名、メジャー値 で構成されるテーブル
- Tidy Data 型 : EAV型からメジャー名を除去したヤツ。テーブル毎に役割をきっちり切るならこれが最もシンプル。
- Wide Spread 型 : 集計済みのメジャー値を大量にカラム保持するテーブル。年月(ディメンション)-各店舗集計値(複数カラム)の様な構成。BIツールで扱いやすいけど、拡張性が全くない
テーブルの作成
テーブル設計書に従ってテーブルの作成。
大抵はSQLでデータの加工をする。
気を付ける箇所は
- データサイズ:
大きいとダッシュボードでの読込や表示が遅延する
- トランザクションデータは期間を絞る: 売上とかアクセスログは時間経過で増え続けるので、データマートを作る場合、全期間ではなくて過去Nか月等で絞らないと、レコード数が多すぎて遅延する
- 小さくできるデータは小さくする: yyyy-MM-dd HH:mm:ss.sss
とかは UnixTime 持っとけばどうにかなるし、極力小さいデータで保持する。
- 集計、集約する: 1 日単位で集約するなど、意味が一緒ならデータは小さく保つ
- どこまで計算/加工するか
DB で計算/加工する範囲と、BIツールで計算/加工する範囲を考える。
この策定にはいくつかある
- わかりやすさ: データマートのテーブルを見たときに何が入っているか分かるレベルまでで DB 集計する。
- 動的性: 集計単位を動的に変更する場合、最初から集計してしまうと対応できないので、参照したい単位を基準にする。
- 汎用性: ダッシュボード以外でも利用する場合、加工しやすい単位にとどめておく。
データ更新のルール化
データの更新頻度、方法を決定する。
- 更新方法
ざっくり自動か手動かがある。自動更新なら「毎晩 0 時にデータベース更新、毎朝 4 字にBIツール側の更新をする…」等。
手動更新なら、マニュアル化して運用する。 - 更新頻度
毎日、毎月、毎週、毎時等集計を実行する単位を決定する。
重要なのは、更新頻度をユーザに周知しておくこと。
時間がずれたまま認識されて、誤った解釈をされるのが一番問題。
データ準備にまつわる課題と解決策
よくある課題を列挙…
- 手戻りが多くなってしまう
ダッシュボードのデータ作成者と構築者が別の時に、実現できないチャートやフィルタの存在に気付く…
フィードバックを受けてデータの作り直し…はよくある状態。
解決策: 最終成果物のイメージをモックとかにして固めておく。 - 分析するには粒度が細かすぎる
見える指標が細かすぎると、「何が言えるのか」が分からなくなります。
解決策: マスタデータを切り離して、パラメータ単位で集計するのではなくて、カテゴリや同一マスタ単位で集計するなどすることで、大まかな傾向が拾えます。 - 生データが膨大すぎる
説明不要…
解決策:- データを期間で区切って集計する
- 粗めの粒度で集約する
ダッシュボード構築
- データ接続: 名前の通り
- データ前処理: テーブル結合と加工のこと。
- 関数作成・計算チェック: 集計や分類などの条件分岐関数など
- チャート作成: 表題の通り、BIツールのドキュメントを読み込むべし。
- ダッシュボードレイアウト作成・配置: 色、テキスト、余白などの調整や、フィルタ配置、注釈配置等。
- フィルタ等の動的機能の設定・動作チェック: フィルタの組み込みと打鍵。
- パフォーマンスチェック: 名前の通り。