【Power BI/ Power Query】中間テーブルを使用して多対多のテーブルをマージする方法 (初心者向け)




この記事ではPower Queryを使用して多対多のテーブルを中間テーブルを使用してマージする方法について紹介します。

???何を言っているのか分からない方がほとんどだと思うので下に概要図を載せています。

Power BI Tables 1

上図の真ん中 (販売店と製品群ごとの卸値%)と右のテーブル (製品の価格とグループコード)を左の中間テーブルを使用して一つのテーブルにまとめる方法について紹介します!

この記事を読むことで多対多のテーブルをマージすることが可能となります!

細かい技術ですが、これを理解することでレポートやリスト作成の幅が大きく広がるのでぜひ最後までご覧ください。

今回はPower BIでのやり方を紹介していきます!

結論:Power Query上で中間テーブルを介して3ステップで作成可能

Power BIのPower Queryでマージする方法について解説していきます。

ステップは3つです。

  1. 中間テーブルに片方のテーブルをマージ
  2. マージした列をTable列のままもう一方のテーブルにマージ
  3. マージしたTable列を展開

まずは今回使用する3つのテーブル (グループコードマスタ、販売店別の卸値テーブル、製品マスタ)を読み込みます。

Power BI Tables 2

※読み込み時にグループコードが整数型に変更されますが今回は文字列に戻してください! 数値型の場合、頭の0が落ちてしまい他のテーブルとのリレーションを結ぶ際にエラーが発生する原因となります。

中間テーブルに片方のテーブルをマージ

今回はグループコードマスタに製品マスタをグループコードを照合列にしてマージします。

Power Query Image 1

グループコードマスタ上でクエリのマージを選択して、下図のようにグループコードを照合列にしてOKをクリックします。

Power Query merge 1

マージが完了すると製品マスタがグループコードマスタに新しい列として追加されます。

通常はこのまま製品マスタ列を展開していきますが、今回は展開せずに次のステップに進みます。

マージした列をTable列のままもう一方のテーブルにマージ

今度は販売店別の卸値テーブル上でグループコードマスタとのマージを行います。

Power Query merge 2

こちらも照合列はグループコードを使用します。

マージが完了するとテーブル上にグループコードマスタ列が追加されます。

Power Query merge 3

マージしたTable列を展開

ここまで来たらあとは展開して完成です。

グループコードマスタ列の中にある製品マスタ列を展開します。

Power Query merge 4

展開すると製品マスタ列が追加されますが、今までマージを使った人はこれって展開されていないのでは?と感じるのではないでしょうか。

このマージの重要ポイントは中間テーブル上で列を展開しないことによって、多対多のマージを可能にしている事です!!

それではマージした列を展開してみましょう。

Power Query merge 5

展開すると各販売店別の卸値に加えて製品名と単価の列が追加されました!

Power Query merge 6

この時に列の追加だけでなく、グループ内の製品分だけ行数も追加されて行も増えます。

さらに、一旦マージの設定を行っておけば販売店や取り扱う製品が増えても自動で新しいリストに更新することも可能です!!

マージ機能を使いこなして日々の業務の効率化にお役立てください! 次回はExcelのPower Queryでもマージする方法を紹介します。

Power BIについてもう少し知りたい場合は以下の記事も併せてご覧ください。

Power BI記事一覧

【初心者向け】Power BIの使用方法(まとめ)

Power Queryを使用したデータの前処理【Power BI初心者向け】

独学では厳しいという方はUdemyさんのPower BI講座もおすすめです!

≫UdemyのPower BI講座はこちら

初心者の間は慣れていれば5分で解決できるエラーに数時間かかってしまうことも多いです・・・私も初めは1時間悩んで解決できなかったことが質問したら一瞬で解決することが多々ありました汗

このエラー解決で挫折してしまう人も多いのでそんな不安を抱えている方は是非Power BI講座で理解を深めましょう!

Udemyさんでは定期的に講座の割引も実施しているので割引のタイミングでお得に学習してください!




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です