【PowerQuery】部分一致でマージする方法

通常のマージでは、基本的に指定した列の値が一致するデータ同士を結合します。
そのため、売上データとマスタデータで商品名の表記が少し異なる場合など、完全一致ではうまくマージできないことがあります。
今回は、そんなときに活用できる部分一致でマージする方法についてご紹介します。
AI・Microsoft 365 活用を業務改善につなげたい企業向けに、研修・導入支援・活用サポートを行っています。
「どんなことを依頼できる?」「実際の活用事例は?」という方は、ぜひ無料資料をご覧ください。
\ 業務効率化・補助金情報をお届け/
\ 活用事例も掲載しています /
部分一致でマージする方法
今回は、以下のように「売上データの商品名」と「マスタデータの商品名」を部分一致で照合し、一致したマスタ情報を売上データに追加します。

事前準備
部分一致した場合に出力したい情報を、マスタデータとしてテーブルにします。

クエリ処理
売上データ、マスタデータなど、マージに必要なデータをPower Queryに読み込みます。
列の追加 > カスタム列 から新規列を作成します。
以下のコードを入力します。※テーブル名や列名は、適宜変更してください。
必要な列を選択し、展開します。

コードの内容
商品名に含まれる文字列をもとに商品マスタを検索し、一致した最初のマスタ情報を取得しています。
- マスタから一致する行を抽出
以下のコードで、マスタテーブルの中から条件に一致する行を抽出します。
Table.SelectRows
売上データの商品名、マスタデータの商品名を比較しています。
Text.Contains を使うことで、売上データの商品名の中に、マスタデータの商品名が含まれているかを判定します。
一致した行は「該当行」に格納されます。
Text.Contains(
Text.From([商品名]),
Text.From(マスタ行[商品名])
)
- 一致件数を確認
一致した行の件数を確認します。
Table.RowCount(該当行)
- 一致したマスタの先頭行を取得
PowerQuery上では{0}が1行目になります。複数のマスタデータが部分一致した場合でも、先頭の1件だけを取得します。
一致するデータがなかった場合、nullとして処理しています。
該当行{0}
まとめ
Power Queryのマージは、完全一致が基本ですが、Text.Contains を利用することで、商品名などの文字列を部分一致させてマスタデータと結合することができます。
ただし、複数のマスタが部分一致する場合、先頭の1件だけが取得されるようになるため、注意してください。
ぜひこの方法を活用して業務効率化に活用してみてください。
ご質問やご相談などがございましたら、ぜひお気軽にお問い合わせください。
\2営業日以内にご返信! /

