#PowerBIのパラメーターを使ってフィルターをかける
品質管理の方からの、ダッシュボード作成依頼がきっかけ。
「Aの指標は〇〇以上、Bの指標は〇〇以下のデータが見たい」
「パラメーターをクライアント側で調整できるようにしたい」
これをPowerBIならパラメーターで実現できた。
Excelなら「フィルターの詳細設定」あたりでできそう。
#パラメーターを表(マトリックス)に使う
今回は、「気温〇〇度以上、湿度〇〇度以下」を
指定できる表を作ってみる。
##データを用意する
日別の気温と湿度のデータを用意する。
ExcelのRAND関数で用意したので正しい季節性はない。
PowerBIに取り込んでおく。
##パラメーターを作る
今回は__気温用__と__湿度用__のパラメーターを2つ作る。
モデリングのタブから、新しいパラメーターをクリックする。
増分を10にしたり、既定値を20にしたり、好きなように設定できる。
2つ作るとフィールドにはこのように作成される。
パラメーター = GENERATESERIES(最小値, 最大値, 増分)
パラメーター 値 = SELECTEDVALUE('パラメーター'[パラメーター], 既定値)
「パラメーター 値」の名前を変更して使用することも可能。
「このページにスライサーを追加する」をチェックすると
レポートにスライサーが出てくる。
フィールドにおくパラメーターを変更することもできるので、
2回目以降はスライサーは新しく作らず、
書式を固めたらコピーしてフィールドを変更する方が楽だと思う。
今回は、以下のようにした。
・温度用(0~70℃までを、1℃ずつ指定できる。規定は30℃)
パラメーター = GENERATESERIES(0, 70, 1)
パラメーター 値 = SELECTEDVALUE('パラメーター'[パラメーター], 30)
・湿度用(0~100%を1%ずつ指定できる。規定は50%)
※ユーザーが入力しやすいよう整数にしたが、10進数も可能。
パラメーター 2 = GENERATESERIES(0, 100, 1)
パラメーター 値 2 = SELECTEDVALUE('パラメーター 2'[パラメーター], 50)
##表(マトリックス)を作っておく
視覚化からマトリックスを選び、表示したいフィールドを追加する。
##作ったパラメーターを入力できるようにする
スライサーの書式をお好みに変更して、マトリックスの近くに設置する。
説明のテキストボックスと、スライサーを2つ並べてみた。
##絞り込み用のメジャーを作る
パラメーターを使ってフィルタリングできる仕組みを作る。
先ほど用意した、「パラメーター 値」と「パラメーター 値 2」を使う。
tmp_prm = IF(
AND(
sum(data[気温]) >= [パラメーター 値],
sum(data[湿度]) <= [パラメーター 値 2]/100
),
sum(data[気温]),
BLANK()
)
解説すると、
①AND関数で、以下を確認してBool値を取得。
・気温 が パラメーター 値 より大きいか
・湿度 が パラメーター 値 2より小さいか
②TRUEの時は「気温」を表示(湿度や、「1」でもよい)
③FALSEの時はBLANK(空白)を表示
##表(マトリックス)に反映させる。
先ほど作った「tmp_prm」を
マトリックスのフィルターに追加し、「空白でない」にする。
#結果
「気温〇〇度以上、湿度〇〇度以下」の日付が特定できるようになった。
もっといいやり方がある気がしつつも、
急いでいる人にはおすすめ。