ADVERTISEMENT

【Excel】Power Queryで結合後に重複行が増える時のキー列確認手順

【Excel】Power Queryで結合後に重複行が増える時のキー列確認手順
🛡️ 超解決

Power Queryで2つのテーブルをマージ(結合)した際、結果の行数が予想より多くなり、重複行が増えてしまうことがあります。これは多くの場合、結合キーとして指定した列に重複値が存在するか、キー列の選択が誤っていることが原因です。本記事では、なぜ重複行が発生するのかを原因から整理し、キー列を正しく確認する手順を具体的に解説します。この手順を追うことで、問題の切り分けと適切な対処が可能になります。

【要点】この記事で確認すること

  • 最初に見る場所: マージ設定の「結合の種類」と「キー列」が正しく選択されているか。
  • 切り分けの軸: データソース側の重複、キー列の誤指定、結合種類の選択ミス。
  • 注意点: 会社PCではPower Queryのクエリ設定を勝手に変更する前に、元データの整合性を確認してください。

ADVERTISEMENT

Power Queryの結合で重複行が増える主な原因

Power Queryのマージ操作は、指定したキー列を基に2つのテーブルを結合します。このとき、どちらかのテーブルのキー列に重複した値があると、結果として行数が増加します。特に、意図せずに重複データが含まれている場合や、キー列として選択した列が本当に一意であるべきなのにそうなっていない場合に問題が発生します。原因は大きく分けて3つあります。

データソース側に重複行が存在する

結合元のテーブル(左テーブルまたは右テーブル)のキー列に、同じ値を持つ行が複数あると、マージの際に直積(クロス結合)に近い状態となり、結果の行数が増えます。例えば、左テーブルに「顧客ID=100」が3行あり、右テーブルに「顧客ID=100」が2行ある場合、結合結果は6行になります。

キー列の指定ミス

マージ時に選択するキー列が誤っていると、本来一意になるはずの列が正しく使われず、結果的に重複が発生します。特に、複数列をキーとして指定すべきところを1列しか指定していないケースがよく見られます。また、キー列として数値と文字列が混在している場合も、データ型の不一致により結合がうまくいかず、予想外の行数になります。

結合の種類による行数の変化

Power Queryでは「左外部」「右外部」「完全外部」「内部」などの結合の種類を選択できます。例えば「完全外部」を選ぶと、どちらかのテーブルにしかないキーも含めてすべての行が出力されるため、重複行が増えたように見えることがあります。これは本来の動作ですが、意図と異なる場合があります。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

キー列の確認手順(基本編)

では、実際にどのようにキー列を確認し、問題を特定するか、手順を追って説明します。以下の手順はPower Queryエディター上で行います。

  1. 手順1: 結合前のテーブルで重複を確認する – クエリエディターで、結合元の各テーブルを選択し、「ホーム」タブの「行のグループ化」または「列の統計」を使ってキー列の重複数をチェックします。具体的には、「列の追加」タブから「統計」→「個別の値の数」を追加すると便利です。
  2. 手順2: マージ設定を開く – 結合後のクエリを選択し、「ホーム」タブの「ソース」グループにある「マージの設定」をクリックします。
  3. 手順3: キー列の選択を確認する – マージダイアログで、左テーブルと右テーブルそれぞれに指定されているキー列が正しいか確認します。複数列をキーにする場合は、Ctrlキーを押しながら複数の列を選択します。
  4. 手順4: 結合の種類を確認する – 同じダイアログで「結合の種類」ドロップダウンを確認し、意図した種類(通常は「左外部」または「内部」)が選択されているか確認します。
  5. 手順5: プレビューで行数を確認する – 「OK」を押す前に、下部のプレビュー領域で結果の行数が妥当かどうかをざっくり確認します。プレビューには先頭の数行しか表示されませんが、行数カウントは表示されます。

キー列の確認手順(応用編:複数列キー)

単一列では一意にならない場合、複数列を組み合わせてキーとすることが必要です。例えば、「顧客ID」と「注文日」の組み合わせで一意になるケースです。以下の手順で複数列キーを設定します。

  1. 手順1: マージダイアログを開き、左テーブルでCtrlキーを押しながらキーとする列をクリックします。 選択された列がハイライトされます。
  2. 手順2: 右テーブルでも同様に、対応する列をCtrl+クリックで選択します。 選択順序が左右で一致していることを確認してください。
  3. 手順3: 結合の種類を選択し、OKをクリックします。 結果が正しいか、展開後に列を確認します。

