Power BIのリレーションシップ設定入門|複数テーブルの結合・1対多・スタースキーマをわかりやすく解説
広告
Power BIで「売上データ」と「商品マスタ」「顧客マスタ」など複数のテーブルを使おうとすると、リレーションシップという概念が必要になります。
リレーションシップとは、テーブル同士を共通のキー列で紐づける設定です。正しく設定することで、ExcelのVLOOKUPなしで複数テーブルをまたいだ集計・分析ができるようになります。この記事では、設定方法から設計の考え方まで初心者向けに解説します。
この記事でわかること
・リレーションシップとは何か(VLOOKUPとの違い)
・リレーションシップの設定手順(モデルビューでの操作)
・カーディナリティ(1対多・多対1・1対1・多対多)の違いと使い分け
・スタースキーマの考え方(ファクトテーブルとディメンションテーブル)
・クロスフィルター方向(単方向・双方向)の違い
・よくある失敗と対処法
・リレーションシップとは何か(VLOOKUPとの違い)
・リレーションシップの設定手順(モデルビューでの操作)
・カーディナリティ(1対多・多対1・1対1・多対多)の違いと使い分け
・スタースキーマの考え方(ファクトテーブルとディメンションテーブル)
・クロスフィルター方向(単方向・双方向)の違い
・よくある失敗と対処法
広告
リレーションシップとは何か
Power BIのリレーションシップとは、2つのテーブルを共通のキー列で紐づける設定です。たとえば「売上データ」テーブルの「商品コード」列と「商品マスタ」テーブルの「商品コード」列を紐づけると、売上データから商品名や単価を自動的に参照できます。
VLOOKUPとの違い
| 比較項目 | ExcelのVLOOKUP | Power BIのリレーションシップ |
|---|---|---|
| 設定方法 | 各セルに関数式を記入 | モデルビューでテーブル間を線で結ぶ |
| データ更新時 | 手動で範囲を確認・修正 | 更新ボタン1つで自動反映 |
| 大量データへの対応 | 行数が多いと動作が重くなる | 数百万行でも高速に処理 |
| 複数テーブルの組み合わせ | ネストが深くなり複雑化 | リレーションシップを設定するだけ |
💡 リレーションシップは「テーブル同士の接続配線」のイメージです。一度配線してしまえば、その後は意識しなくてもPower BIが自動的にデータを紐づけてくれます。VLOOKUPのように毎回式を書く必要がありません。
リレーションシップの設定手順
モデルビューを使った設定(推奨)
- Power BI Desktop の左側アイコンから「モデルビュー(人が集まったアイコン)」をクリック
- 取り込んだテーブルが四角いボックスとして表示されている
- 紐づけたい一方のテーブルのキー列(例:商品コード)をドラッグして、もう一方のテーブルのキー列(例:商品コード)の上にドロップ
- 2つのテーブルの間に線(リレーションシップ)が表示される
- 線をダブルクリックすると設定を編集できる
「リレーションシップの管理」ダイアログを使う方法
- 「ホーム」タブ → 「リレーションシップの管理」をクリック
- 「新規作成」をクリック
- 左テーブル・右テーブルとキー列を選択
- カーディナリティとクロスフィルター方向を設定
- 「OK」をクリック
✅ 自動検出機能について:Power BI Desktopはデータ読み込み時に列名が同じテーブル間のリレーションシップを自動的に設定しようとします。正しく設定されることも多いですが、意図しない関係が作られることもあるため、モデルビューで必ず確認する習慣をつけましょう。
カーディナリティ(関係の種類)を理解する
カーディナリティとは、2つのテーブル間のデータの対応関係の種類です。
| 種類 | 意味 | 具体例 | 使用頻度 |
|---|---|---|---|
| 多対一(多:1) | Aテーブルの同じ値が複数行あり、Bテーブルには1行だけある | 売上データ(多)← 商品マスタ(1) | ◎ 最もよく使う |
| 一対多(1:多) | 多対一の逆 | 商品マスタ(1)→ 売上データ(多) | ◎ 多対一と同じ関係を逆方向から表現 |
| 一対一(1:1) | 両テーブルで値が一意(重複なし) | 社員マスタ ↔ 社員詳細テーブル | △ あまり使わない |
| 多対多(多:多) | 両テーブルに同じ値が複数行ある | 生徒テーブル ↔ 授業テーブル(1人が複数授業受講・1授業に複数生徒) | △ 設計を見直すことが多い |
🔴 多対多は可能な限り避けましょう。多対多リレーションシップは設定できますが、集計結果が意図しない値になることがあります。多対多が発生した場合は、中間テーブルを作成して「多対一+一対多」に分解するのが推奨の対処方法です。
スタースキーマ:Power BIのデータモデルの基本形
Power BIで複数テーブルを扱うとき、スタースキーマという設計パターンが推奨されています。中央に「売上データ(ファクトテーブル)」を置き、周囲に「マスタテーブル(ディメンションテーブル)」を配置する星型の構造です。
ファクトテーブルとディメンションテーブルの違い
| 種類 | 役割 | 具体例 | 特徴 |
|---|---|---|---|
| ファクトテーブル | トランザクション(実績データ)を格納 | 売上データ・注文履歴・アクセスログ | 行数が多い・各行が1件の取引を表す |
| ディメンションテーブル | マスタ情報を格納 | 商品マスタ・顧客マスタ・日付テーブル | 行数が少ない・各行が1つのエンティティを表す |
スタースキーマの構成例
[商品マスタ]
|
多対一
|
[顧客マスタ] ─多対一─ [売上データ(中央)] ─多対一─ [日付テーブル]
|
多対一
|
[地域マスタ]
✅ 日付テーブルは必ず作ることを強く推奨します。Power BIで「月別・年別」の分析をするには、専用の「日付テーブル」を作成してファクトテーブルの日付列と紐づけるのがベストプラクティスです。Power BI Desktopの「モデリング」→「日付テーブルとしてマークする」または自動日付テーブルを活用しましょう。
クロスフィルター方向の違いと使い分け
リレーションシップのクロスフィルター方向は、スライサーやフィルターの「どちら向きに絞り込みが伝わるか」を決める設定です。
| 方向 | 動作 | 向いている場面 | 注意点 |
|---|---|---|---|
| 単方向(デフォルト) | 「1」側のテーブルのフィルターが「多」側に伝わる | ほとんどの場合はこれで十分 | シンプルで予測しやすい動作 |
| 双方向 | どちらのテーブルのフィルターも相互に伝わる | ディメンションテーブルで件数を集計したいとき | 意図しない集計が起きやすい。複数の経路ができると危険 |
⚠️ 双方向は「必要なときだけ」使う。双方向フィルタリングを多用すると、スライサーの動作が不安定になったり、パフォーマンスが低下したりすることがあります。「単方向で意図した集計ができない」ときにだけ双方向に切り替え、理由をコメントとして残しておきましょう。
よくある失敗と対処法
| 症状・失敗 | 原因 | 対処法 |
|---|---|---|
| グラフの値が全て同じ数値になる | リレーションシップが設定されていない、または方向が逆 | モデルビューで線の向きと一端の「1」と「*」の位置を確認 |
| 「循環依存を検出しました」エラー | テーブルA→B→C→Aのようにループしている | どこかのリレーションシップを削除してループを解消する |
| 自動検出で意図しないリレーションシップが設定された | 列名が偶然一致して誤った関係が作られた | モデルビューで不要なリレーションシップの線を右クリック→「削除」 |
| 多対多エラー・警告が出る | 両テーブルに重複する値が存在する | 片方のテーブルから重複を除いてマスタ化するか、中間テーブルを作成する |
| スライサーで絞り込んでも別テーブルが更新されない | クロスフィルター方向が単方向で、フィルターが逆向きに伝わっていない | リレーションシップの方向を確認するか、双方向に変更する |
まとめ:リレーションシップ設定のポイント
- モデルビューで視覚的に確認する:線の向き・「1」と「*」の位置が正しいか常に確認
- 基本は多対一(ファクト → ディメンション):売上データから商品マスタへ、という向きが最も多いパターン
- スタースキーマを意識する:ファクトテーブルを中心に、ディメンションテーブルが放射状に配置される構造を目指す
- クロスフィルターは単方向が基本:双方向は必要なときだけ、理由を明確にして使う
- 多対多が発生したら設計を見直す:中間テーブルを作成して1対多×1対多に分解する
リレーションシップを正しく設定することで、VLOOKUPなしで複数テーブルをまたいだ集計・分析が可能になります。最初は難しく感じますが、「1のテーブルが主キーを持ち、多のテーブルが外部キーを持つ」という原則を覚えるだけで、ほとんどのケースは対処できます。
ABOUT ME
広告







