Power BIにおけるデータモデリング
このレシピでは、Power BIにおけるデータモデリングのベストプラクティスについて解説します。
データモデリングの重要性
データ分析やPower BIで効果的なレポートを作成するために重要なのがデータモデリングです。
データモデリングについては、下記3種類で説明されることが多いです。
概念データモデリング
業務の全体像を決める業務担当者のフェーズです。
データをエンティティとリレーションで定義し、主に概念ER(エンティティ・リレーションシップ)図が作られます。
論理データモデリング
データ構造を決める設計者のフェーズです。
各種キー(主キーなど)、データ属性、正規化を定義し、主にエンティティ定義書や項目が作られます。
物理データモデリング
データベースを構築するエンジニアのフェーズです。
データ型や各種制約を定義し、主にテーブル定義書が作られます。
データモデリングの手法
スタースキーマ
Power BIでモデリング手法として採用されているのが、スタースキーマ(Star Schema)です。
スタースキーマはデータウェアハウスで用いられ、テーブルをファクトテーブルとディメンションテーブルに分類します。
データウェアハウスは分析用に収集したデータの保存場所を意味します。
Microsoftにおいては、分析ツールがPower BI、保存場所がFabricで、Fabricは従量課金制の有償で提供されています。
※Fabric Freeは閲覧だけで作成機能は使えない
ファクトテーブルとディメンションテーブル
ファクトテーブルとディメンションテーブルは、データベースに置き換えるとトランザクションとマスターに該当します。
- ファクトテーブル (Fact Table)
売上などの事実データを格納します。
日付、製品ID、顧客IDなどの外部キーと、売上金額や数量などの数値を含みます。 - ディメンションテーブル (Dimension Table)
分析の軸となる属性データを格納します。
日付テーブル、製品テーブル、顧客テーブルなどが該当します。
スタースキーマというくらいなので、イメージは星形です。
その星はファクトテーブル(例えば、売上データ)で、その星の頂点にディメンションテーブルが位置します。
売上データは販売した製品や売上日、顧客など様々な属性があり、その属性ごとに分析が可能です。
言い換えると、売上の事実は属性によって説明できるわけです。
なお、スターと名前がついていますが、頂点の数は5個に限りません(星座を形作る星の数も5個に限らないように)。
設計のポイント
一対多のリレーションシップ
リレーションシップは、ファクトテーブルとディメンションテーブルを関連付ける機能です。
ディメンションテーブル(1)からファクトテーブル(多)へ、単方向のフィルタリングを設定するのが基本です。
※属性(ディメンション)によって事実(ファクト)を説明するため、一対多となる
双方向フィルタリングの回避
双方向フィルタリングは、ファクトとディメンションの双方が互いにフィルタリングを行います。
そのため、例えば、フィルタリングのループが発生してパフォーマンスが悪くなったり、意図しないフィルターがかかったりします。
双方向フィルタリングの使いどころは、属性間(ディメンションとディメンション)のリレーションや、多対多のファクトを扱う時に有効です。
正規化のバランス
正規化は、データに規則性があるかを観点とします。
日付や製品IDなどのディメンションは規則性があるため、ファクトを分析できます。
ただし、分析のしやすさとパフォーマンスの観点から、ある程度非正規化することが推奨されます。
※例えば、製品カテゴリと製品名を同じテーブルに含めるなど
不要な列とテーブルの削除
データモデルのサイズを抑えるために、分析に使用しない列やテーブルはPower Queryエディターで削除します。
これにより、メモリ使用量が削減され、レポートの読み込み速度が向上します。
日付テーブルの作成
時系列分析(タイムインテリジェンス)を正しく行うために、連続した日付データを持つ専用の「日付テーブル」が必要です。
Power BIの自動日時機能をオフにし、独自のカレンダーテーブルを作成してリレーションシップを構築することを強くお勧めします。
なお、日付テーブルの作成方法は、別のレシピをご参考ください。
参考)分析の種類
| 分析の種類 | 主な目的 | Power BI の代表的なビジュアル/機能 | 典型的な利用例 |
|---|---|---|---|
| 比較分析 | どれが大きい/小さいか比較 | 棒グラフ(縦棒、横棒)、KPIカード | 店舗別売上、商品別利益 |
| 構成比分析 | 全体に対する割合を見る | 円グラフ、ドーナツグラフ、積み上げ棒グラフ、ウォーターフォール | 売上構成比、コスト内訳 |
| 分布分析 | データのばらつきを見る | 散布図、ヒストグラム | 単価分布、顧客の購入回数のばらつき |
| 相関分析 | 2つの変数の関係を調べる | 散布図、バブルチャート、折れ線グラフ | 広告費と売上の関係 |
| ランキング分析 | 順位付け・上位/下位の確認 | テーブル、マトリックス、棒グラフ、上位Nフィルター | 売上トップ10商品 |
| セグメンテーション分析 | グループ別の傾向を見る | スライサー、ツリーマップ、ドリルダウン | 顧客セグメント別分析 |
| パレート分析(ABC分析) | 重要度を累積で把握 | 組合せ(棒+折れ線)グラフ、累積比率DAX | 上位20%顧客が売上の80%など |
| 関係性分析(スターモデル) | ファクトを多次元で分析 | モデルビュー、スライサー、双方向フィルタリング | 顧客×商品×期間の多次元分析 |
| シナリオ分析(What-if) | 数値を変えて未来を試す | What-ifパラメーター、DAX | 値上げ時の売上下落予測 |
| AI分析(要因分析・異常検知) | 要因把握や外れ値の発見 | キーインフルエンサー、異常検知、Q&A | 売上に影響する要因の特定 |
| アソシエーション分析(関連性) | 共に発生する組合せを探す | マトリックス、DAX | バスケット分析 |
| クラスタリング分析 | 自動的にグループ分け | クラスタリング | 顧客の自動セグメント化 |
広告