この記事で分かること
Power BIで累計値を正しくグラフ化する方法を解説します。
「クイックメジャーを使ったのに、思うように累計が出ない…」という経験はありませんか?
本記事では一例としてクイックメジャーでは月初でリセットされる不具合事例を取り上げます。
そして、DAXのISONORAFTER関数を中心に、CALCULATE関数、SUM関数、FILTER関数、ALLSELECTED関数の組み合わせを使って、累計計算の困り事を解決します。
「何故そうなるのか?」を具体的なグラフと式で丁寧に解説します。
課題|累計値グラフを作る難しさ
今回の課題は「累計計算」です。
Power BIではクイックメジャー機能を使えば簡単に累計を作れますが、月初で先月までの累計がリセットされる事例があります。
以下の模擬データのグラフ化を題材にして具体的に説明します。
模擬データについて
今回使用するデータは次のとおりです。
日付列:2024年1月初め~2025年2月末までを日単位で入力
値列:1からの連番

グラフについて
目指すグラフは以下※1~※3です
※1:横軸に年月
※2:縦軸の第一軸に合計をとった「棒グラフ」
※3:縦軸の第二軸に累計をとった「線グラフ」
まずは正解グラフを示します。

続いて、クイックメジャーで累計を作った場合の不正解グラフです。

月初めでリセットされているため、線グラフと棒グラフが同じ値になっています。
クイックメジャーは下図の通り設定しました。

メジャー式に見慣れないISONORAFTER関数が使われています。これを色々調べてハマった人がいるかもしれません。
しかしISONORAFTER関数の誤りではなく、ALLSELECTED関数の使い方に原因があります。
答え|ISONORAFTER関数が理解できなくても累計メジャーは作れる
結論から言うと、ISONORAFTER関数を完全に理解していなくても累計メジャーは作成できます。
すなわち以下の累計メジャーです。
累計メジャー =CALCULATE(
SUM(Data[値]),
FILTER(
ALLSELECTED(‘Data’),
ISONORAFTER(
’Data'[年月日],
MAX(‘Data'[年月日]),
DESC
)
)
)
クイックメジャーで自動生成される式では、
ALLSELECTED(‘Data'[年月日])
となっていますが、これを
ALLSELECTED(‘Data’)
に変更するだけでOKです。
つまり、ISONORAFTER関数を理解していなくても、この一か所の修正で累計グラフは正しく動作します。
解説|ISONORAFTER関数を含めて累計メジャーを理解しよう
なぜクイックメジャーでは上手くいかないのか?
横軸を「年月」にしたグラフでは、ALLSELECTED(‘Data'[年月日]) が各月単位でフィルタされるため、前月以前のデータが計算対象に含まれません。
その結果、各月が独立して集計され、累計にならないのです。
ただし、クイックメジャーでもカードビジュアルなら正しく動作します。何故ならカードは「年月でフィルタされない」ビジュアルだからです。
累計メジャー式の詳細解説
式の構造を順に分解して理解してみましょう。
CALCULATE関数:
集計の文脈(フィルターコンテキスト)を再定義する関数です。累計や条件付き合計ではほぼ必須です。
SUM(Data[値]):
「値」列の合計を取ります。ここでは累計の基本単位です。
FILTER関数:
ALLSELECTEDで取得した全データの中から、条件に一致する行を抽出します。
ALLSELECTED(‘Data’):
現在のフィルタ選択を保持したまま、全体のテーブルを対象とします。
繰り返しますが、グラフの場合、’Data'[年月日]にしてしまうと、月ごとのフィルタが働いて前月が除外されます。
ISONORAFTER関数:
指定した列が「指定した値以降」であるかを判定します。
今回の場合、以下の通りです。
指定した列=’Data'[年月日]
指定した値=MAX(‘Data'[年月日]) グラフの各月の最大値(30日とか31日。2月なら28日、29日)
そしてDESCを引数にすることで、新しい日付から数えて、指定した値以降(つまり指定した値より過去)の値に対して条件TRUEを返します。
後はこれをFILTER関数の条件抽出に使うことで、TRUEとなる日付のみを集計対象にします。
まとめ
- クイックメジャーでの累計がリセットされる原因は、ALLSELECTED(‘Data'[年月日]) にありました。
- 修正点はたった1か所、ALLSELECTED(‘Data’) に変えるだけでOKです。
- ISONORAFTER関数は**「指定した値以降を含む」**という条件を設定する関数で、累計計算ではよく使われます。
- CALCULATE・FILTER・ALLSELECTEDの理解が進むと、より柔軟なDAX設計が可能になります。
Power BIの累計計算に悩んだときは、今回の方法をぜひ参考にしてみてください(終わり)。

コメント