PowerBI

【Power BI入門】リレーションシップとは?データベース設計の基本を学ぶ!

ミムチ
ミムチ
うーむ…ミムチの会社では、店舗基本情報一覧と、店舗ごとの売り上げ一覧が別のExcelで管理されているのですが、これをPower BIで一緒のグラフにしたいですぞ。

パワ実
パワ実
Power BIで2つの異なるテーブルを紐づけて、同じグラフに表示するには、「リレーションシップ」の設定が必要だよ!

この記事では、Power BIのリレーションシップについて、データベース設計の基本と一緒に解説します。

この記事でわかること

  1. Power BIのリレーションシップとは何か?
  2. データベース設計の基本的な考え方
  3. リレーションシップの設定方法

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

リレーションシップとは?

リレーションシップとは、異なるテーブルを紐づけ、テーブル間の関係性を定義する設定です。

例えば、以下のようなスーパーの売上一覧と、商品一覧の2つのテーブル見てみます。

今は2つのテーブルが別々にある状態で、リレーションシップ(データの紐づけ)がありません。

この状態で、テーブル1のスーパーの売上一覧をグラフ化すると、以下のように表示されます。

※X軸:商品コード、Y軸:売上、凡例:原価と売上

この時、X軸は商品コードが表示され、商品名が表示できない状態になっています。

ミムチ
ミムチ
せっかくグラフ化するなら、X軸は0001等の商品コードではなく、商品名を表示したいですな…

パワ実
パワ実
テーブル1のスーパーの売上一覧には、商品名の列を持っていないから、商品名をこのグラフに表示するには、テーブル1とテーブル2を紐づける必要があるよ。

そのため、リレーションシップが必要になるんだよ!

具体的には、テーブル1と、テーブル2を「商品コード」の列で、以下のようにリレーションシップ(紐づけ)します。

商品コードで2つのテーブルをリレーションシップすることで、テーブル1の商品コードから、テーブル2の商品名を参照して、以下のようにグラフを表示できるようになります。

Power BIでのリレーションシップは基本的に1対多の結合になります。

ミムチ
ミムチ
待ってくだされ!

一対多とはどういう意味ですかな?

パワ実
パワ実
一対多のリレーションシップとは、2つのテーブルを紐づける列で、一方は一意の(重複のない)データを持つ列で、もう一方は重複データのある列ということだよ。

ミムチ
ミムチ
うーむ…まだいまいち分かりませんぞ。

今回の場合、テーブル2商品一覧の方の商品コードは、同じ商品が複数入っていることはないため、一意のデータになります。

一方で、テーブル1スーパーの売上一覧の商品コードは、重複のあるデータになります。

ミムチ
ミムチ
この例を見ると、1/1と、1/2に同じ商品コード0001の売上データが入っていますな!

パワ実
パワ実
その通り!

このとき、テーブル2の商品コード列が一,に対して、テーブル1の商品コード列が多の結合になるから、一対多のリレーションシップと呼ぶんだよ。

Power BIでは、基本的にこの一対多のリレーションシップを使います。

多対多の結合や、複数の列(キー)で結合する方法は、また別の記事で解説します。

データベース設計の基本

ミムチ
ミムチ
うーむ…リレーションシップについては何となく分かりましたが、そもそもテーブルを2つに分けずに、以下のような1つのテーブルにすればよいのではないですかな?

パワ実
パワ実
確かにこのように1つのテーブルとして持てば、わざわざリレーションシップの必要もないよね。

ただしこのテーブルには少し問題があるから、それを説明するために、次にデータベース設計の基本的な考え方を説明するよ!

データベースは、データを修正するときに、メンテナンスしやすい設計とするのがよいです。

例えば以下のスーパーの売上一覧を見てみます。

もし商品名の“牛肉”を、“国産牛”に変更したい場合、データは以下のように修正する必要があります。

1/1と1/2の牛肉を国産牛に修正する必要がありますね。

この例では2か所のみの修正ですが、実際は数十か所の修正になるかもしれません。

Excelの場合、データの検索と置換で一気に修正はできますが、基本的に何か所もデータ修正をすると、間違いが起こりやすいので、避けた方がよいです。

では、テーブルを2つに分割した場合を見てみます。

テーブル1スーパーの売上一覧には、商品コードのみデータを残し、テーブル2商品一覧に、商品コードと対応する商品名のデータを分けました。

先ほどと同様、牛肉を国産牛に変える場合、今回はテーブル2商品一覧の1箇所だけ変えればOKです。

ミムチ
ミムチ
なるほどですぞ!

テーブル1は商品コードのデータで持ってるから、商品名が牛肉から国産牛に代わっても、商品コードは0002で同じなのですな!

パワ実
パワ実
 そういうこと!

このように、1つのデータを修正するときは、1箇所だけ修正すればよいように、テーブルを分けると、データベースのメンテナンスが楽になるよ。

Power BIのデータモデル設計について、より詳細な内容は以下を参考にしてください。

【Power BI入門】リレーションシップでどんなデータモデルにすればよいのか?~スタースキーマを理解する~ この記事では、Power BIのデータモデルの考え方について、スタースキーマの概念と合わせて解説します。 Power ...

Power BIでのリレーションシップの操作方法

それでは、Power BIデスクトップでの、リレーションシップの操作方法を解説します。

今回は以下のような、簡単なスーパーの売上一覧(テーブル1)と、商品一覧(テーブル2)をサンプルデータとして使います。

テーブル1:スーパーの売上一覧
テーブル2:商品一覧

データの取り込み

1.Power BIデスクトップアプリを起動し、Excelブックをクリックして、Excelファイルを取り込みます。

2.ナビゲーターで、テーブル1(スーパーの売上一覧)、テーブル2(商品一覧)の2つにチェックを入れ、「データの変換」をクリックします。

データ変換

1.Power Queryエディタが起動するので、2つのテーブルの商品コードのデータ型を「テキスト型」に変換します。

2.列タイプの変換が表示されたら、「現在のものを置換」をクリックします。

3.以下のように、「ABC」となっていれば、データ型がテキスト型になっています。

もう1つのテーブルも、同様に商品コード列をテキスト型に変換し、閉じて適用をクリックします。

データ型について詳しく知りたい方は、以下の記事を参考にしてください。

【PowerBI入門】データベースのデータ型とは?データの種類を設定する方法 この記事では、Power BIのデータを扱う際に基本的な知識である、データ型とは何か?について解説します。 YouTu...

リレーションシップ

1.左の「モデル」タブをクリックすると、読み込んだテーブルのリレーションシップが設定できます。

今回は2つのテーブル間が自動で、商品コード列で一対多のリレーションシップの設定がされています。

Power BIでは、各テーブルの列名と、データを見て、自動的にリレーションシップを設定してくれます。

適切なリレーションシップとなっていない場合もあるので、必ず確認しましょう。

2.手動でリレーションシップの設定をする場合、紐づけたい列を、もう一方のテーブルの列の上にドラッグ&ドロップします。

レポート作成

1.レポートタブに戻り、レポートを作成します。

例えば「積み上げ棒グラフ」を選び、以下のようにデータを入れてみます。

X軸:商品一覧の「商品名」列

Y軸:売上一覧の「売上数」列

2.正しくグラフが表示されています。

パワ実
パワ実
グラフが上手く表示できたのは、商品一覧と、売上一覧の2つのテーブル間のリレーションシップが正しく設定できているからだよ!

3.試しにモデルタブに戻り、リレーションシップを削除してみます。

リレーションシップを削除する場合、2つのテーブルを紐づける矢印の上で右クリック>削除を選択します。

4.レポートタブに戻りレポートを見てみると、リレーションシップの設定を削除したため、このようにグラフが適切に表示できなくなりました。

パワ実
パワ実
リレーションシップを適切に設定することで、異なる2つのテーブル間のデータを使って、自由にグラフを作成することができるよ!

最後に

この記事では、Power BIのリレーションシップと、データベース設計の基本的な考え方について解説しました。

リレーションシップとは、異なるテーブルを紐づけ、テーブル間の関係性を定義する設定です。

そもそも1つのテーブルにすべてのデータを格納すれば、リレーションシップは必要ありません。

しかしデータベースは、データを修正等、メンテナンスしやすさを考えて設計する必要があり、そのために複数のテーブルに分けることが多いです。

Power BIでリレーションシップを使いこなせば、色々な異なるデータを紐づけて相関関係を見るなど、データ分析の幅が更に広がります。

パワ実
パワ実
リレーションシップの応用として、複合キー(複数列)での結合と、多対多結合については以下の記事で説明します!

【PowerBI応用】複合主キー(複数列)でリレーションシップする方法を解説! この記事では、複数列(複数列)でのリレーションシップのやり方について解説します。 YouTube動画で見たいかたは、こ...
【PowerBI応用】多対多リレーションシップの方法を解説! この記事では、Power BIで多対多リレーションシップをする方法を解説します。 YouTube動画で見たいかたは、...
ABOUT ME
パワ実
DX推進担当(IT部門) 2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 Power Platformを使っていく中で、知りえた情報を発信している。 Youtube、Twitterでの情報発信もしています!

Power Platformのご依頼・ご相談について

Power Platformについてのご相談、お仕事のご依頼については、
こちらのお問い合わせページをご確認ください。