複数列キーを使用する場合は、各列のデータ型が左右で一致していることも重要です。例えば、左では数値型、右では文字列型だと結合に失敗する可能性があります。その場合は、事前にデータ型を統一しておきましょう。

ADVERTISEMENT

結合の種類と結果の違い

結合の種類によって重複行の発生状況が変わります。以下の表で代表的な種類と重複の有無をまとめました。

結合の種類 重複行の発生 説明
左外部 左テーブルのキー重複分だけ増える 左テーブルの行数以上にはならないが、右テーブルに複数マッチがあると増える
内部 両テーブルのキー重複に応じて増える 両方に存在するキーの組み合わせで直積が発生する
完全外部 両テーブルの全行+重複分 一致しない行も含むため、行数が大幅に増えることがある
左反転 左のみの行で重複なし 右テーブルに一致しない左の行だけを出力するため、重複は元のまま

この表を見ると、重複行を防ぎたい場合は、結合前に各テーブルのキー列で重複を取り除くか、結合後に「行の重複削除」を適用する必要があります。ただし、ビジネスロジック上、重複が許容されるケースもあるため、事前に要件を確認しましょう。

よくある失敗パターンと対策

キー列に空白セルが含まれている

キー列に空白(null)が含まれていると、Power Queryは空白同士を一致させようとして、予期しない結合が発生します。対策として、結合前に空白を別の値(例:”不明”)で置き換えるか、フィルターで除外します。

データ型の不一致

一方が数値で他方が文字列の場合、Power Queryは自動変換を試みますが、変換に失敗するとエラーになったり、結合がスキップされたりします。事前に両方の列を同じデータ型(通常はテキスト)に変更しておくと安全です。

大文字小文字の違い

Power Queryのマージは既定で大文字小文字を区別しませんが、データソースによっては区別される場合があります。区別を有効にするには、マージダイアログの「大文字と小文字を区別する」オプションをチェックします。

管理者に確認すべき設定

会社のPCでPower Queryを使用する場合、以下の点について管理者に確認しておくとトラブルを避けられます。

  • データソースのアクセス権限: 結合対象のデータが共有フォルダやデータベースにある場合、読み取り権限が必要です。権限不足でデータが正しく読み込めず、重複が発生することがあります。
  • Power Queryのプライバシーレベル設定: 異なるデータソースを結合する際、プライバシーレベルが原因でデータがキャッシュされず、結果が不安定になることがあります。管理者に依頼して、必要に応じてプライバシーレベルを調整してもらいましょう。
  • クエリの共有設定: 他のユーザーとクエリを共有する場合、パラメーターやソースの参照方法が統一されていないと、異なる結果になる可能性があります。標準的なテンプレートを用意してもらうと良いでしょう。

よくある質問

Q1: 結合後に重複行が増えたが、元データには重複がないはずです。なぜですか?

元データに重複がなくても、結合の種類やキー列の指定ミスで行数が増えることがあります。特に、キー列として選んだ列が実は一意でない場合(例えば、注文IDと注文明細IDを組み合わせるべきところを注文IDだけで結合した場合)に行数が増えます。手順に従ってキー列を再確認してください。

Q2: 結合前に重複を削除しても問題ありませんか?

ビジネス要件によっては、重複を削除すると情報が失われる可能性があります。例えば、同じ顧客が複数回注文している場合、その履歴を保持する必要があれば重複は残すべきです。結合前に重複を削除するかどうかは、データの意味を理解した上で判断してください。

Q3: 結合結果の行数が多すぎてExcelで開けません。どうすればいいですか?

Power Queryでは、結果を「閉じて読み込む」前に、フィルターやグループ化で行数を減らすことができます。また、データモデルに読み込むことでExcelシートに直接出力せずに分析することも可能です。管理者に相談して、適切な出力方法を選択しましょう。

まとめ

Power Queryの結合で重複行が増える原因は、キー列の重複、キー列の誤指定、結合の種類の選択ミスに集約されます。まずは元データのキー列に重複がないかを確認し、次にマージ設定で正しいキー列と結合の種類が選ばれているかをチェックしてください。複数列キーが必要なケースも多いため、一意性を確保する列の組み合わせを検討しましょう。これらの手順を踏むことで、意図しない重複行を減らし、正確なデータ結合が実現できます。


📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】

ADVERTISEMENT