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

通常のマージでは、基本的に指定した列の値が一致するデータ同士を結合します。

そのため、売上データとマスタデータで商品名の表記が少し異なる場合など、完全一致ではうまくマージできないことがあります。

今回は、そんなときに活用できる部分一致でマージする方法についてご紹介します。


AI・Microsoft 365 活用を業務改善につなげたい企業向けに、研修・導入支援・活用サポートを行っています。
どんなことを依頼できる?」「実際の活用事例は?」という方は、ぜひ無料資料をご覧ください。

業務効率化・補助金情報をお届け/

活用事例も掲載しています /

目次

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

今回は、以下のように「売上データの商品名」と「マスタデータの商品名」を部分一致で照合し、一致したマスタ情報を売上データに追加します。

事前準備

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

クエリ処理

STEP
必要データを読み込む

売上データ、マスタデータなど、マージに必要なデータをPower Queryに読み込みます。

STEP
カスタム列を追加

列の追加 > カスタム列 から新規列を作成します。

STEP
コード入力

以下のコードを入力します。※テーブル名や列名は、適宜変更してください。

テーブル_マスタ:部分一致検索を行う対象となるマスタデータのクエリ名です。
商品名(1箇所目):現在処理しているクエリ側の列名です。マスタと照合したい列を指定します。
商品名(2箇所目):マスタデータ側の列名です。部分一致検索の基準となる列を指定します。

STEP
展開

必要な列を選択し、展開します。

コードの内容

商品名に含まれる文字列をもとに商品マスタを検索し、一致した最初のマスタ情報を取得しています。

  • マスタから一致する行を抽出

以下のコードで、マスタテーブルの中から条件に一致する行を抽出します。

Table.SelectRows

売上データの商品名、マスタデータの商品名を比較しています。
Text.Contains を使うことで、売上データの商品名の中に、マスタデータの商品名が含まれているかを判定します。

一致した行は「該当行」に格納されます。

Text.Contains(
Text.From([商品名]),
Text.From(マスタ行[商品名])
)

  • 一致件数を確認

一致した行の件数を確認します。

Table.RowCount(該当行)

  • 一致したマスタの先頭行を取得

PowerQuery上では{0}が1行目になります。複数のマスタデータが部分一致した場合でも、先頭の1件だけを取得します。
一致するデータがなかった場合、nullとして処理しています。

該当行{0}

まとめ

Power Queryのマージは、完全一致が基本ですが、Text.Contains を利用することで、商品名などの文字列を部分一致させてマスタデータと結合することができます。

ただし、複数のマスタが部分一致する場合、先頭の1件だけが取得されるようになるため、注意してください。

ぜひこの方法を活用して業務効率化に活用してみてください。


ご質問やご相談などがございましたら、ぜひお気軽にお問い合わせください。

2営業日以内にご返信! /

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