PowerBI

【Power BI入門】リレーションシップでどんなデータモデルにすればよいのか?~スタースキーマを理解する~

ミムチ
ミムチ
ムム…

Power BIでテーブルの分け方や、リレーションシップをどうやって考えたらよいのか分かりませんぞ!

パワ実
パワ実
Power BIのデータモデルの設計は一番重要だけど、とても難しいよね。

今回はPower BIのデータモデル設計の基本的な考え方を解説するよ!

この記事では、Power BIのデータモデルの考え方について、スタースキーマの概念と合わせて解説します。

この記事でわかること

  1. Power BIのデータモデルをどうやって考えていけばよいか
  2. スタースキーマの概念
  3. どのようにテーブルを分ければよいか

Power BIのリレーションシップとは何か?については、以下の記事も参考にしてください。

【Power BI入門】リレーションシップとは?データベース設計の基本を学ぶ! この記事では、Power BIのリレーションシップについて、データベース設計の基本と一緒に解説します。 YouTube...

YouTube動画で見たいかたは、こちらからどうぞ!

Power BIのデータモデルとは?

Power BIを使ってデータを可視化するには、まずデータモデルを考える必要があります。

データモデル設計は、Power BIを使ったデータ分析で最も重要な部分ですが、Power BIを使い始めた人にはとても難しいと思います。

そもそもデータモデルの設計とは、以下のような、各テーブルと必要な列(データ)、テーブル間のリレーションシップを考えることです。

データモデルの設計で考えること

  • テーブルの分け方や、各テーブルに何の列(データ)を入れるか
  • 各テーブル間のリレーションシップ

ミムチ
ミムチ
どうやってテーブルを分ければよいか…

ミムチはいつも全く分かりませんぞ…!

パワ実
パワ実
最初はみんな分からないから大丈夫!

この後、データモデル設計の考え方を一つずつ解説していくね!

データモデルを考える際のポイント

Power BIのデータモデルを考える基本的な手順は、以下のようになります。

これを踏まえ、Power BIのデータモデルを考える際のポイントがいくつかあります。

データモデルを考える際のポイント

  1. どのようなレポートにしたいか考える
  2. 一対多のリレーションシップを基本とする
  3. 不要なデータは削除する
  4. データモデルのメンテナンス性を考える

4つのポイントについて、一つずつ説明していきます!

どのようなレポートにしたいか考える

まずPower BIでどのようなレポートを作り、データ分析をしたいかは、事前に考えておくとよいでしょう。

Power BIでどのようなレポートを作成したいかによって、データモデルの設計が変わります。

その際は、そもそも何の意思決定に役立てるために、何のデータを使い、どんな分析をしたいかを整理しておきましょう。

パワ実
パワ実
例えば、商品ごとの売上額を比較したいなら、売上一覧テーブルと、商品マスタテーブルは分けるといいよ。

ミムチ
ミムチ
店ごとの売上額を比較するなら、店マスタテーブルが必要ということですな。

一対多のリレーションシップを基本とする

Power BIでテーブル間のリレーションシップを作成する場合、基本的には一対多のリレーションシップとなるデータモデルとしましょう。

以前、Power BIで多対多のリレーションシップを作成する方法も解説しましたが、特性を分かっていないと意図しないレポート表示となる場合があるため、特に初心者の場合は避けた方がよいです。

多対多のリレーションシップの詳細は、以下の記事を参考にしてください。

【PowerBI応用】多対多リレーションシップの方法を解説! この記事では、Power BIで多対多リレーションシップをする方法を解説します。 YouTube動画で見たいかたは、...

不要なデータは削除・非表示にする

分析に使わない不要なテーブルや列は、Power Queryエディタの操作で、なるべく削除しておきましょう。

またPower BIに一旦取り込み、DAX等で列を追加した後も、データタブや、モデルタブで不要なテーブルや列を非表示にすることができます。

不要なテーブルや列を取り込まない方が、ファイルサイズを圧縮でき、パフォーマンスも向上します。

Power BIのユーザーには、データモデルを構築する人、レポートを作成する人、レポートを閲覧する人等がいます。

データモデルの構築者は、レポート作成ユーザーが分析に使わないテーブルや列は、レポート上で見せないようにすることが大事です。

データモデルのメンテナンス性を考える

Power BIで作成したデータモデルのメンテナンス性も非常に重要です。

あまりにテーブル数が多かったり、テーブル間のリレーションシップが複雑すぎると、作成者以外がメンテナンスできなくなってしまいます。

またユーザーがレポート作成しやすいように、あえてテーブルを分けすぎず、2つのテーブルをマージして1つにしたものを使う場合もあります。

パワ実
パワ実
実際データの種類が多くなってくると、データモデルは複雑になってしまうから、仕方ない部分もあるんだけどね。

スタースキーマを理解する

ミムチ
ミムチ
Power BIでは、「スタースキーマ」を基本にデータモデルを設計するのがよいと聞きましたぞ。

この「スタースキーマ」とは何ですかな?

パワ実
パワ実
スタースキーマとは、値データを持つファクトテーブルに対して、切り口となるディメンションテーブルが、多対一のリレーションシップを作成するデータモデルのことだよ。

