リレーションシップの問題の診断と修正
メニューを表示するにはスワイプしてください
ダイアグラムビューで正しく見えるモデルを構築することと、正しい数値を出力するモデルを構築することは同じではありません。見た目には妥当でも実際とは異なる合計値など、エラーが表示されない静かな誤った結果は、問題の兆候がないためエラーメッセージよりも危険です。
4つの根本原因
- 主キーの重複値
ディメンションテーブルに同じキー値が複数行に含まれている場合。一対多リレーションシップの「一」側には一意の値が必要なため、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つを試してチャットを始めてください