目次
はじめに
Power BI Desktopは、ビジュアライゼーションとレポート作成のための強力なツールです。しかし、使い方が分からない、使い始めるための適切なデータが手元にない、といった理由でPower BIの活用に踏み出せない方も多いかもしれません。本ブログでは、サンプルデータを提供し、Power BIを使用したレポートやダッシュボードの構築方法を連載形式で解説していきます。
本記事はDay4です。Day1から構築したPower BIファイルを引き続き設定していきます。
---これまでの記事---
◆データ分析の第1歩 ~カレンダーテーブル作成入門~(Day3)
---GOALのイメージ---

ダッシュボードを完成させるまでのプロセスを、複数回にわたるハンズオン形式のブログでわかりやすく説明します。
概要(目的・背景)
Power BI Desktopを使用してデータ分析を行う際、複数のテーブル間で関連性を持たせることが重要です。これにより、異なるデータソースからの情報を統合し、より深い洞察を得ることができます。例えば、売上データと顧客情報が別々のテーブルに存在する場合、これらを関連付けることで、顧客ごとの売上分析が可能になります。しかし、リレーションシップの設定が不適切だと、分析結果に誤りが生じる可能性があります。そのため、正確なリレーションシップの作成と管理は、データ分析の精度を高める上で欠かせないステップです。
読み手(誰に向けた記事か?)
この記事は、下記のような読者を想定しています。
・Power BI 初学者: 初めてPower BI Desktopを使う方々
・ データ分析の学習者: 複数のデータソースを扱う必要がある方々
リレーションシップの概念や設定方法を理解することで、データ分析のスキルを向上させ、より複雑なデータセットを効果的に扱えるようになります。
ブログの目標設定(具体的な目標)
本ブログは、サンプルのデータを使ってハンズオンを行いながら、目標をクリアします。実際に動作確認を行いながら、Power BIの使い方を習得しましょう。この記事の目標は、以下の通りです。
・Power BI Desktopでのリレーションシップの基本概念を理解する。
・テーブル間のリレーションシップを正しく作成・管理する手順を習得する。
これらの目標を達成することで、読者は自分のデータモデルに適切なリレーションシップを設定し、より正確な分析結果を得られるようになります。
方法(アプローチ・使用技術)
リレーションシップとは?
リレーションシップは、テーブル間の関連性を定義するための「リンク」です。このリンクにより、異なるテーブルのデータを連携させ、クロス集計やフィルタリングなどの操作が可能になります。
今回取り扱うCSVファイルを整理する

これまでの手順にて、Power BI DesktopへのCSVファイル取り込み手順は説明してきましたが、CSVファイル自体の中身について触れてきませんでした。改めて、CSVファイルの構成を説明します。


※CalendarはDAXで構成しています。
今回取り扱うデータを用いて、リレーションシップを理解する
各店舗の売り上げを「店番_日付.csv」に格納していますが、実際の店舗名や商品名が登録されていません。集計時にStore No.(店舗を特定するための一意の識別番号)やItem No.(商品を特定するための一意の識別番号)で表示されても読み辛いため、店舗名や商品名で表示したほうが望ましいです。

(1001の店舗は、4/1に101の商品を48個販売した・・・と言われても、理解し辛いですよね。。。)
ここで活躍するのがリレーションシップです。

テーブル間でリレーションシップを設定することで、1つのテーブルにすべてのデータを所有する必要がなく、複数のテーブルで効率的にデータを所有することができます。
※テーブルに登録されるデータの冗長性を排除することを『正規化』と呼びます。

★注意点★
SalesテーブルのStore No.を基にProductMasterテーブルのItem No.を検索する際、ProductMasterテーブル内に同じ値のItem No.が存在するとエラーが発生します。そのため、マスターデータは重複が無く、一意性が保証されている必要があります。
今回作るテーブルは、どこにリレーションシップを設定するか?
テーブルのデータには大きく分けて、トランザクションデータとマスタデータの2パターンあります。リレーションはマスターデータとトランザクションデータを格納しているテーブル間で設定を行うことが多いです。そのため、今回、トランザクションデータを格納しているテーブルとマスタデータを格納しているテーブルに分けてから、リレーションの有無を確認します。

リレーションシップの構成イメージ
各トランザクションデータとマスターデータを紐づけて以下の構成イメージでリレーションシップを設定します。

リレーションシップ一覧
トランザクションデータ側のテーブル | マスタデータ側のテーブル | |
---|---|---|
Storeテーブル Item No. | ⇔ | ProductMasterテーブル Item No. |
Storeテーブル Store No. | ⇔ | StoreMasterテーブル Store No. |
Storeテーブル Date | ⇔ | Calendarテーブル 年月日 |
Weather_Reportテーブル 年月日 | ⇔ | Calendarテーブル Date |
リレーションシップの設定
1.左メニューより「モデルビュー」を選択する。

2.テーブル配置されていることを確認後、ドラッグ&ドロップで配置整理をする。
(左側にトランザクションデータのテーブル、右側にマスターデータのテーブル)
・変更前

・変更後

3.自動設定されているリレーションシップを確認する。
➊.SalesテーブルとProductMasterテーブルの間に表示されている左向き三角(◀)をダブルクリック。
Item No.で紐づいていることを確認する。

設定に誤りが無い場合は「キャンセル」ボタン(※上記、赤枠内)を押下する。
➋.SalesテーブルとStoreMasterテーブルの間に表示されている左向き三角(◀)をダブルクリック。Store No.で紐づいていることを確認する。

設定に誤りが無い場合は「キャンセル」ボタン(※上記、赤枠内)を押下する。
➊・➋にて設定が誤っている場合は、左向き三角(◀)を右クリックして「削除」を選択。

4.リレーションシップを設定する。
➊Salesテーブルの「Item No.」をドラッグして、ProductMasterテーブルの「Item No.」へドロップする。新しいリレーションシップの画面が表示されるため、「保存」を押下する。※既に設定されている場合は、スキップしてください。

➋Salesテーブルの「Store No.」をドラッグして、StoreMasterテーブルの「Store No.」へドロップする。新しいリレーションシップの画面が表示されるため、「保存」を押下する。※既に設定されている場合は、スキップしてください。

❸Salesテーブルの「Date」をドラッグして、Calendarテーブルの「Date」へドロップする。新しいリレーションシップの画面が表示されるため、「保存」を押下する。

➍Weather_Reportテーブルの「年月日」をドラッグして、Calendarテーブルの「Date」へドロップする。新しいリレーションシップの画面が表示されるため、「保存」を押下する。

5.すべてのリレーションシップが設定できたことを確認する。

結果(成果と評価)
この記事を通じて得ることができる学びは以下の通りです。
・リレーションシップ設定方法の理解
リレーションシップでは、片方のテーブルの各行に対して、もう片方のテーブルでも対応する行が存在することでデータを紐づけることができることを学びました。例えば、トランザクションデータとマスタデータの「店舗番号(Store No.)」を用いて、マスタデータ側(例:「店舗名(Name)」)を紐づけることができました。
・トランザクションデータとマスタデータの違いの理解
冗長なデータを削減し、シンプルかつ理解しやすいデータモデルを学ぶことができました。これにより、トランザクションデータとマスタデータの違いを学び、データの種別を理解することができました。
まとめ(結論と今後の展望)
リレーションシップは、シンプルで信頼性の高いデータモデルを構築する際に非常に効果的であることが分かりました。次回の記事では、CALCULATE関数についてご紹介します。