【Power BI DAX】USERELATIONSHIP関数を使用したリレーションのアクティブ/非アクティブ切替方法(一テーブル複数列リレーション)




この記事ではPower BI DAXのUSERELATIONSHIP関数を使用して一テーブル内の複数の列とのリレーションを用途に合わせてアクティブにする方法について解説します。

Power BIでレポートを作成するときに、同一のグラフや表に集計キーを分けたメジャーを表示したい、できれば使用するテーブル数を削減して管理を楽にしたい…と考えた方はぜひこの記事でUSERELATIONSHIP関数の概要を理解、活用ください!

今回の記事は書籍のThe Definitive Guide to Daxを参考に作成しています。
英語でも問題ないという方は非常に分かり易く書かれているのでより深く勉強する際は是非ご一読ください!

The Definitive Guide to DAX: Business intelligence for Microsoft Power BI, SQL Server Analysis Services, and Excel (2nd Edition) (Business Skills)

Microsoft公式のUSERELATIONSHIP関数に関する記事はこちらから

https://docs.microsoft.com/ja-jp/dax/userelationship-function-dax

それでは解説していきます。

Power BI USERELATIONSHIP関数を使用したビジュアルの作成

USERELATIONSHIP関数は主に販売データを出荷日別、納品日別に集計したい場合に用います。一つの日付テーブルに対して複数の列 (出荷日、納品日)でリレーションを結ぶことで、集計ごとにアクティブなリレーションを切り替えることが出来ます。完成したビジュアルは下図のように出荷日と納品日別の集計結果を日付テーブルのDateを軸に表示できます!



今回はモデルデータとして↓テーブルのような、出荷日、納品日が存在するフルーツの売上データと日付テーブルを使用して説明します。

まず販売データの出荷日と日付テーブルのDateにアクティブなリレーション、納品日とDateには非アクティブなリレーションを作成します。

リレーションの作成方法などはこちらの記事で詳しく解説しています。

Power BIのリレーションシップの管理と使い方【初心者向け】

この状態で日付テーブルの日付を軸に製品の金額ビジュアルを作成すると下図のように出荷日別の売上が表示されます。納品日で見ると6つの行が2月に納品されていますが、出荷日は1月のため2月の表示は出てきません。もちろん、納品日とDateのリレーションをアクティブにすれば2月の表示は出てきますが、これでは出荷日別と同時に集計ができません…。

そこで、USERELATIONSHIP関数を使用して、集計時に納品日とDateのリレーションをアクティブにすることで両方を同時に表示します!

USERELATIONSHIP関数の式は

USERELATIONSHIP(アクティブにする列名1,アクティブにする列名2)

です。

USERELATIONSHIP関数はリレーションシップ関数の一種ですが、フィルターを引数として受け取る関数でしか使用できません (Calculate、Calculatetableなど)。

今回は金額の集計時に日付と納品日のリレーションをアクティブにしたいので↓のようにメジャーを記述します。

納品日別金額 = CALCULATE(SUM(‘販売データ (フルーツ)'[合計]),USERELATIONSHIP(‘日付テーブル'[Date],’販売データ (フルーツ)'[納品日]))

作成したメジャーをビジュアルに追加すると出荷別と納品日別の金額集計を同時に表示できます! (グラフ、テーブルビジュアルどちらでも可)

日付テーブル列を使用してスライサーなどでフィルター操作を行う場合、出荷日別、納品日別の集計の両方がフィルターの影響をうけます。
また、当然ですが少なくとも一つはアクティブなリレーションが存在していないと、USERELATIONSHIP関数は機能しません。

↓のように出荷日、納品日とDateのリレーションを両方とも非アクティブにすると、リレーションが正しく結べません。

以上がUSERELATIONSHIP関数を使用してテーブル内の複数の列とのリレーションを用途に合わせてアクティブにする方法です。 USERELATIONSHIP関数はアクティブにするリレーションを集計ごとに変えて一つのビジュアルにすることができるため、直感的に比較検討が可能です!




コメントを残す

メールアドレスが公開されることはありません。