Power Queryで結合(マージ)が遅い理由は?原因と対策を解説!

はじめに

Power Queryは便利なデータ整形ツールですが、マージ(結合)処理を使うと、
「急に処理が遅くなった…」「いつ終わるかわからない」
そんな声もよく聞きます。

この記事では、なぜPower Queryの結合で処理が重くなるのか?
そして、**どう対策すればよいか?**をわかりやすく解説します。


目次

マージ(結合)とは?

Power Queryにおける「マージ」は、Excelで言えば VLOOKUPのような処理
2つのテーブルを「キー列(共通項)」で結びつけて、別の列を取り出す操作です。

マージ例

商品コードをもとに、売上データと商品マスタを結合する

とても便利な反面、データ量や設定次第で極端に処理が遅くなることも…。


結合が遅くなる主な原因3つ

原因①:データ件数が多すぎる

  • 10万件 × 1万件など、大量データを結合しようとすると、裏側で全件を走査して突き合わせるため、処理時間が爆発します。
チャー

10万件の売上データと1万件の商品マスタを結合するのに、
10分以上かかることもあります。


原因②:結合キーの形式がバラバラ

  • 「数値」と「文字列」など、結合キーの型が一致していないと、マッチせずループ処理に。
  • フォーマットが微妙に違う(空白やゼロパディング)だけでもヒット率が下がり、無駄な繰り返しが発生します。

原因③:事前のフィルタや列選択がされていない

  • 不要な行や列をそのまま持ち込んで結合すると、Power Queryが無駄な処理を大量に行うことに。
  • 結合前にフィルタで「使うデータだけ」に絞っておかないと、何倍もの処理時間になります。

解決策:こうすれば速くなる!

対策①:マージ前に「件数を絞る」

  • 使う期間・条件で 前にフィルタをかける
  • たとえば「今年の売上」だけにするだけで、件数が大幅に減少します。

対策②:結合キーの型と内容を揃える

  • データ型(文字列/数値)を 明示的に指定して一致させる
  • Text.From([列名]) などで 型変換してから結合する。

対策③:必要な列だけ読み込む

  • 結合後に使わない列が多いと、その分だけ処理負荷が増えます。
  • 最小限の列だけ残す/展開するように設計しましょう。

Before/Afterのイメージ(図解)

状況結合処理の内容結果
Before10万件×1万件/全列結合/キー型不一致10分以上かかる
After1万件×5千件/必要列のみ/キー型揃えた数十秒に短縮される可能性があります(体感)。
※ 実行環境により異なります。

Power Queryでの操作例(プロンプト風)

① マージ前の売上データを読み込み  
② 「日付列」で必要な期間にフィルタ(例:今年分のみ)
③ 商品マスタも読み込み、「商品コード列」を `Text.From()` で型揃え
④ [ホーム] → [マージクエリ] → 結合
⑤ 展開列を必要なものだけにして完了!

まとめ

Power Queryのマージ処理は、設計しだいで爆速にも地獄にもなるポイントです。
だからこそ、事前のフィルタ、キー整備、列選定が超・重要です。

  • 「結合キーを整える」
  • 「件数を減らす」
  • 「不要な列を除く」

この3つを意識するだけで、体感で数十倍速くなるケースもあります。


次回予告:

次回は、**「結合キーがマッチしない!原因と解決法」**についてさらに詳しくお届けします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次