Power BIでクロスジョインする方法
Power BI内でデータをクロスジョインする方法を2つ紹介したいと思います。
クロスジョインとは?
クロスジョインは、複数のテーブルの特定の列の全ての組み合わせを作るデータ結合(ジョイン)手法です。
※ちなみに、その他の結合手法としてはPower BIで複数のテーブルを結合する方法で紹介した内部結合があります。
まずはクロスジョインのイメージを持ってもらいたいと思います。
例えば下図のような2つのマスタテーブルがあるとします。
【テーブル1:期間】
2023年の1月~12月までの月別テーブルです。
【テーブル2:製品】
製品A~Gまでの製品別マスタです。
これら2つのテーブルは互いに独立して存在している場合、
クロスジョインを使うことで、この2つの列の全ての組み合わせとなる新たなテーブル・列を作成することが可能となります。
【下図:クロスジョイン後のデータ】
どのようなケースで使うのか?
特殊なケースを除いて、正直クロスジョインをそれ単独で使うケースは少ないと感じます。
元々はマトリックスビジュアルで空白を埋めるために活用していました。
下図のように製品を縦軸に、期間を横軸とした場合に、製品×期間で売上金額を確認したい場合などです。
今は、Power BI Tips マトリックスで空白値含めて全ての値を表示する機能で実績データからマトリックスが作れるようになったので、
その必要性は薄れてしまいましたが、、、
ただ、仮に何らかの理由で過去の実績データには表示されない製品の売上高(たまたま製品の売上がなかった)も表示したい場合は、
マスタ同士をつなげてクロスジョインすることで、その事実を可視化できます。
このようにデータに網羅性を持たせる必要がある場合等の、細かい活用方法はまだまだ存在しているのかなと思います。
クロスジョインの方法
Power BI内でクロスジョインする方法はいくつか存在するので、
ここではDAXを使う方法とPower Queryを使う方法の2つを紹介します。
DAXを使う方法
DAXを使う場合の手順は下記の通りです。
1.新しいテーブルを作成する
2.CrossJoin関数を使う
下図のようにCrossJoin関数で、クロス結合させたいテーブルを指定します。
テーブルの中の特定の列を選択したい場合は、Summarize関数と組み合わせることで、実現できます。
CrossJoin関数の引数は下記の通り2つです。
CROSSJOIN(テーブル1,テーブル2)。
クロス結合の対象テーブルを指定する形となります。
Power Queryを使う方法
CROSSJOINを使うやり方でも問題はないのですが、下記がPower Queryを使った方法です。
1.データを複製する
今回クエリを結合させたい方の一方のテーブルを複製します。
※あるいは必要な列のみで作りたい場合は、Table.SelectColumnsで指定もできる。
2.カスタム列を追加して結合先を指定する
カスタム列の式は、結合先のシート名を指定するだけで大丈夫です。
3.展開する
上図の赤丸部をクリックして、クロスジョインさせたい列を選択して、OKボタンを選択します。
今回のケースでは、テーブルの中に1列しかないですが、複数列ある場合は結合させたい列のみチェックマークを入れて、他は外します。
完成!
一見DAXを使う方が直感的で簡単そうに見えるのですが、Summarize関数を使ったり、DAXを組み合わせたりする必要があるのでちょっと複雑な気がします。ただ、こっちの方が速いですね。
一方、Power Queryを使うやり方の方が列を直接指定できたり、カスタマイズ性には優れていると感じます。ただ、手順が多いので、構築するまで時間がかかるのが難点です。
どっちを使うかは、両者を比較しての好みや、レポート・データ毎でケース・バイ・ケースで対応するのがいいかなと思います。
コメントを残す