BI探検ノート

Power BI で、スライサーが別のテーブルのグラフに効かないときの直し方(リレーションシップ)

約7分

目次
  1. 動画で見る(1分28秒)
  2. 何が起きたか
  3. 直し方: モデルビューで、つなぐ
  4. カーディナリティの名前
  5. 結ぶ列に、重複があるとき
  6. 公式の記載との照合
  7. この記事で確認できたこと・できていないこと
  8. 参考

確認日2026年10月20日。Power BI Desktop(日本語版、2.159.883.0)で、ダミーのデータを使って確かめました。確認できていないことは、末尾にまとめました。

店舗マスタの「エリア」のスライサーを選んでも、売上のグラフが変わらない。2つのテーブルの間に、リレーションシップ(つながり)がないときの症状です。

結論(30秒版)

  • スライサーのテーブルと、グラフのテーブルの間に、リレーションシップがないと、スライサーを選んでも、グラフは変わりませんでした。
  • 直すには、モデルビューで、2つのテーブルの、同じ内容の列(ここでは「店舗コード」)を、ドラッグして結びます。
  • 結ぶ側の列に、重複した値があると、「多対一」では保存できませんでした。重複を、先に確認します。

動画で見る(1分28秒)

ナレーションは、音声合成(Microsoft Haruka)です。動画は、YouTubeでも見られます。手順の文章は、下に書きました。

何が起きたか

ダミーの2つの CSV を読み込みました。

  • sales(売上): 日付、店舗コード(S01〜S05)、売上。20行。
  • stores(店舗マスタ): 店舗コード、店舗名、エリア(東京・大阪)、席数。5行。

棒グラフ(店舗コード別の売上の合計)と、stores の「エリア」のスライサーを置いて、「東京」を選びました。グラフは、5本のまま、変わりませんでした。

「東京」を選んだスライサー(下)と、店舗コード別の売上の棒グラフ(上)。棒は、S03、S01、S04、S02、S05 の5本のまま変わっていない

私の環境では、2つの CSV に、同じ名前の「店舗コード」の列があると、読み込んだだけで、リレーションシップが自動で作られました。この症状を再現するために、「リレーションシップの管理」で、そのリレーションシップを削除しました。列の名前が違う場合に、自動で作られないかどうかは、確認していません。

直し方: モデルビューで、つなぐ

  1. 左端の3つ目のアイコン(ツールチップは「モデル ビュー」)を押します。
  2. sales の「店舗コード」を、stores の「店舗コード」へ、ドラッグします。
  3. 「新しいリレーションシップ」のダイアログが出ます。私の画面では、次のように、自動で入りました。
    • カーディナリティ: 多対一 (*:1)
    • クロスフィルターの方向: 単一
    • 「このリレーションシップをアクティブにする」: オン
  4. 「保存」を押します。

「新しいリレーションシップ」のダイアログ。テーブルから sales、テーブル表示 stores、いずれも「店舗コード」が選ばれ、カーディナリティは「多対一 (*:1)」、クロスフィルターの方向は「単一」

モデルビューに、線ができました。sales 側に「*」、stores 側に「1」が付いています。

モデルビュー。sales と stores のカードが線で結ばれ、sales 側に「*」、stores 側に「1」が付いている

レポートに戻ると、スライサーは「東京」のままで、グラフが、東京の3店(S03、S01、S05)に絞られました。

リレーションシップを作ったあとの画面。スライサーは「東京」で、棒グラフは S03、S01、S05 の3本だけになっている

「リレーションシップの管理」(ホームの「リレーションシップ」)からも、作ったり、削除したりできます。このダイアログには、「新しいリレーションシップ」「自動検出」「編集」「削除」のボタンがあります。

カーディナリティの名前

「新しいリレーションシップ」のカーディナリティの選択肢は、次の4つでした。

  • 多対一 (*:1)
  • 一対一 (1:1)
  • 一対多 (1:*)
  • 多対多 (:)

クロスフィルターの方向の選択肢は、「単一」と「双方向」でした(「両方」ではありません)。

結ぶ列に、重複があるとき

