複数のテーブルを 1 つのテーブルに結合する

完了

クエリを結合する機能は、さまざまなテーブルやクエリを追加またはマージできるので強力です。 次のような状況で、テーブルを 1 つのテーブルに結合できます。

  • テーブルが多すぎるため、過度に複雑なセマンティック モデルをナビゲートすることが困難である。

  • 複数のテーブルが同様のロールを持つ。

  • テーブルに含まれている列が 1 つまたは 2 つのみで、別のテーブルに収めることができる。

  • カスタム列のさまざまなテーブルから複数の列を使用する場合。

これらのテーブルは、マージと追加という 2 つの異なる方法で結合できます。

営業チームと HR チーム向けに Power BI レポートを開発しているとします。 それらのチームは、すべての従業員、仕入先、顧客の連絡先情報と所在地が記載された連絡先情報レポートを作成するよう求めています。 次の図に示すように、HR.Employees テーブル、Production.Suppliers テーブル、および Sales.Customers テーブルにデータがあります。

ただし、このデータは複数のテーブルから取得されるので、これらの複数のテーブルのデータをマージし、レポートの作成元となる 1 つの正しいソース テーブルを作成する方法を判断することがジレンマとなります。 Power BI の固有の機能により、クエリを 1 つのテーブルに結合およびマージできます。

クエリの追加

クエリを追加すると、別のテーブルまたはクエリにデータ行が追加されます。 たとえば、2 つのテーブルがあり、1 つは 300 行でもう 1 つは 100 行である場合、クエリをアペンドすると、400 行になります。 クエリをマージすると、あるテーブル (またはクエリ) の列が別のテーブル (またはクエリ) に追加されます。 2 つのテーブルをマージするには、2 つのテーブル間のキーとなる列が必要です。

前述のシナリオでは、HR.Employees テーブルに Production.Suppliers テーブルおよび Sales.Customers テーブルを追加することで、連絡先情報のマスター リストが 1 つ作成されます。 従業員、仕入先、および顧客のすべての連絡先情報を含む 1 つのテーブルを作成する必要があるため、クエリの結合時には、結合されたテーブルで必要な関連する列に、元のデータ テーブルの列と同じ名前を付けて、1 つの統合ビューを表示する必要があります。

クエリの結合を開始する前に、このタスクに必要のない余分な列をテーブルから削除できます。 このタスクを完了するには、各テーブルを、関連情報を含む 4 つの列のみになるようフォーマットし、すべての列ヘッダーが ID、会社、名前、電話番号と同じになるように名前を変更します。 次の図は、再フォーマットされた Sales.Customers テーブル、Production.Suppliers テーブル、および HR.Employees テーブルのスニペットです。

再フォーマットが完了したら、クエリを結合できます。 Power Query エディター リボンの ホーム タブで、クエリの追加 のドロップダウン リストを選択します。 クエリを新規クエリとして追加 を選択すると、追加の出力によって新しいクエリまたはテーブルが生成されます。また、クエリの追加 を選択すると、既存のテーブルから別のテーブルに行が追加されます。

次のタスクでは、新しいマスター テーブルを作成します。したがって、クエリを新規クエリとして追加 を選択する必要があります。 この選択により、次の図に示すように、追加するテーブルを使用可能なテーブルから追加するテーブルに追加できるウィンドウが表示されます。

目的のテーブルを追加したら、OKを選択します。 次の図に示すように、3 つのすべてのテーブルのすべての行を含む新しいクエリに移動します。

これで、従業員、仕入先、および顧客の情報を含むマスター テーブルを正常に作成できました。 Power Query エディターを終了して、このマスターテーブルを囲む任意のレポート要素を作成できます。

ただし、あるテーブルから別のテーブルにデータを追加するのではなく、テーブルをマージする場合は、プロセスが異なります。

クエリのマージ

クエリをマージする場合、複数のテーブルのデータを、テーブル間で共通の列に基づいて 1 つに結合します。 このプロセスは SQL の JOIN 句に似ています。 販売チームが、注文とそれに対応する詳細 (現在 2 つのテーブルにある) を 1 つのテーブルに統合することを希望している、というシナリオを考えてみましょう。 このタスクを実行するには、次の図に示すように、Orders と OrderDetails という 2 つのテーブルをマージします。 これら 2 つのテーブル間に共通する列は、OrderID です。

Power Query エディター リボンの ホーム タブに移動し、クエリのマージ ドロップダウン メニューを選択して、新しいクエリとしてマージ を選択します。 これを選択すると、新しいウィンドウが開きます。このウィンドウでは、マージするテーブルをドロップダウン リストから選択し、テーブル間で一致する列 (この例では orderid) を選択できます。

また、2 つのテーブルを結合する方法も選択できます。このプロセスも、SQL の JOIN ステートメントに似ています。 これらの結合オプションには以下のものが含まれます。

  • 左外部 - 1 つ目のテーブルのすべての行と、2 つ目のテーブルの一致する行のみを表示します。

  • 完全外部 - 両方のテーブルのすべての行を表示します。

  • 内部 - 2 つのテーブル間で一致する行を表示します。

このシナリオでは、左外部を選択します。 OK を選択します。これにより、マージされたクエリを表示できる新しいウィンドウに移動します。

これで、2 つのクエリまたはテーブルをさまざまな方法で結合して、ビジネス要件に最も適した方法でデータを表示できるようになりました。

このトピックの詳細については、Power BI でのデータの構築と結合ドキュメントを参照してください。