![見出し画像](https://assets.st-note.com/production/uploads/images/129168783/rectangle_large_type_2_0c7b522cae6bb8f78ab6b51bba719562.png?width=1200)
【PowerBI】前年比を可視化する
PowerBIのDAX関数を使用して前年比を可視化するのに意外と詰まってしまった経験があるので、詰まった箇所についてまとめてみました。
前年比とは
前年比とは「ある特定の指標について、前年度と今年度を比較してどの程度の割合増加(減少)したか」を表します。前年度比や昨対比ともいいます。
例えば販売額の前年比を可視化したい場合には、今年度の販売額と前年度の同時期の販売額を比較して増減率を計算します。
今回は販売額を特定の指標として前年比の計算方法を書いていきます。
前年比を計算する際のデータモデルの構成
まずは実績関連のデータと時系列データをそれぞれテーブルで持たせて、以下の画像のようにテーブル間のリレーションを組む必要があります。
![](https://assets.st-note.com/img/1706505199314-bJttxdvTYk.png)
カレンダーテーブルは基本的にはCALENDARAUTO()のみで作成できますが、必要に応じてADDCOLUMNSを使用してカレンダーテーブルをカスタマイズすることはよくあります。
前年データのDAX式
前年データのDAX式は以下の通りです。
前年の販売額 =
CALCULATE(
SUM('販売実績テーブル'[販売額]),
SAMEPERIODLASTYEAR('カレンダーテーブル'[Date])
)
使用したDAX関数はSAMEPERIODLASTYEAR関数です。
文字通り「昨年の同期間」を表してくれる関数で、引数には連続する時系列のカラムを指定します。
また、DATEADD関数を使用して以下のようにも記載できます。
前年の販売額 =
CALCULATE(
SUM('販売実績テーブル'[販売額]),
DATEADD('カレンダーテーブル'[Date], -1, YEAR)
)
DATEADD関数とは、特定の日付を基準としてその日付から一定期間遡るか進める関数です。
第一引数では対象となるテーブルのカラムを指定します。
第二引数ではどの程度時間を進める(遡る)かを数量的に指定します。
第三引数では時間を進める(遡る)単位を指定します。年、月、四半期、日の四種類の単位を指定できます。
使用する関数は上記のどちらでもよいですが、前年比の算出においてはどうやらSAMEPERIODLASTYEAR関数が一般的なようです。
前年比のDAX式
前年の販売額を基に算出した前年比のDAX式は以下の通りです。
前年比 = DIVIDE(SUM('販売実績テーブル'[販売額]) - [前年の販売額], [前年の販売額])
DIVIDE関数は割り算を行うDAX関数で、第一引数は分子、第二引数は分母を表します。
今回詰まった点について
初めは'カレンダーテーブル'[Date]ではなく、'販売実績テーブル'[計上年月]を引数にしていました。
前年の販売額 =
CALCULATE(
SUM('販売実績テーブル'[販売額]),
SAMEPERIODLASTYEAR('販売実績テーブル'[計上年月])
)
しかし上記の書き方だと今年の販売額と前年の販売額が等しくなってしまい、前年比が全て0%というおかしなことになっていました(画像を用意したかった)。
'カレンダーテーブル'[Date]は連続した時系列データである一方、'販売実績テーブル'[計上年月]は日によって実績データがないこともあり得るため、「昨年の同期間」を正確に遡れないことが原因だと考えています。
完成イメージ(数値のみ)
![](https://assets.st-note.com/img/1706510775690-DIrnjdqza1.png?width=1200)
グラフ表示するなら集合縦棒グラフかなぁ
まとめ
SAMEPERIODLASTYEAR関数を使って過去に前年比を可視化していたのにすっかり忘れて無駄に工数を費やしてしまいました。
記憶だけを頼りにして何度も無駄な時間を使ってきたので、今後そんなことがないよう逐一まとめていきます!