完全外部結合

Power Query の [マージ] ダイアログ ボックスで使用できる結合の種類として完全外部結合があります。これは、左右のテーブルのすべての行を結合するものです。 詳細情報: マージ操作の概要に関するページ

完全外部結合の例。

図の左側には、Date、CountryID、Units の列を含むテーブルがあります。 強調表示された CountryID 列の行 1 と行 2 には値 1、行 3 には値 3、行 4 には値 2 があります。 右側のテーブルには、ID 列と Country 列が含まれています。 ハイライト表示された ID 列には、1 行目に 値 1 (米国を示す)、2 行目には値 2 (カナダを示す)、3 行目には値 3 (パナマを示す)、4 行目には値 4 (スペインを示す) があります。 最初の 2 つのテーブルの下のテーブルには、Date、CountryID、Units、Country の列があります。 CountryID の値に従い、すべての行が数値順に並べ替えられています。 CountryID の番号に関連付けられている国が Country 列に表示されます。 スペインの CountryID が左側のテーブルになかったため、新しい行が追加され、この行の Date、CountryID、Units の値が null に設定されます。

この記事では、サンプル データを使用して、完全外部結合でマージ操作を実行する方法を示します。 この例のサンプル ソース テーブルは、次のとおりです。

  • Sales: このテーブルには、フィールド DateCountryIDUnits が含まれます。 CountryID は、Countries テーブルの一意の識別子を表す整数値です。

    Date、CountryID、Units の列を含む Sales テーブル。CountryID は行 1 と行 2 で 1、行 3 で 3、行 4 で 2 に設定されています。

  • Countries: これは、idCountry のフィールドを持つ参照テーブルです。 id フィールドは、各レコードの一意の識別子を表します。

    id 列と Country 列を含む Country テーブル。id は行 1 では 1、行 2 では 2、行 3 では 3、行 4 では 4 に設定されています。

この例では、Sales テーブルを左テーブルとし、Countries テーブルを右テーブルとして、両方のテーブルをマージします。 結合は、次の列間で行われます。

Sales テーブルのフィールド Countries テーブルのフィールド
CountryID ID

目標は、国名が Sales テーブルの新たな Country 列として表示される次のようなテーブルを作成することです。 完全外部結合のしくみにより、どちらかのテーブルにのみ存在する値であっても、左右のテーブルのすべての行が取り込まれます。

完全外部結合操作の最終テーブル。

Sales テーブルから取得した Date、CountryID、Units の列と、Country テーブルから取得した Country 列を含む完全外部結合の最終テーブル。 スペインのデータを含めるために 5 行目が追加されましたが、この行では Date、CountryID、Units の列が null になっています。Sales テーブルではスペインに関しこれらの値が存在しなかったためです。

完全外部結合を実行するには

  1. Sales クエリを選択し、[クエリのマージ] を選択します。
  2. [マージ] ダイアログ ボックスの [マージ用の右テーブル][Countries] を選択します。
  3. Sales テーブルで、CountryID 列を選択します。
  4. Countries テーブルで id 列を選択します。
  5. [結合の種類] セクションで [完全外部] を選択します。
  6. [OK] を選択します。

上記の完全外部結合手順の実施の結果を示す [マージ] ダイアログ ボックス。

Note

Ctrl キーを押しながら列を選択すると、複数の列を結合できます。

ヒント

ダイアログ ボックスの下部にある「選択内容は、最初のテーブルの 4 行のうち 4 行と、2 番目のテーブルの 4 行のうち 3 行に一致します。」というメッセージをよく見てください。このメッセージは、この操作から得られる結果を理解するために非常に重要です。

Country テーブルでは、Country 列に含まれるスペインの id は 4 ですが、Sales テーブルには CountryID が 4 のレコードはありません。 このため、右側のテーブルの 4 行中 3 行だけが一致しました。 左側のテーブルの行と一致しなかった右側のテーブルのすべての行がグループ化され、出力テーブルの新たな行に表示され、左側のテーブルのフィールドの値は表示されません。

完全外部結合の左側のテーブルにスペインに一致する行はないため、スペインの Date、CountryID、Units の値は null になります。

マージ操作後に新たに作成した Countries 列から Country フィールドを展開します。 [元の列名をプレフィックスとして使用します] チェック ボックスをオンにしないでください。

Country のテーブル列を展開します。

この操作を実行すると、次の図のようなテーブルが作成されます。

完全外部結合の最終テーブル。

Sales テーブルから取得した Date、CountryID、Units の列と、Countries テーブルから取得した Country 列を含む完全外部結合の最終テーブル。 スペインのデータを含めるために 5 行目が追加されましたが、この行では Date、CountryID、Units の列が null になっています。Sales テーブルではスペインに関しこれらの値が存在しなかったためです。