Right Anti Join

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

右反結合の例。

図の左側には、Date、CountryID、Units の列を含むテーブルがあります。 強調表示された CountryID 列の行 1 と行 2 には値 1、行 3 には値 3、行 4 には値 2 があります。 右側のテーブルには、ID 列と Country 列が含まれています。 強調表示された ID 列には、行 1 に 3 (パナマを示す)、行 2 に 4 (スペインを示す) の値が含まれています。 最初の 2 つのテーブルの下のテーブルには、Date、CountryID、Units、Country の列があります。 テーブルには 1 つの行があり、Date、CountryID、Units は null に設定され、Country は Spain に設定されています。

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

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

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

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

    id が行 1 で 3、行 2 で 4 に設定され、Country が行 1 で Panama、行 2 で Spain に設定されている Countries テーブル。

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

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

目標は、左テーブルのいずれの行とも一致しない右テーブルの行のみが維持される次のようなテーブルを作成することです。 一般的な使用用途として、右テーブルでは使用できて、左テーブルには見つからない、すべての行を検索できます。

右反結合から作成されたテーブル。

右反結合の最終的なテーブル。Date、CountryID、Units、Country の各ヘッダー列があり、含まれる 1 行では、Spain が設定された Country 以外のすべての列は null に設定されています。

右反結合を行うには

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

前の右反結合手順に従った結果を示す [マージ] ダイアログ ボックス。

ヒント

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

Countries テーブルでは、Country Spain で id は 4 ですが、Sales テーブルには CountryID 4 のレコードはありません。 そのため、右 (2 番目の) テーブルでは 2 行中 1 行のみが一致しました。 右反結合のしくみにより、この操作の出力では左 (1 番目の) テーブルの行は表示されません。

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

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

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

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

最終的なテーブル。Date、CountryID、Units、Country の各ヘッダー列があり、含まれる 1 行では、Spain が設定された Country 以外のすべての列は null に設定されています。