ファクトテーブルとは、レポートで値として表示するテーブルで、ディメンションテーブルは、凡例や軸等、値に対する切り口として表示するテーブルです。

Power BIでは「スタースキーマ」を基本としたデータモデルを設計するのが最適と言われています。

スタースキーマとは?

スタースキーマとは、例えば以下のようなモデルのことです。

中央に売上テーブル(ファクトテーブル)があり、周りには商品マスタ、日付マスタ、店マスタ等、複数のディメンションテーブルがあります。

そして売上テーブル(ファクトテーブル)と、その他のテーブル(ディメンションテーブル)が多対一でリレーションシップされている状態です。

このデータモデルが、星のような形になっていることから、「スタースキーマ」といいます。

※ファクトテーブルが複数あったり、ディメンションテーブルが5つでない場合もあります

この「スタースキーマ」が、Power BIで最適なデータモデルとされているため、これを理解することがとても重要です。

ファクト(値)と、ディメンション(切り口)の役割

ミムチ
ミムチ
何となく分かってきましたが、ファクトテーブルと、ディメンションテーブルというのが、まだよく分かりませんぞ。 

パワ実
パワ実
簡単に言うと、実際にレポートに表示する売上額とか、売上数等、値のデータを持つのが「ファクトテーブル」で、店名や、商品名等、凡例や軸等の切り口に使うのが、ディメンションテーブルだよ。

ファクトテーブルと、ディメンションテーブルは、以下のように分けて考えます。

ファクトテーブルと、ディメンションテーブルの違い

<ファクトテーブル>

  • 販売額、注文数、気温等の「値データ」を持つテーブル
  • レポートで「値」に入れる列を持つ

<ディメンションテーブル>

  • 商品、場所、日付等、値に対する「切り口データ」を持つテーブル
  • レポートで「凡例」や「軸」に入れる列を持つ

上述したように、Power BIではファクトテーブルに対して、ディメンションテーブルが、多対一でリレーションシップしているのが「スタースキーマ」です。

ファクトテーブルには、売上額、注文数等の数値データの他、商品IDや、店ID等、ディメンションテーブルとリレーションシップするためのキー列を持ちます。

ディメンションテーブルは、例えば商品マスタテーブル等があり、商品ID、商品名、その他商品情報のデータ列を持ちます。

データの正規化を行う

ミムチ
ミムチ
段々と分かってきましたぞ…!

しかしファクトテーブルと、ディメンションテーブルをどう分ければよいのかは中々難しいですな…

パワ実
パワ実
スタースキーマを理解するために、正規化と、非正規化についても理解しておくのが重要だよ!

正規化されたデータと、非正規化されたデータの違いは、以下のような感じです。

上のように、商品ID(キー列)以外に、商品名、カテゴリー、カラー等、商品関連データを持つ場合は、非正規化されているデータになります。

非正規化されているデータは、同じデータ(重複データ)が繰り返し格納されるため、PowerQueryを使って、下のような正規化されたテーブルにすることが望ましいです。

正規化されたテーブルでは、売上一覧と、商品マスタにテーブルを分け、売上一覧テーブルには、商品関連の列は、商品ID列のみ持つ形になります。

商品名、カテゴリー、カラー等の商品関連データは、商品マスタテーブルに格納し、商品ID列で一対多のリレーションシップを作成するというわけです。

実際のPower BI画面では、モデルタブで、以下のようにリレーションシップをします。

レポートタブでは、例えば以下のように、値(ファクト)には売上数の合計、凡例や詳細(ディメンション)にはカテゴリーや、店データ等を入れます。

※店マスタもディメンションテーブルとして作成し、リレーションシップを作成するとよいです

ミムチ
ミムチ
…なるほど!分かりましたぞ!

非正規化データを、正規化することでテーブルを分けて、スタースキーマの考え方でリレーションシップを作成していけばよいのですな!

パワ実
パワ実
その通り!

システムから出力される元データは、非正規化されているデータも多いから、それをPowerQueryのデータ変換で、正規化していく必要があるよ。

まとめ

この記事では、Power BIのデータモデルの考え方について、スタースキーマの概念と合わせて解説しました。

スタースキーマとは、ファクトテーブル(値データ)に対して、ディメンションテーブル(切り口データ)が、多対一のリレーションシップを作成するデータモデルの考え方です。

Power BIでは、元データが非正規化されたデータの場合は、Power Queryによって正規化されたデータに変換し、スタースキーマの考え方でデータモデルを作成していきます。

パワ実
パワ実
最初は難しいかもしれませんが、段々とデータモデルの考え方が分かってくると思います!

是非、この記事を参考にしてPower BIのデータモデルを考えてみてください。

ABOUT ME
パワ実
DX推進担当(IT部門) 2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 Power Platformを使っていく中で、知りえた情報を発信している。 Youtube、Twitterでの情報発信もしています!

ご依頼・ご相談について

Power Platformに関するご相談は、こちらからお願いします!

Power Platform学習におすすめの無料ハンズオンセミナー、参考本は、こちらのページを参考にしてください。