リレーションシップの問題の診断と修正
メニューを表示するにはスワイプしてください
ダイアグラムビューで正しく見えるモデルを構築しても、正しい数値を出すモデルとは限りません。エラーメッセージが表示されないまま誤った合計値が出る場合(見た目は正しそうでも実際とは異なる)は、問題の兆候がないためエラーよりも危険です。
4つの主な原因
- 主キーの重複値
ディメンションテーブルに同じキー値が複数行に存在する場合。一方のテーブル(1側)は一意の値が必要なため、Power Pivotはリレーションシップの作成を拒否し、エラーを表示します。
エラー: "relationship cannot be created because each column contains duplicate values"
対処法: データタブ → 重複の削除。「先頭行を見出しとして使用する」にチェックを入れ、キー列を選択し、OKをクリックします。Power Pivotを更新してから再試行してください。
- データ型の不一致
ディメンションテーブルのキー列とファクトテーブルの外部キーが異なるデータ型で保存されている場合(例:ProductsテーブルのProduct IDは数値、Salesテーブルではテキスト)。Power Pivotはリレーションシップの作成を許可しますが、値が正しく一致しないため分析結果が誤ります。
症状: エラーなしでリレーションシップが作成されるが、ピボットの合計値が誤っていたり、行が抜けていたりする。
対処法: 両テーブルのデータ型を揃え、両列が同じ型・同じ書式になるようにします。更新して再構築してください。
- 孤立した外部キー
ファクトテーブルに、ディメンションテーブルに存在しないキー値が含まれている場合。例:Salesの行がCustomer ID C099を参照しているが、Customersテーブルにその顧客が存在しない。これらの行は分析から自動的に除外され、ピボットテーブルに表示されず、合計値にも含まれません。
症状: ピボットの合計値が予想よりやや低くなる、特定の集計で空白行が現れる。
対処法: COUNTIFを使い、ディメンションテーブルに存在しないファクトテーブルのキーを特定します。ディメンションテーブルに不足行を追加するか、ファクトテーブルのキー値を修正してください。
- 空白のキー値
どちらかのテーブルのキー列に空白セルがある場合。ディメンションテーブルのキー列に空白があると、その行は一致できません。ファクトテーブルのキー列に空白があると、その売上行はどのディメンションにも割り当てられず、ピボット出力で無名の空白行にまとめられ、集計が歪みます。
症状: ピボット集計で空白行が現れ、未特定の顧客や商品の売上が吸収される。
対処法: キー列で空白をフィルターし、該当行を削除または正しいキー値で埋めます。すべてを更新し、ピボットを再構築してください。
トラブルシューティング チェックリスト
リレーションシップが期待通りに動作しない場合は、このチェックリストを順番に確認してください。各項目で一つの問題の可能性を排除してから次に進みます。
- ステップ1 — リレーションシップの存在確認
Power Pivot → デザインタブ → リレーションシップの管理を開きます。期待するリレーションシップが、正しいテーブル・正しい列でリストされているか確認します。誤った列でリンクしてしまうことも多いので注意してください。
- ステップ2 — 方向の確認
ダイアグラムビューで、リレーションシップ線上の1との表示を確認します。ディメンションテーブル側が1、ファクトテーブル側がである必要があります。逆の場合はリレーションシップを削除し、ディメンションテーブルからドラッグして再作成してください。
- ステップ3 — 主キーの重複確認
ワークシートでディメンションテーブルを選択し、キー列を選択して「データ → 重複の削除」(コピー上で)またはCOUNTIF関数で値が複数回現れるか確認します。簡単な方法:一時的な補助列に**=COUNTIF($A:$A, A2)**を追加し、1より大きい値でフィルターします。
- ステップ4 — データ型の確認
ディメンションテーブルのキー列の任意のセルをクリックし、ホームタブの「表示形式」グループで書式を確認します。ファクトテーブルの外部キー列も同様に確認します。両方とも同じ型(テキストまたは数値)である必要があります。
- ステップ5 — 孤立した外部キーの確認
ファクトテーブルの外部キー列でCOUNTIFを使い、ディメンションテーブルのキー列を参照します:=COUNTIF(Customers[CustomerID], Sales[CustomerID])。ゼロが返る行は、ディメンションテーブルに存在しない外部キー値です。該当行を調査し修正してください。
- ステップ6 — 空白の確認
ディメンションテーブルのキー列をフィルターし、空白行があるか確認します。ファクトテーブルの外部キー列も同様に確認します。どちらかに空白があれば、リレーションシップが正しく動作する前に解決が必要です。
タスク
このタスクでは、意図的に壊されたプロジェクトワークブックを使用します。目的は、リレーションシップの問題を特定し、元データを修正し、モデルが再び正しく動作することを確認することです。
このタスクは、ビデオで示されたトラブルシューティングの習慣と同じ内容に焦点を当てています。まずソーステーブルを確認し、ワークシート上でデータを修正し、データモデルを更新し、最後にピボットテーブルで検証します。
ワークブックを修復し、モデルが正しく動作し、4つのテーブルすべてで正確な分析ができるようにしてください。
ステップ1 — モデルの確認
ワークブックを開き、Customers、Products、Dates、Salesの4つのシートすべてを確認します。
次に、Power Pivot → 管理を開き、ダイアグラムビューまたはリレーションシップの管理に切り替えます。
テーブル内のデータをもとに、どのリレーションシップが欠落しているか、失敗しているか、または正しく動作しない可能性があるかを特定します。
ステップ2 — データの問題を特定して修正
このワークブックには、レッスンで扱った3種類のリレーションシップの問題が含まれています。これらを見つけて修正してください。
以下を確認します:
- ディメンションテーブルのキー列に重複値があるかどうか
- ディメンションテーブルのキー列に空白値があるかどうか
- ファクトテーブルの行の日付がDatesテーブルに一致する行を持たない場合
問題はワークシートのテーブルで直接修正してください。
ステップ3 — モデルの更新
修正が完了したら、データ → すべて更新に進み、データモデルを更新します。
その後、Power Pivot → 管理に戻り、モデルが正しいリレーションシップをサポートできることを確認します。
ステップ4 - ピボットテーブルで検証
このワークブックのデータモデルからピボットテーブルを作成し、修正が有効であることを確認します。
最低限、以下をテストしてください:
- CustomersのRegionとSalesのTotal
- ProductsのCategoryとSalesのTotal
- DatesのYearまたはMonthNameとSalesのTotal
ピボットテーブルの結果は、疑わしい空白行がなく、完全かつ妥当な内容である必要があります。
成功基準
タスクが完了したとみなされる条件:
- 重複キーの問題が修正されていること
- 空白キーの問題が修正されていること
- 欠落日付の問題が修正されていること
- モデルが4つのテーブルすべてで正しい分析をサポートしていること
ピボットテーブルの検証で、空白行のないディメンション値ごとの妥当な合計が表示されていること
Power Pivot内で別のリレーションシップを強制的に作成してリレーションシップの問題を修正しようとしないでください。必ず最初に元データを修正し、その後更新し、最後に検証してください。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください