📊

1側のキー列に空白が含まれているため、1対多のリレーションシップを作成できない

に公開

はじめに

Power BI Desktop でリレーションシップを作成する際、1側(1対多の“1”側)となるテーブルのキー列に空白が含まれていると、リレーションシップが作成できずエラーが発生します。

「1側のキー列に空白値が含まれているため、リレーションシップを作成できない」 の原因と対処方法を記載します。

概要

1対多リレーションシップでは、 1側となるキー列は「一意であること」と「空白を含まないこと」が必要です。
空白は「有効なキー値として扱えない値」であり、そのため1つでも存在すると、1側キーの条件である 一意性 が成立しません。
この状態では 1対多リレーションシップを作成できないため、1側(1対多の“1”側)となるテーブルのキー列の値を修正し、その後にリレーションシップの設定を行います。

詳細

Power BI Desktop でデータを読込した後、モデルビューを開きリレーションシップの編集を行います。
データモデルでキー列が一意であるにもかかわらず、1対多のリレーションシップを設定しようとすると警告が発生します。(図1)
またこの状態で「保存」を選択しても検証ができないというメッセージが表示され、「確認」を選択してもリレーションシップが保存されません。(図2)

<図1: リレーションシップの設定画面>
ErrorDialog

<図2: エラー画面>
ErrorMessage

解決方法

概要

1側のキー列に空白が含まれている場合は、他の値が一意である場合にも一意性が認識されず、1対多のリレーションシップの設定ができません。
対応方法として1側キー列のデータの確認および置換方法の手順を次に記載します。

方法(手順)

  1. データの確認

    • Power BI Desktop のテーブルビューで、キー列に空白が含まれていないか確認します。
      Datatable
    • 大量にデータがある場合は、列フィルタを利用して確認が可能です。
      FilterRecord
  2. データの置換

  • 空白が含まれている場合は、Power Queryのデータ前処理などで空白値を置換または削除します。
    1. Power Queryで修正を行う場合は、「空の削除」機能を利用することで削除可能です。
      DeleteEmptyRows
    2. Power Query の修正後、「閉じて適用」をクリックし、変更内容をデータモデルに反映します。
      ApplyButton
  1. リレーションシップの作成
  • データの置換により、1対多のリレーションシップが設定できるようになりました。
    1. モデルビューで、新しいリレーションシップを作成します。
    2. 「一対多」でエラーメッセージが表示されず設定できるようになりますので、「保存」をクリックします。
      NewRelationship
    3. モデルビューで新しいリレーションシップが「1対多」で作成されました。
      CreatedRelationship

参考

https://community.fabric.microsoft.com/t5/Desktop/Handling-null-in-one-to-many-relationship/td-p/1701807

BIによる業務改善推進

Discussion