【Power BI】SELECTEDVALUE関数とは?スライサー/フィルターで動的に値を切り替える方法




この記事ではSELECTEDVALUE関数を使用してユーザーがスライサーで選択やフィルターをかけた際に表示される値を切り替える方法を紹介します。

Power BIでレポートを作っていると、『売上と販売数量を同じグラフで切り替えたい』『円とドルで金額を比較したい』と思ったことはありませんか?
実は、SELECTEDVALUE関数を使えば、たった一つのビジュアルでこれを実現できます!

非常に便利な関数なのでぜひ覚えてください。

SELECTEDVALUE関数とは

SELECTEDVALUE関数についてMicrosoft公式では以下のように説明しています。

columnName のコンテキストが 1 つの個別の値のみにフィルター処理されている場合に値を返します。 それ以外の場合、alternateResult を返します。
Microsoft公式サイトより

https://learn.microsoft.com/ja-jp/dax/selectedvalue-function-dax

大まかに説明するとSELECTEDVALUE関数は、スライサーやフィルターで選択された値を取得するDAX関数です。
もし1つの値だけが選択されていればその値を、何も選択されていなければ指定したデフォルト値を返します。

SELECTEDVALUE(<スライサーやフィルターで選択される列名>[, <指定したい値 >,実行したい処理])
[]部分は任意ですが、スライサーやフィルターの選択によって結果を変えるので基本的には入力する必要があります。

また、SELECTEDVALUE関数ではスライサーやフィルターで選択されるテーブルと、処理を行う集計先のテーブル間でリレーションが無くても機能します。

また、SELECTEDVALUE関数のみで使用するとスライサーやフィルターで選択が無い場合は空白の結果を返してしまうので、切り替え表示をするためにはSWITCH関数やIF関数と組み合わせて使用する必要があります。

SELECTEDVALUE関数を使って販売数量と売上の表示を切り替える

実際の例ですが数量と売上の項目テーブルがあり、数量が選択された場合は販売数量、売上が選択された場合は売上を表示したい場合を想定します。

SELECTEDVALUEで指定する集計項目テーブル

集計したい売上テーブル

集計項目テーブルで売上が選択された場合、売上を集計、数量が選択された場合数量を集計、何も選択されていないときは売上を集計するメジャーを作成します。

売上_数量集計 = 
SWITCH(
    /*売上が選択されたときの集計結果*/
    SELECTEDVALUE('集計項目テーブル'[集計項目]),"売上", CALCULATE(SUM('売上テーブル'[売上])),
    /*数量が選択されたときの集計結果*/
    "数量", CALCULATE(SUM('売上テーブル'[数量])),
    /*何も選択されていないときの集計結果*/
    CALCULATE(SUM('売上テーブル'[売上]))
)

WITH関数で数量/売上が選択されたときと何も選択されていないときの集計方法を記述することで何も選択されていない場合では売上が表示されるよう設定が可能です。

実際に棒グラフとスライサーを作成して実行してみた結果は以下のように集計がスライサーの選択で動いていますね!

左から数量を選択、売上を選択、何も選択していない状態でのグラフです。
スライサーの選択に合わせて集計が変更できましたね!

この例ではSELECTEDVALUEによって集計する列 (数量と売上)を変更しましたが同じ列の集計条件を変更することも可能です。

SELECTEDVALUE関数を使ってドル/円表記を切り替える

次は同じ売上列の表記をドル/円のスライサーで切り替えたいと思います。

通貨テーブル

先ほどの売上テーブルに対して、通貨テーブルでドルが選ばれた場合は、売上をドル円レートで(1ドル = 150)割り、円やフィルターが選択されていない場合はそのままの金額を表示するメジャーを作成します。

ドル_円変換 = 
SWITCH(
    /*売上が選択されたときの集計結果*/
    SELECTEDVALUE('通貨テーブル'[通貨]),"ドル", DIVIDE(CALCULATE(SUM('売上テーブル'[売上])),150),
    /*数量が選択されたときの集計結果*/
    "円", CALCULATE(SUM('売上テーブル'[売上])),
    /*何も選択されていないときの集計結果*/
    CALCULATE(SUM('売上テーブル'[売上]))
)

表示してみると何も選択されていない場合、円選択の場合は円表記、ドルを選択すると150で割ったドル換算の金額が表示されます。

左から何も選択されていない状態 (円表示)、ドルが選択された状態 (ドル表記)、円が選択された状態 (円表示)です。

先ほどの売上/数量の表示と同様にスライサーに応じてドル/円の集計方法を選択できるようになりました!

ページを分けるほどではないけど、複数の表記を切り替えて見せたい場合にはこの方法がおすすめです!

応用編:ビジュアルのタイトル名もSELECTEDVALUEで切り替え可能!

ここからはおまけですが、ビジュアルのタイトルもSELECTEDVALUE関数を使う事で選択された項目に応じて変更することが可能です。

先ほどのドル/円表記のビジュアルでタイトルを

ドルの場合=日付ごとの売上 (ドル)

円表記の時=日付ごとの売上 (円)

と表記したいと思います。

以下のメジャーで文字列をSELECTEDVALUEの値に応じて変更します。

ドル_円変換タイトル = 
SWITCH(
    /*ドル表記*/
    SELECTEDVALUE('通貨テーブル'[通貨]),"ドル", "日付ごとの売上 (ドル)",
    /*円表記/
    "円",  "日付ごとの売上 (円)",
    /*円表記*/
     "日付ごとの売上 (円)"
)

メジャーが作成できたら、ビジュアルを選択してタイトルのfxアイコンをクリックします。

基準にするフィールドで先ほど作成したドル円変換タイトルを選択してOKをクリックします。

これでタイトル名にSELECTEDVALUE関数を含んだメジャーが設定されました。
先ほどまでのビジュアルと同様にフィルターの値に応じてタイトルが変更されます。

左から何も選択されていない (円表示のタイトル)、ドルが選択された状態 (ドル表示のタイトル)、円が表示された状態 (円表示のタイトル)

このようにタイトルもSELECTDVALUEで指定したメジャーを使用することで何が選択されているのかわかるため非常に便利です。
x、y軸のタイトルも同様に変更できれば良いのですが今のバージョンではできないのが少し残念ですね。。。

まとめ:SELECTEDVALUE関数を使う事で一つのビジュアルでも複数の表示結果を見せることが可能

SELECTEDVALUE関数を使う事で集計する列を変更する、列の集計方法を変更する、ビジュアルのタイトルを変更することが可能となります。レポート作成者だけでなく、ユーザーのニーズに合わせて画面を切り替えることができるため新しいレポート作成や管理の手間を減らす事も可能です!
ぜひお役立てください!!

Power BIに関する他の記事はこちらから




コメントを残す

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