店舗マスタに、S03 が2行ある CSV(stores_dup)で、同じ操作をしました。

  • sales の「店舗コード」を、重複のある側の「店舗コード」にドラッグすると、カーディナリティが、自動で「多対多 (:)」、クロスフィルターの方向が「双方向」になり、警告が出ました。

多対多になったときの警告。「このリレーションシップのカーディナリティは多対多です。これを使用するのは、列がいずれも一意の値ではないことと…」と出ている

  • 手で「多対一」に変えると、次のエラーで、保存できませんでした。

列 ” (テーブル ”) には重複する値 ‘S03’ が含まれています。これは多対一のリレーションシップの一の側にある列としても、テーブルの主キーとして使用される列としても許可されていません。

「多対一」にしたときのエラー。重複する値 'S03' が含まれている、と出て、「保存」が押せない

エラー文では、列名とテーブル名の所が、空の '' と表示されました。重複している値(ここでは S03)は、表示されます。

「一」の側(マスタ)には、重複のない値(主キー)が必要です。重複があるときは、先に、データを確認して、重複を直すのが、基本と考えられます(この記事では、多対多で保存した場合の集計は、確認していません)。

また、重複のあるテーブルを足すと、元のテーブルとの間に、別のリレーションシップが自動で作られ、「あいまいなパスがあります」というエラーも、出ました。リレーションが、いくつかの道でつながってしまう状態です。

公式の記載との照合

Microsoft Learn(日本語版)「Power BI Desktop でのリレーションシップの作成と管理」(確認日 2026年10月20日)と、私の観察を、突き合わせました。

  • 自動検出: 公式には、データを読み込むとき、列名を調べて、高い信頼度で一致するものがあれば、リレーションシップを自動で作る、と書かれています。同じ名前の列で自動で作られた、私の観察と合っています。
  • 名前: カーディナリティ(多対一・一対一・一対多・多対多)と、クロスフィルターの方向(単一・双方向)は、公式の名前と同じでした。
  • 一対一になる場合: 公式の例にも、結ぶ列の値がどちらも一意だと、「一対一」「双方向」が自動で設定される、と書かれています。
  • エラーの文言が違う: 公式には、一意の値がないときのエラーとして、「いずれかの列に、一意の値が必要です」と書かれています。私の画面では、本文に書いた、別の文言(重複する値 ‘S03’ が含まれています…)でした。文言は、バージョンで違うと考えられます。
  • 多対多の説明が違う: 公式は、多対多を「複合モデルでは」と説明していますが、私の環境(インポートのモデル)でも、多対多のまま保存できる警告が出ました。公式の説明が、古い可能性があります(確認はしていません)。

この記事で確認できたこと・できていないこと

確認日: 2026年10月20日。Power BI Desktop(Windows、日本語版、2.159.883.0、未サインイン)、ダミーの CSV(sales 20行、stores 5行、重複版 6行)。画面や名称は、バージョンで変わることがあります。

確認できたこと

  • 同じ名前の列があると、読み込んだだけで、リレーションシップが自動で作られたこと
  • リレーションシップがないと、スライサーがグラフに効かず、作ると効くこと
  • 「新しいリレーションシップ」のカーディナリティとクロスフィルターの方向の名前
  • 結ぶ列に重複があると、自動で「多対多」になり、手で「多対一」にすると、保存できないこと(エラーの原文)

確認できていないこと

  • 列の名前が違うときに、リレーションシップが自動で作られないかどうか
  • 「自動検出」ボタンの動作(公式には、「モデリング」タブの「リレーションシップの管理」の「自動検出」と書かれています)
  • 多対多で保存したあとの集計の動き
  • 「参照整合性を想定」などの項目の意味と動作
  • Power BI サービス、ほかのバージョン、英語版での名称

参考

この記事で使った用語

Power BI Desktop
Windows で動く、レポートを作るためのアプリです。データの取り込みとモデルの作成、レポートの作成に向いています。
セマンティックモデル
レポートやグラフに使える状態に整えた、データの元です。作り方の1つは、モデルを含む Desktop のファイルを、Power BI サービスにアップロードすることです。

用語集をすべて見る