
複数のテーブルを操作していて、フィルターやスライサーで期待通りの結果が得られないという問題に直面したことがあるなら、それは必ずしもあなたのミスではないかもしれません。Power BI は複数のテーブルからデータを結合する際に、テーブル間のリレーションシップに依存します。リレーションシップが存在しない場合、または適切なリレーションシップを作成していない場合、ビジュアルはエラーを返す可能性が高くなります。これらのエラーは多くのフラストレーションを引き起こし、解決が困難になる可能性があります。
このチュートリアルでは、Power BI リレーションシップとは何か、Power BI がリレーションシップを自動的に作成することがある場合があること、また、リレーションシップを手動で作成する方法について説明します。
参照:採用キット: Microsoft Power BI 開発者(TechRepublic Premium)
Windows 10 64ビットシステムでMicrosoft Power BI Desktopを使用してデモを行いますが、Power BIサービスを使用してこのタスクを実行することもできます。デモを実行するには、こちらからデモ用の.pbixファイルをダウンロードするか、ご自身のデータを使用してください。このファイルには、Adventure Works Salesの3つのテーブルが含まれています。このファイルはGitHubからダウンロードできます。
ジャンプ先:
- Power BI にはどのような関係がありますか?
- Power BI でデータをインポートするときに関係を確立する方法
- Power BIで関係性を表示する方法
- Power BIでリレーションシップを作成する方法
- Power BI 関係を確立するための追加のヒントとコツ
Power BI にはどのような関係がありますか?
Power BI でダッシュボードを設計する際に、リレーションシップについてよく知らないと不利になります。Power BI テーブル間のリレーションシップは、データを視覚的にわかりやすくまとめる上で重要です。例えば、注文データと顧客データが別々のテーブルに保存されている場合(そうあるべきですが)、2 つのテーブル間にリレーションシップがなければ、特定の顧客への注文を照合することはできません。
参照: Power BI でフィールド パラメータを作成する方法(TechRepublic)
これらの関係を、家族関係と同じように考えてみましょう。あなたには親がいて、その親には他にも子供がいるかもしれません。あなたとこの親の関係は、親もあなたも一人ずつなので、一対一の関係です。一方、あなたの親とその子供全員の関係は、一対多の関係です。
Power BI で作業する際に考慮すべき関係には、主に 3 つの種類があります。Power BI は通常、ユーザーに代わって関係を適切に処理するため、これらの 3 種類の関係について深く理解する必要はありません。ただし、基本的な理解があれば、自分で理解しなければならない場合に役立ちます。
一対一(1:1)
どちらのテーブルにも、リレーションシップの両側に一致するレコードは1つしか存在できません。1対1のリレーションシップのほとんどは、ビジネスルールによって強制されるものであり、データから自然に導き出されるものではありません。
1対多(1:*)と多対1(*:1)
1つのテーブルには、関連テーブル内のレコードとは全く関連しない、1つだけ、あるいは複数のレコードと関連しているレコードが1つだけ含まれます。この関係は、複数の子供を持つ親とあなたとの関係に似ています。
多対多 (*:*)
両方のテーブルの各レコードは、もう一方のテーブルの任意の数のレコード(またはレコードなし)と関連付けることができます。これらのテーブルを他の2つのテーブルに関連付けるには、関連テーブルと呼ばれる3番目のテーブルが必要です。
Power BI でデータをインポートするときに関係を確立する方法
嬉しいことに、Power BI はデータをインポートする際に、関係性を解釈して作成することができます。お好きな関連データをインポートしたり、ダウンロード可能なデモ用の .xlsx ファイルを使って作業したりすることも可能です。
デモ テーブルをインポートするには、次の手順を実行します。
- Power BI を開きます。
- レポート ウィンドウで、[Excel からのデータのインポート] をクリックするか、[データの取得] ドロップダウンを使用して Excel ブックを選択します。
- 表示されるダイアログで、Excel ファイルを選択し、「開く」をクリックします。
- 次のウィンドウにはExcelの表とシートが表示されます。このワークブックには3つのシートがあり、各シートにはExcelの表が含まれています。どちらも同じデータを表すため、どちらか一方にチェックを入れることはできますが、両方にチェックを入れることはできません。シートには不要なデータが含まれている可能性があるため、表オブジェクト(図A )をインポートすることをお勧めします。
図A

