複数のテーブルを 1 つのテーブルに結合する
クエリを結合する機能は、さまざまなテーブルやクエリを追加またはマージできるので強力です。 次のような状況で、テーブルを 1 つのテーブルに結合できます。
テーブルが多すぎるため、過度に複雑なセマンティック モデルを操作するのが難しい。
複数のテーブルが同様のロールを持つ。
テーブルに含まれている列が 1 つまたは 2 つのみで、別のテーブルに収めることができる。
カスタム列のさまざまなテーブルから複数の列を使用する場合。
これらのテーブルは、マージと追加という 2 つの異なる方法で結合できます。
営業チームと人事チームの Power BI レポートを作成しているとします。 各従業員、仕入先、および顧客の連絡先情報と場所を含む連絡先情報レポートを作成するように求められました。 次の図に示すように、HR.Employees テーブル、Production.Suppliers テーブル、および Sales.Customers テーブルにデータがあります。
ただし、このデータは複数のテーブルから取得されるので、これらの複数のテーブルのデータをマージし、レポートの作成元となる 1 つの正しいソース テーブルを作成する方法を判断することがジレンマとなります。 Power BI の固有の機能を使用すると、クエリを結合して 1 つのテーブルにマージすることができます。
クエリを追加する
クエリを追加すると、別のテーブルまたはクエリにデータ行が追加されます。 たとえば、2 つのテーブルがあり、1 つは 300 行でもう 1 つは 100 行である場合、クエリを追加すると、400 行になります。 クエリをマージすると、1 つのテーブル (またはクエリ) から別のテーブルに列が追加されます。 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 でのデータの整形と結合に関する記事をご覧ください。