お疲れ様です。きざきまるおです。
今回はPowerBIでスライサーで選択した前日、前月、前年の値をうまく表示させる方法について共有しようと思います。
スライサーで絞った値の前日、前月、前年の値の取得に意外と苦労している人も多いかと思うので、こちらの方法でお試しください。
それではどうぞ。
サンプルデータ
こちらのエクセルファイルを使いましょう。
※値はランダム値を用いているので、のちに出てくるサンプル結果とは値がずれます。
そしてPowerBIで上記ファイルを取り込み後、以下列を追加します。
年 = YEAR('orders'[日付])
月 =
IF(
MONTH('orders'[日付]) < 10,
CONCATENATE("0", CONVERT(MONTH('orders'[日付]), STRING)),
CONVERT(MONTH('orders'[日付]), STRING)
)
日 =
IF(
DAY('orders'[日付]) < 10,
CONCATENATE("0", CONVERT(DAY('orders'[日付]), STRING)),
CONVERT(DAY('orders'[日付]), STRING)
)
ここまででサンプルデータの準備が完了です。
前月の値取得
今回は前月にフォーカスしていきます。
以降の手順で出てくる値を編集すれば前日や前年の値を取得することができますので、安心してください。
前準備
まずは年月の値を持つ列を作成します。
前日の場合は年月日、前年の場合は年としてください。
年月 = CONCATENATE('orders'[年], 'orders'[月])
ここからが前月の値取得のカギになります。
作成した年月列を利用して順位付けをします。
年月番号 =
RANKX(
'orders',
[年月],
,
ASC,
Dense
)
これで準備完了です。
値の取得
実際に値の取得方法を見ていきましょう。
まずは選択付きと前月の値を取得するDAXを作成します。
選択月_個数 =
CALCULATE(
SUM('orders'[個数]),
'orders'[年月] = SELECTEDVALUE(orders[年月])
)
前月_個数 =
CALCULATE(
SUM('orders'[個数]),
FILTER(
ALL('orders'),
[年月番号] = MAX('orders'[年月番号]) - 1
)
)
年月のスライサーと選択月、前月の個数のカードを作成し、お試しで3か月の値を比較してみましょう。
はい。無事に前月の値を取得できていそうですね。
なぜこのような下準備が必要になるかというと、スライサーによって内部的にテーブルへフィルターがかかってしまい、前月の値を取得したいときはそのフィルターを除外する必要があるからですね。
それではまた。