第5回 VLOOKUP関数より簡単! クエリのマージ

作業工数が半分になる?!

実務で重宝するPower Queryの機能の一つが[クエリのマージ]。
マージ(Merge)とは、統合する、結合するという意味。
この[クエリのマージ]という機能は、VLOOKUP関数のように使え、それ以上に便利。

VLOOKUP関数の場合、二つのデータファイルを見比べながらVertical=垂直にLookup=検索するわけだが、実務を考えた場合、

  • “受注ファイル”でVLOOKUP関数を使い、“出荷ファイル”に検索をかける場合
  • 逆に、“出荷ファイル”から“受注ファイル”に検索をかける場合

両者で結果が異なることがある。そのため、両者それぞれに対して、VLOOKUP関数を使い検索しなければならないという“二度手間”がある。

しかし[クエリのマージ]の[結合の種類]で[完全外部(両方の行すべて)]を使えば、一発で双方にVLOOKUP関数を使った検索結果を得ることが可能となる。
これは、単純計算で、作業工数が半分になることを意味する。

[クエリのマージ]のポイント

この[クエリのマージ]は、Power Queryエディターの[ホーム]タブの[結合]グループにあり、[結合の種類]は全部で6つある。

[マージ]の画面の見方は、ちょっと特殊。上の箱が【左】、下の箱が【右】(図表1)。


図表1 マージの画面(上の箱が【左】、下の箱が【右】となることに留意)

実はここが、つまずきポイントだったりするので、必ず覚えて欲しい。

上の箱が【左】

下の箱が【右】

「会計」でいうところの、右側が“貸方”、左側を“借方”と言うのに近いものがあると思っていただけば分かるかも知れない。単なる言いかえにすぎないが、意外に重要なポイントだ。ここでは(取引番号や日付、得意先コードなど)“番号”の同じものを比較するため、“【左】番号”と“【右】番号”をクリックし、[結合の種類]で6つのいずれかを選択し、[OK]をクリックする。

ちなみに、“【左】番号”は1~3、“【右】番号”は2~4というデータ内容になっていて、1は“【左】番号”だけ、2と3は両方に、4は“【右】番号”だけに存在する。6つの[マージ]の結果は、図表2を参照。

①左外部(【左】の全行、【右】は一致する行だけ)
②右外部(【左】は一致する行だけ、【右】は全行)
③完全外部(【左】【右】の全行)
④内部(【左】【右】の一致する行だけ)
⑤左反(【左】にあるが【右】にない行)
⑥右反(【左】にないが【右】にある行)

図表2 結合の種類は全部で6つ

上記のように、一つの該当項目同士を比較・検索するというVLOOKUP関数のような使い方もできるし、図表3のように(アイテム)列と(取引日)列の複数列を選択して該当項目を比較・検索することもできるというように、VLOOKUP関数よりも便利に使えるのが[クエリのマージ]の特徴でもある。

これを従来Excelで行おうとすれば、“アイテム”と“取引日”の複数列を対象に[&演算子]を使い一つのデータ項目列にまとめ、これと同じ作業を検索されるデータ側でも行う必要があるなど、かなり工数が多くて面倒だった。
しかし、上記のようにPower Queryエディターの[クエリのマージ]を使い、複数の対象列を選択すれば良いだけ、これはかなり便利。

図表3 複数列をクリックしマージすることもできる

【ワンポイント】 [マージ]画面の一番下に注目!

[マージ]画面の一番下をみると、緑色の✔マークとともに「選択は、最初の24757行からの24757と一致しています。」のように表示される。ここを見ればマージ(結合)した結果の概略を把握できる。

【警告】大容量の「ファクトテーブル」同士を「クエリのマージ」することはお勧めしない!

あちこちのWEBサイトなどのコンテンツで、上記の現象を短絡的に捉え
「クエリのマージは便利ですよ、VLOOKUP関数のように使えるから、ぜひ使ってみて!」
みたいな軽いノリで説明していることが散見される。

でも、ちょっと待った!

