【Excel Power Query】テーブル結合時の「列名重複」を防ぐ、プレフィックス追加術
Power Queryで、二つのテーブルを結合(Join)するとき、両方のテーブルに「ID」や「名称」といった、同じ名前の列が存在していて、結合後の列名が「ID.1」のようになってしまい、分かりにくくなったことはありませんか?
二つのテーブルを結合する前に、あらかじめ片方(あるいは両方)のテーブルの**全ての列名に、どのテーブル由来か分かるような接頭辞(プレフィックス)**を一括で追加し、列名の衝突を完全に防ぎたい。
今回は、ExcelのPower Queryを使い、この「プレフィックスの一括追加」を実現し、安全で分かりやすいテーブル結合を行うための、基本的な手順を解説します。
この処理の鍵は、テーブルを結合する「前」の準備段階で、列名を整形することにあります。
キーとなる機能:Table.PrefixColumns: Power Queryには、Table.PrefixColumnsという、指定したテーブルの全ての列名に対して、一括で同じ接頭辞(プレフィックス)を追加してくれる、非常に便利な関数があります。
処理の流れ:
データの読み込み: まず、結合したい2つのテーブル(例えば、「伝票テーブル」と「商品マスタ」)をPower Queryに読み込みます。
プレフィックスの追加: テーブルを結合する前に、片方のテーブル(例えば、「商品マスタ」)に対して、Table.PrefixColumnsの変換を適用します。これにより、「商品名」は「商品.商品名」、「単価」は「商品.単価」といったように、全ての列名が、どのテーブルから来たか一目で分かる形に変わります。
テーブルの結合 (Table.Join): プレフィックスの追加が終わったら、通常通りTable.Joinでテーブルを結合します。このとき、キーとなる列も、片方は元の列名、もう片方はプレフィックスが付いた列名、というように明確に区別して指定できるため、意図しないエラーや混乱を防げます。
この一手間を加えるだけで、結合後のテーブルの列名が非常に分かりやすくなり、その後のデータ分析やメンテナンスの効率が大きく向上します。
私の運営サイトでは、このTable.PrefixColumnsとTable.Joinを組み合わせ、「商品マスタ」と「伝票テーブル」を結合する際に、商品マスタの列名に接頭辞を付けて、列名の重複を回避する具体的なM言語のコードを分かりやすく解説しています。
▼詳しい解説とサンプルコードはこちら
Power Query で列名にプレフィックスを付与し、テーブルを結合する方法
複数のデータソースからテーブルを結合する際、事前にプレフィックスを付与して列名の由来を明確にすることは、データの前処理における重要なベストプラクティスです。これにより、クエリの可読性が高まり、より堅牢なデータモデルを構築できます。
