Power BI -今日の関数 -USERERATIONSHIP()

リレーションシップは必ずしもモデル上で明示的に設定しておく必要はない。

モデル上で明示的に設定するとは、例えばMicrosoftのサンプル(人事のサンプル)でいうと、こんな感じでテーブル間が関連する項目を起点として繋がれる状態をいっています。

明示的なリレーションシップ


リレーションシップを設定する場合

例えば、日付テーブルと売上テーブルがあったとして、

例日付と売上

いつもなら、リレーションをこんな感じで設定しますよね

例日付と売上繋いだ場合

リレーションを設定したうえで、例えば日別の売上高を計算するときは、次のメジャーを作れば、日別の売上が集計できます。

Measure = SUM('売上テーブル'[Amount])

でも、、仮に日付テーブルの「Date」と売上テーブルの「Date」の間にリレーションシップを設定していなかったら??

日別の集計結果は、全て同値(すべての売上テーブルの[Amount]の合計値)が入ります。
リレーションシップを設定していないから、「日ごとに」と思って日付テーブルの[Date]で売上テーブルの[Amount]を同一グラフ上で区分表示しようと思ってもできません。
(※売上テーブルの[Amount]を売上テーブルの[Date]で分析すれば、それは日付別に分かれます。リレーションシップ云々以前に、同一テーブルなので。この場合は、ディメンションテーブルとファクトテーブルを混同したグラフであるため、レポートの範囲が広がっていくとどんどんグラフが意図しない結果を表示することになるでしょう・・)


リレーションシップを設定しなくても日別に集計できる?

では、リレーションシップを設定しないで日別に
(繰り返しますが、ここでいう日別とは、ディメンションテーブルである日付テーブルの[Date]で、ファクトテーブルである売上テーブルの[Amount]を日別に分類することを意味しています)
分析したい場合は、次のようにメジャーを書きます。

Measure 2= CALCULATE( SUM( '売上テーブル'[Amount]),
                USERELATIONSHIP( '日付テーブル'[Date], '売上テーブル'[Date]))

明示的にリレーションシップを設定していないので、
DAX関数「USERELATIONSHIP()」を用いて、式の中で強制的にリレーションシップを作ります。そうすることで、明示的にリレーションシップを設定するのと同じ効果が得られます。


また備忘メモを書きます。

この記事が気に入ったらサポートをしてみませんか?