この「クエリのマージ」という機能は、小さな「ファクトテーブル」同士であれば、かなり有効だと思う。
しかし、大容量の「ファクトテーブル」間でこの「クエリのマージ」をすると、とても大変なことが生じる。
そもそも、パワークエリはメモリ食いなのだ。
大容量の「ファクトテーブル」同士を「クエリのマージ」するなんてことをしたら、たちまちメモリが不足してしまう。

すると、ご丁寧に裏技を紹介してくれるサイトも現れる。

「パワークエリのオプション画面を操作すれば、こうした現象を回避できるので、ぜひ試してみて!」

これは、とんでもない指摘! 間違いにもほどがある。
こうした裏技回避策は、なんの根本的な解決にもなっていないのだから。
むしろ、状況を悪化させてしまうことにも繋がりかねず、モダンExcel初学者はオプションを基本的に触らないことをお勧めする。
「なんちゃってモダンエクセル」は、本当に困ったものだ。

「なんちゃってモダンエクセル」を吹聴する「パワークエリ単独推進論者」たちは、パワークエリだけで何でもやり切ろうとするが、そもそもこれが間違い。

当「モダンExcel研究所」で何度となく申し上げていることだが、

・パワークエリは、きれいなデータにするツール

・このきれいなデータを使って可視化する、これがパワーピボットというツール

つまり、モダンExcelは、パワークエリとパワーピボットを「一体理解」する必要があるのだ。

こうしたことは、モダンExcelの先にある「Power BI」を知れば分かること。
Power BIは、そのフロントでパワーピボットのDAX関数が使われ、データクレンジングでパワークエリのM言語が使われ、両者を一体として理解する必要がある。

ちなみに、今回ご紹介した「クエリのマージ」に限らず、パワークエリの機能は、かなりメモリを消費する。
したがって、小規模なデータで「クエリのマージ」をすることは、従来ExcelのVLOOKUP関数よりも簡単に、いわゆる「データ突合」「データ名寄せ」ができるのでお勧めもする。
拙著「モダンExcel入門」でも、パワークエリの代表的な機能の一つであるこの「クエリのマージ」は、耳目を引く機能でもあるので、第1章PART2『「クエリのマージ」を、VLOOKUP関数のように使う』P69~で1節設けて紹介もしている。

しかし、大容量の「ファクトテーブル」間で「クエリのマージ」を実行することは、お勧めしない。
なぜなら、先ほども申し上げたように、メモリがいくらあっても足りなくなってしまうからだ。
その代わりに、きれいなデータをパワーピボットでデータモデルにして、DAXで計算させる方が、実務的だ。
Power Queryでクエリのマージをするのであれば、行列を絞るなど工夫が必要だ。
こうしたことを理解せずにモダンExcel、その先にあるPower BIを利用されている方が結構いる。

■■■■■

「正しいモダンExcel」の使い方の基本を学ぶには、Power Query(パワークエリ)とPower Pivot for Excel(パワーピボット)の両者を「一体理解」する必要があります。
ぜひ、拙著「モダンExcel入門」(日経BP)で学んでみて欲しいと思います。
サンプルデータで、実際に手を動かしながら、理解を深めることもできます。参考にしてください。

■■■■■

「モダンExcel研究所」を楽しむ際の【注意事項】

コンテンツコピー、スクレイピングなど【厳禁】 ☚【検知ツール設置済】☚悪質な場合【法的措置】を講じます

(過負荷によるサーバー障害が生じた経験上、ご協力お願いいたします!)

今回のポイント

・[クエリのマージ]はVLOOKUP関数のように使える。

・[マージ]画面の上の箱が【左】、下の箱が【右】。これが、全部で6種類ある[結合の種類]の左外部、右外部、完全外部、内部、左反、右反の【左】【右】を指す。

・[完全外部]は双方のテーブルからVLOOKUP関数で検索をかけるイメージで使えて実務で重宝する。

モダンExcel研究所

フォローお待ちしてます!

2件のピンバック

コメントは現在停止中です。

error: Content is protected !!