【クロスフィルターの方向を調整すると、リレーションの罠を回避することができます】
Power BIを始める時に壁に当たりやすいのが「リレーション」です
リレーションがスパゲティ状態になり、よくわからなくなったことがある人もいらっしゃるのではないでしょうか?
今回の記事ではこのスパゲティ状態を解読する、回避するヒントを「クロスフィルター」の観点で解説したいと思います
尚、当記事は理想のリレーションを作成する方法を解説しようとする意図ではなく、あくまでスパゲティ状態を解読、回避するヒントを「クロスフィルター」に絞って解説しようとしているということを予めご了承お願いします
ポイント
VLOOKUP関数はエクセル関数の中でも代表的な関数です
Power BIのリレーションも基本的には同じ内容です
ただ違う点が1点あります
それは影響範囲です
VLOOKUP関数を使用すると関連するのは2つの表のみです
VLOOKUP関数を使用した表とVLOOKUP関数が参照した表です
Power BIの場合は違います
例えば、次にょうなリレーションがあったとします
上の画像では「店名」と「来客数」はつながっていません
ところが、店名から作成したスライサーを動かすと来客数のマトリックス表も動きます
ここでもう一度、リレーションを確認してみましょう
「店名」と「店長」間は双方向でつながっています
店名から店長に影響を与えることもできるし、店長側から店名に影響を与えることができます
つまり、「店名⇒店長」の関係は存在します
更に「店長」と「来客数」の関係を見てみましょう
「店長」と「来客数」は単一の方向でつながっています
つまり「店長⇒来客数」の関係は存在します
ですので、「店名⇒店長⇒来客数」すなわち「店名⇒来客数」の関係が存在するのです
ここがVLOOKUP関数と違う点です
間接的につながりが表の間で広がっていくようになっています
矛盾の排除
リレーションをいじっていると、思ったようにテーブル(表)の間でリレーションが作成できないケースがあります
それはポイントで解説した「影響の拡大」により矛盾が生じている可能性あります
前述のリレーションを次のように変えてみましょう
「店名」と「店長」間のリレーションを削除し「店名」と「来客数」間でリレーションを作成しました
こうなると、店名と店長のスライサー間ではシンクロが発生しません
ここで、店番と店長間でリレーションを作成しようとすると「破線」になりリレーションが作成できません
これがリレーションの矛盾です
店番と店長間でリレーションができると、来客数へのパス/通り道が2つ存在してしまうからです
ではどうするか?
店名と来客数間のリレーションを削除し、ポイントで解説した内容に戻すことももちろんできます
次の内容では、「店名」と「来客数」のリレーションを残したままで「店名」と「店長」間をリレーションしたいと思います
単一⇒双方向
今、店長と来客数間は単一の方向でクロスフィルターが行われています
方向は「店長⇒来客数」です
こちらを双方向にします
すると来客数を通じて「店番⇒店長」間のリレーションが間接的に成立します
これで2つのスライサーもシンクロします
<まとめ>
今回はリレーションを使用していて陥りやすい箇所を、クロスフィルターの観点で回避する方法を解説しました
エクセルワークシート関数のVLOOKUP関数を使用するのと違い、Power BIでは影響箇所が間接的に飛び火していくのも大きなポイントです
逆に飛び火を利用できるようになると、Power BIを使いやすくなります
そうはいっても、まだまだリレーションの箇所は様々なポイントがまだまだあります
今後、また別な機会で「多対多」のリレーションなども含めて解説していきたいと思います
コメントを残す