- 「ロード」をクリックしてお待ちください。1~2分かかる場合があります。
図Bは「フィールド」ペインのテーブルを示しています。必要に応じて、フィールドを展開して確認したり、名前を変更したりしてください。ここでは関係性を示す証拠は表示されません。
図B

データに馴染みがない場合は、データウィンドウで各テーブルを確認することをお勧めします。図Cは顧客テーブルを示しています。これにより、列名とデータ型を確認し、リレーションシップを検討する際に他のテーブルと照合することができます。
図C

データを読み込むと、Power BI はリレーションシップの検索と作成を試みます。これは、列名を比較して一致する可能性のある列を探すことで行われます。一致する列が見つからない場合、リレーションシップは作成されません。この例では、Power BI はリレーションシップを作成しました。
Power BIで関係性を表示する方法
リレーションシップを表示または作成するには、「モデル」タブをクリックします。図Dに示すように、Power BI によって TableSales と TableSalesOrder という 2 つのテーブル間のリレーションシップが作成されました。
図D

これは自動的に行われましたが、なぜでしょうか? Power BI がこの関係を作成できたのは、次の 2 つの理由からです。
- どちらのテーブルにも、同様の名前の列があります。
- これらの列の少なくとも 1 つには一意の値のみが含まれています。
Power BI によって作成されたリレーションシップの種類を確認するには、2 つのテーブル間の線をダブルクリックします。図 Eに示すように、ウィンドウにリレーションシップに関する情報が表示されます。リレーションシップを編集することもできます。どちらのテーブルにも SalesOrderLineKey という列があることに注目してください。
図E

下部を見ると、Power BI が両方のテーブルの SalesOrderLineKey 列に基づいて 1 対 1 のリレーションシップを作成していることがわかります。つまり、両方のテーブルで SalesOrderLineKey の値が一致するレコードは 1 つだけです。[OK] をクリックしてレポート ウィンドウに戻り、両方のテーブルを基にシンプルなビジュアルを作成します。
図 Fに示すシンプルなビジュアルを構築するには、次の手順を実行します。
- [視覚化] ペインでテーブル ビジュアルをクリックします。
- フィールド ペインで、TableSales を展開し、売上金額と合計製品コストを確認します。
- TableSalesOrder を展開し、Sales Order をチェックします。
図F

2つのテーブル間にリレーションシップがない場合、Power BI でビジュアルを作成することはできますが、データが正しく表示されません。ビジュアルの「多」側、つまり集計側には、すべてのレコードの合計、平均など、同じ値が表示されます。
これらのキーフィールドについてご興味がおありでしたら、デフォルトではビジュアルには表示されません。ビジュアルに追加することは可能ですが、一般的に、エンドユーザーにとって有益な情報は提供されません。
むしろ、これらの値はレコードを一意に識別するのに役立ちます。リレーショナルデータベース理論では、これらは主キーと外部キーと呼ばれます。関係の片側には、一意の値を持つ列が必要です。よりシンプルなデータセットでは、顧客名や注文番号などの自然なデータを使用してデータを関連付けることができます。
Power BIでリレーションシップを作成する方法
データをインポートし、Power BI が作成したリレーションシップを確認した後、何かが足りないことに気づくかもしれません。Power BI では、データセット間で共有されるべきリレーションシップがすべて検出されていない可能性があります。リレーションシップが見落とされていると思われる場合は、自動検出機能を使用して新しいリレーションシップを検出してください。この機能はまさにその名の通り、新しいリレーションシップの検出を試みます。
それでは、AutoDetect を実行して何が起こるか見てみましょう。
- レポート ウィンドウで、[モデリング] タブをクリックします。
- 「関係の管理」をクリックします。この機能では、既存の関係の一覧が表示されます。
- [自動検出]をクリックします。
図 Gからわかるように、この機能では新しい関係は見つかりませんでした。しかし、この機能を独自のデータで使用することを躊躇しないでください。
図G

