Left Anti Join

Power Query の [マージ] ダイアログ ボックスで使用できる結合の種類の 1 つとして 左反結合 があります。これは、右テーブルと一致する行のない左テーブルの行のみを取り込みます。 詳細情報: マージ操作の概要に関するページ

左反結合の例。

図は、日付、 CountryID、および ユニット 列を含む左側のテーブルを示しています。 強調表示された CountryID 列の行 1 と行 2 には値 1、行 3 には値 3、行 4 には値 2 があります。 右側のテーブルには、ID 列と Country 列が含まれています。 強調表示された ID 列には、行 1 に 3 (パナマを示す)、行 2 に 4 (スペインを示す) の値が含まれています。 最初の 2 つのテーブルの下のテーブルには、日付、CountryID、ユニット、Country の列があります。 このテーブルには 3 つの行があり、2 つの行には CountryID 1 のデータが、1 つの行には CountryID 2 のデータが含まれています。 残りの CountryID はどれも右側のテーブルの国/地域と一致しないため、結合されたテーブルの Country 列の行はすべて null を含みます。

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

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

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

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

    ID が行 1 で 3、行 2 で 4 に設定され、Country は行 1 ではパナマ、行 2 ではスペインに設定されている Countries テーブルのスクリーンショット。

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

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

目標は、右テーブルのいずれの行とも一致しない左テーブルの行のみが維持される次のようなテーブルを作成することです。

左反結合の最終テーブル。

Date、CountryID、Units、および Country 列ヘッダーを持ち、Country 列の値がすべて null である 3 行のデータを含む左反結合の最終テーブルのショートカット。

左反結合を実行するには:

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

前の左反結合手順に従った結果を示す [マージ] ダイアログのスクリーンショット。

ヒント

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

Sales テーブルには、CountryID が1 の 2 つのインスタンスと CountryID が 2 の 1 つのインスタンスがありますが、それらのいずれも Countries テーブルにはありません。 したがって、一致した結果、左側 (最初の) テーブルに 4 行のうち 3 行が見つかりました。

Countries テーブルには、ID が 3 の Country パナマがあり、数値が一致するため、レコードは Sales テーブルに取り込まれません。 また、Country 列に含まれるスペインの ID は 4 ですが、Sales テーブルには CountryID が 4 のレコードはありません。 したがって、右側 (2 番目) のテーブルの 2 つの行のどちらも、Sales テーブルに取り込まれません。

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

Country 列のみが選択されている [展開] ダイアログのスクリーンショット。

この操作を実行すると、次の図のようなテーブルが作成されます。 新しく展開された [Country] フィールドには値がありません。これは、左反結合では右テーブルから値が取り込まれないためです (左テーブルからの行だけが保持されます)。

左反結合の最終的なテーブル。

Date、CountryID、Units、および Country 列ヘッダーを持ち、3 行のデータを含む最終的なテーブルのスクリーンショット。 Country 列の値はすべて null です。