Power Query 第10回目。「クエリのマージ」については5回目です。
今回は、マージクエリの「内部結合」についてサンプルデータを操作しながら詳しく勉強してみたいと思います。
今日は「内部結合」について勉強をしましょう。今までは「外部」でしたが今度は「内部」です。どんな違いがあるのでしょうか、詳しくみていきましょう。
「外部」と「内部」の違いですか。どこがどう違うのか楽しみです。
よろしくお願いしますm(__)m
【この記事でわかることは】
・「内部結合」の使い方について
・「内部結合」と「外部結合」を比較してみます
前回記事のおさらいは、下のカードをクリックすれば開きます(^^ゞ
・前回の内容は「完全外部結合」によるマージについてです。
・「カスタム列」「条件列」の使い方にも触れていますのでよければ覗いてみてください。
・「クエリのマージ」全般の概要についての記事リンクはこちらです。
記事作成にあたっては次の Microsoft office のサポートの情報などを参照しています。
・Power Query for Excel のヘルプ
・Excel の Power Query について
・マージクエリの概要
なお、この記事の画像は Microsoft 365 で取得した画像です。Excel2016 のリボンやメニューなどバージョンによって違うようなので、適宜読み替えをお願いします(^^)/
「内部結合」とは
・「内部結合」は、「左側テーブル」「右側テーブル」の両方ともに一致する行だけが表示されます。
・この処理をイメージした図がこちらです。
・左右の両方が重なった部分だけ青く塗りつぶされている状態です。
・KEYとなる照合列が合致している(重なった)部分だけマージ結合されて表示されます。
「内部結合」でマージしてみます
使用するデータは、違いが比較できるように今までと同じものを使うことにします。
・「左テーブル」は[ID][名前][販売数]のテーブルで、個人の販売数データです。
・「右テーブル」は[ID][所属店舗][販売数]という店舗別販売数データのテーブルです。
・それでは、この状態で「内部結合」でマージしてみます。
「マージ」処理を実行します
・[データ]→[データの取得]→[クエリの結合]→[マージ]でマージダイアログボックス呼び出します。
対象テーブル選択・配置・列のペア選択まで
・用意できた「マージ」ダイアログボックスの画像を先にお見せします。
・それでは、順を追って説明します。
対象テーブルを配置します
・上側に「左テーブル」を選択・配置します。
・下側に「右テーブル」を選択・配置します。
「列のペア」を選択します
・[ID]列をKEYとしてマージ処理を行いたいと思います。
・「左テーブル」「右テーブル」それぞれの [ID]列 を「列のペア」として選択します。
「結合の種類」を選択します
・今回は「内部(一致する行のみ)」を選択します。
・読み替えると、内部結合(両方のテーブルの一致する行のみ)です。
・ダイアログ最下部に表示されたテーブルの一致数は、「左テーブル」が4行中3行、「右テーブル」も(画像は隠れていますが)4行中3行 と表示されています。
・最後に「OK」選択でマージ結合を実行します。
マージされたテーブル列の展開
・マージ実行後、下図のように 結合後のクエリが Power Query エディター に表示されます。
・ベーステーブルには左テーブルのすべての列に加えて、新しい列 [右テーブル](テーブル名)が追加されています。[右テーブル]列には右テーブルに対応する値が行単位で格納されています。
・ID「1003」の行が表示されていないようです。
・[右テーブル]の列見出しの をクリックすると次のような展開用のダイアログ(右図)が表示されます。
・ここで表示したい列の選択ができます。
・列名に元の列名をプレフィックスとして表示するかどうか ☑ 選択できます。
・ここではわかりやすいようにチェックして[OK]を選択します。
・すると、下図のような「右テーブル」のフィールド列がすべて展開されました。
・「右テーブル」は、ID「1004」が表示されていません。
・「閉じて読み込む…」でシートの場所にもとのテーブル下部を選択して、テーブルで表示してみたのが下の画像です。
・確かに「左テーブル」のID1003と「右テーブル」のID1004が表示されていません。
詳細エディターでM言語のコードを確認します
「内部結合マージ」の M関数(テーブル関数)
Table.NestedJoin(左テーブル, {“ID”}, 右テーブル, {“ID“}, “右テーブル”, JoinKind.Inner),
・Inner = 内部 ということですね。
一致する行のみ取り出すなら「内部結合」
・2つのテーブルの結合可能なデータのみ取り出すなら「内部結合」が最適です。
外部結合と比較してみましょう
・どの結合方法を使ってもデータ結合できますが、不要な行を削除しないといけないので手間がかかります。
・「内部結合」は「更新されたデータだけ必要」という場合などに使うことになると思います。
まとめ(おわりに)
・以上で、「内部結合」についての勉強は終了です。
・結合されたデータのみ必要な場合には「内部結合」を使いましょう。
・「外部結合」でマージした場合と比較してみましたが、いかがでしたでしょうか?
・参考になったなら幸いです(^^ゞ 使ったデータは一応登録しておきます。
・今までの記事のサンプルも登録していますのでよろしければお使いください(^^)
まとめと感想など
「内部結合」についての勉強でした。「外部結合」と並べて比較したら少しわかりやすくなったと思います。いかがでしたか?
次回は「左アンチ結合」について勉強しましょう(^^)/
比較はすごくわかりやすかったです。「内部結合」はよく理解できました。次回の「左アンチ結合」が楽しみです(^^)
★★★ ブログランキング参加中! クリックしてね(^^)/ ★★★
【今後の記事について】
今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
「汎用でだれでも使えて活用できるように考えてる」というポリシーで、記事を継続して書いていきたいと思っています。どうぞよろしくお願いしますm(_ _)m
【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう常に検討しています(^^ゞ
・その他雑記的に「プチネタなど」もいろいろ考えていきたいと思います・・・・・
・今後の記事にご期待ください(^^)/
過去記事のサンプルファイルをダウンロードできます
今回の記事でも使用したサンプルファイルを登録しています!
過去の記事で使用したサンプルファイルもダウンロードできるようにページを設置していますので、こちら(このリンク先)からご利用ください
【今回わかったことは】
・「内部結合」の使い方がわかりました
・「内部結合」は一致する行のみを取り出すのに最適だということがわかりました