「閉じる」を2回クリックしてレポートウィンドウに戻ります。場合によっては、手動でリレーションシップを作成する必要があります。
Power BI リレーションシップを手動で作成する方法
他の方法がすべてうまくいかない場合は、リレーションシップを自分で作成する必要があるかもしれません。そのためには、「モデリング」ウィンドウに戻ります。以前と同じように、3つのテーブルと、そのうち2つのテーブル間のリレーションシップが1つ表示されています。TableCustomersテーブルには他の2つのテーブルとの共通フィールドがないため、リレーションシップを作成できません。これは正常な動作です。テーブルによってはリレーションシップがまったくない場合もあれば、複数のテーブルとリレーションシップがある場合もあります。
まず、既存のリレーションシップを削除してから、再度作成してみましょう。削除するには、図Hに示すように、2つのテーブルを接続する線を右クリックし、「削除」を選択します。次に、「はい」をクリックして要求を確認します。
図H

リレーションシップを再作成するには、「リレーションシップの管理」をクリックし、「自動検出」をクリックします。今度は、図Iに示すように、リレーションシップが検出され、作成されます。
図I

図 Jに示すように、「閉じる」をクリックして関係を確定します。次に、「閉じる」をクリックしてモデリングウィンドウに戻ります。
図J

モデリングウィンドウでフィールドを別のフィールドにドラッグすることで、手動でリレーションシップを作成することもできます。まず、リレーションシップをもう一度削除してから、以下の操作を行います。
- どちらかのテーブルで SalesOrderLineKey フィールドをクリックします。
- 関連テーブル内の同じフィールドにドラッグして放します。
AutoDetect を使用して Power BI 関係を作成する方法
自動検出機能を使用してリレーションシップを作成することもできます。まず、リレーションシップを3回削除し、「自動検出」をクリックします。表示されるダイアログで、以下の操作を行います。
- [新規]をクリックします。
- 表示されるダイアログの最初のドロップダウンから、いずれかのテーブルを選択します。
- 2番目のドロップダウンで、リレーションシップ内のもう一方のテーブルを選択します。これでPower BIでリレーションシップを作成できます(図K)。
図K

- [OK]をクリックし、[閉じる]をクリックしてモデリング ウィンドウに戻ります。
ビジュアルをサポートするリレーションシップが期待どおりに動作しない場合にトラブルシューティングを行う際は、ビジュアルを一時的にテーブルに変更してください。テーブルビジュアルでは問題を見つけやすくなります。
Power BI 関係を確立するための追加のヒントとコツ
Power BI がリレーションシップの作成に失敗した場合は、次のようにシステム オプションを確認します。
- [ファイル] タブをクリックし、[オプションと設定] を選択して、右側の [オプション] を選択します。
- 表示されるダイアログで、現在のファイルの下の「データのロード」をクリックします。
- 関係オプションを確認します。1番目と3番目のオプションにチェックが入っている必要があります(図L)。
図L

- [OK]をクリックしてオプションダイアログを閉じます。
2つ目のオプションはデフォルトでオフになっています。このオプションを有効にすると、データセットを更新する際にデータソースのリレーションシップの変更が検索されます。Power BIは、基盤となるリレーションシップが変更された場合、そのリレーションシップを更新します。このオプションは必要な場合には便利ですが、無効にしておくことをお勧めします。
参照:採用キット: データベースエンジニア(TechRepublic Premium)
ここまでで、テーブル間のリレーションシップとは何か、そしてPower BI においてなぜそれが重要なのかについて、ある程度理解できたと思います。また、データのインポート時に Power BI がリレーションシップを作成しなかった場合に、リレーションシップを作成する方法も理解できたと思います。
次に読む:最高のビジネス インテリジェンス ツール(TechRepublic)