完全外部結合
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 つのテーブルの下のテーブルには、日付、CountryID、ユニット、Country の列があります。 CountryID の値に従い、すべての行が数値順に並べ替えられます。 CountryID の番号に関連付けられている国が Country 列に表示されます。 スペインの CountryID が左側のテーブルになかったため、新しい行が追加され、この行の Date、CountryID、Units の値が null に設定されます。
この記事では、サンプル データを使用して、完全外部結合でマージ操作を実行する方法を示します。 この例のサンプル ソース テーブルは、次のとおりです。
Sales: このテーブルには、フィールド 日付、CountryID、ユニット が含まれます。 CountryID は、Countries テーブルの一意の識別子を表す整数値です。
Countries: このテーブルは、フィールド ID および Country を持つ参照テーブルです。 ID フィールドは、各レコードの一意識別子を表します。
この例では、Sales テーブルを左テーブルとし、Countries テーブルを右テーブルとして、両方のテーブルをマージします。 結合は、次の列間で行われます。
Sales テーブルのフィールド | Countries テーブルのフィールド |
---|---|
CountryID | ID |
目標は、国名が Sales テーブルの新たな Country 列として表示される次のようなテーブルを作成することです。 完全外部結合のしくみにより、左右どちらかのテーブルにのみ存在する値であっても、両方のテーブルのすべての行が取り込まれます。
Sales テーブルから取得した Date、CountryID、Units の列と、Country テーブルから取得した Country 列を含む最終の完全外部結合テーブルのスクリーンショット。 スペインのデータを含めるために 5 行目が追加されましたが、この行では Date、CountryID、Units の列が null になっています。Sales テーブルではスペインに関しこれらの値が存在しなかったためです。
完全外部結合を実行するには:
- Sales クエリを選択し、[クエリのマージ] を選択します。
- [マージ] ダイアログ ボックスの [マージ用の右テーブル] で [Countries] を選択します。
- Sales テーブルで、CountryID 列を選択します。
- Countries テーブルで ID 列を選択します。
- [結合の種類] セクションで [完全外部] を選択します。
- [OK] を選択します。
Note
Ctrl キーを押しながら列を選択すると、複数の列を結合できます。
ヒント
ダイアログ ボックスの下部にある「選択内容は、両方のテーブルの 5 行のうち 4 行に一致します」というメッセージをよく見てください。このメッセージは、この操作から得られる結果を理解するために非常に重要です。
Country テーブルでは、Country 列に含まれるスペインの ID は 4 ですが、Sales テーブルには CountryID が 4 のレコードはありません。 したがって、右側のテーブルの 4 行中 3 行だけが一致しました。 左側のテーブルの行と一致しなかった右側のテーブルのすべての行がグループ化され、出力テーブルの新たな行に表示され、左側のテーブルのフィールドの値は表示されません。
マージ操作後に新たに作成した Countries 列から Country フィールドを展開します。 [元の列名をプレフィックスとして使用します] チェック ボックスをオンにしないでください。
この操作を実行すると、次の図のようなテーブルが作成されます。
Sales テーブルから取得した Date、CountryID、Units の列と、Country テーブルから取得した Country 列を含む完全外部結合の最終テーブルのスクリーンショット。 スペインのデータを含めるために 5 行目が追加されましたが、この行では Date、CountryID、Units の列が null になっています。Sales テーブルではスペインに関しこれらの値が存在しなかったためです。