Power BIで複数のテーブルを紐づける方法

こんにちは、あおいです。
医療脱毛10回目を終えた感想。バチバチに痛い。ただ、快適度がグンと増すので、自己投資として得られるリターンがかなり大きい。

さて、Power BIは取り込んだ複数のテーブルの情報を紐づけて、データ加工・可視化をすることが可能です。

Power BIで複数のテーブルを紐づける場合、以下の2つの方法があります。
・Power Queryの[クエリのマージ]で結合する
・モデル画面でリレーションを設定する

それぞれメリット・デメリットが存在するので状況に応じて、上記の2つの方法を使い分ける必要があります。

そこで、今回は複数のテーブルを紐づける2つの方法とメリット・デメリットを紹介したいと思います。

以下のExcelをデータソースとして、Power BIで[受注テーブル]に[商品マスタ]と[顧客マスタ]を紐づけます。





Power Queryの[クエリのマージ]で結合する場合

[データを取得]からExcelのデータを読み込み、[受注テーブル][商品マスタ][顧客マスタ]を選択して[データの変換]を行います。





Power Queryエディタが開くので、左側に表示されている[受注テーブル]を選択した状態で、[クエリのマージ]を選択します。






[受注テーブル]と[商品マスタ]の[商品ID]列を選択して、[結合の種類]はデフォルトのままで[OK]を選択します。この場合、紐づけるキーが[商品ID]列になります。





[商品マスタ]という新しい列が作成されます。こちらの列の右上のボタンを選択し、[商品名称][金額]にチェックして[OK]を選択します。





こちらの手順で[受注テーブル]と[商品マスタ]を紐づけて、[商品名称]と[金額]の列を結合することが出来ます。[顧客マスタ]も同様の手順です。





モデル画面でリレーションを設定する場合

[データを取得]からExcelのデータを読み込み、[受注テーブル][商品マスタ][顧客マスタ]を選択して[読み込み]を行います。Power Queryエディタでの編集はしません。




左側の[モデル]を選択します。





既にテーブル同士の紐づけ(リレーション)が自動的に設定されています。
今回の場合、[受注テーブル]と[商品マスタ]は多対1、[受注テーブル]と[顧客マスタ]は多対1の関係性にあります。





手動で紐づけ(リレーション)を設定したい場合、線を右クリックで選択して削除します。





[商品マスタ]の[商品ID]を[受注テーブル]の[商品ID]にドラッグ&ドロップします。




また、線を右クリックで[プロパティ]を選択することで、リレーション設定の編集が可能です。


Power Queryの[クエリのマージ]のメリット・デメリット

メリットは1テーブルに列を結合するので視覚的に分かりやすい点ですが、デメリットは結合する列が増えるので処理速度のパフォーマンスが落ちる可能性があります。

モデル画面の[リレーション設定]のメリット・デメリット

メリットはデータ量が多くても処理速度は比較的軽量ですが、たまに意図していないリレーションが自動的に設定されてしまうので注意が必要です。

参考記事
クエリのマージの概要 – Power Query | Microsoft Docs
Power BI Desktop でのリレーションシップの作成と管理 | Microsoft Docs