BI探検ノート

Power BI で4月始まりの年度累計を出す方法(TOTALYTD)

約6分

濵口 翔長崎で、Power BI のつまずきを記録しています
目次
  1. 前提(簡易なモデルです)
  2. 手順: 3つのメジャー
  3. 落とし穴: マークする前は、累計が増えない
  4. 直し方: 日付テーブルとしてマークする
  5. 別の計算との照合
  6. 公式の記載との照合
  7. この記事で確認できたこと・できていないこと
  8. 参考

確認日2026年10月24日。Power BI Desktop(日本語版、2.159.883.0)で、ダミーのデータを使って確かめました。確認できていないことは、末尾にまとめました。

日本の会社は、4月から翌年3月までを1年度とすることが多いです。年度ごとの累計(年度累計)と、前年度の同じ月までの累計を、DAX で出しました。日付テーブルとして「マーク」する前は、年度累計が増えませんでした。マークすると、正しく出ました。

結論(30秒版)

  • 年度累計 = TOTALYTD([年度売上合計], 'カレンダー2'[Date], "3/31") で、3月末を年度の終わりにして、4月にリセットされる累計が出ました。前年度累計 = CALCULATE([年度累計], SAMEPERIODLASTYEAR('カレンダー2'[Date])) で、前年度の同じ月までの累計が出ました。
  • 日付テーブルとして「マーク」する前は、年度累計が、その月の売上と同じ値のまま、増えませんでした(合計の行も 46,503 で、年間の合計 92,994 になりません)。
  • マークしたあとは、24か月分の年度累計と前年度累計が、Python での別の計算と全部一致しました。

前提(簡易なモデルです)

2024年4月1日〜2026年3月31日(730日)の日付の表を、DAX で作りました。ほかの表と、リレーションシップで、つないだモデルではなく、売上も、この表の列として持たせた簡易なモデルです(売上は、毎月1日の行だけに入れました)。

カレンダー2 =
ADDCOLUMNS (
    CALENDAR ( DATE ( 2024, 4, 1 ), DATE ( 2026, 3, 31 ) ),
    "年度", IF ( MONTH ( [Date] ) >= 4, YEAR ( [Date] ), YEAR ( [Date] ) - 1 )
)

列を2つ足しました。

売上 = IF ( DAY ( [Date] ) = 1, 3000 + MOD ( MONTH ( [Date] ) * 700 + YEAR ( [Date] ), 1900 ), 0 )

年月 = FORMAT ( [Date], "yyyy-MM" )

売上は、2024年4月が 4,024、5月が 4,724、…、2026年3月が 3,326 で、24か月の合計は 92,994 です。

手順: 3つのメジャー

年度売上合計 = SUM ( 'カレンダー2'[売上] )

年度累計 = TOTALYTD ( [年度売上合計], 'カレンダー2'[Date], "3/31" )

前年度累計 = CALCULATE ( [年度累計], SAMEPERIODLASTYEAR ( 'カレンダー2'[Date] ) )

TOTALYTD の第3引数 "3/31" が、**年度の終わり(3月31日)**です。年の部分は無視される、と公式に書かれています(確認日 2026年10月24日)。

落とし穴: マークする前は、累計が増えない

表のビジュアルに、「年月」(行)と、「年度売上合計」「年度累計」を入れました。結果は、次のとおりです。

表のビジュアル(日付テーブルとしてマークする前)。年月ごとの、年度売上合計と年度累計が、すべての月で同じ値(2024-04 は 4024 と 4024、2024-05 は 4724 と 4724)。合計の行は、年度売上合計が 92994、年度累計が 46503

年度累計が、毎月、その月の売上と同じ値でした(2024年5月は、4,024 + 4,724 = 8,748 になるはずが、4,724)。

私は、「年月」の列が、日付の列と同じ表にあり、「年月」の絞り込みが、年度累計の日付の範囲と、重なっているためだと、読んでいます(この理由は、確かめきれていません)。

直し方: 日付テーブルとしてマークする

次の手順で、マークしました。

  1. 「カレンダー2」の表を選びます(表ビュー)。
  2. 「テーブル ツール」の「日付テーブルとしてマークする」を押します。
  3. 「日付テーブルとしてマーク」を「オン」にして、日付の列に「Date」を選んで、「保存」を押します。

すると、年度累計が、増えるようになりました。

表のビジュアル(日付テーブルとしてマークしたあと)。年月、年度売上合計、年度累計、前年度累計。2024-04 は 4024、4024、空白。2024-05 は 4724、8748。2025-03 は 3325、46491。2025-04 は 4025、4025、4024(4月で、リセットされている)。2026-03 は 3326、46503、46491。合計の行は、年度売上合計 92994、年度累計 46503、前年度累計 46491

  • 2024-04 から 2025-03(2024年度)は、4,024、8,748、12,272、…、46,491 と増えました。
  • 2025-04 に、4,025 に戻りました(新しい年度の累計)。
  • 2025-04 以降の行では、前年度累計が、4,024、8,748、…、46,491 と出ました(前年度の同じ月までの累計)。
  • 2024年度の行(2024-04〜2025-03)の、前年度累計は、前の年度のデータがないので、空白です。

別の計算との照合

画面の値が合っているかを、Python で、別に計算して、比べました(同じ式で売上を作って、年度ごとに、月順に足しました)。24か月分の年度累計と、12か月分の前年度累計が、すべて一致しました。たとえば、2025年3月は 46,491、2026年3月は 46,503、2025年4月の前年度累計は 4,024 でした。

公式の記載との照合

Microsoft Learn(英語版、確認日 2026年10月24日)と、私の観察を、突き合わせました。

  • TOTALYTD の構文: TOTALYTD(<expression>, <dates>[, <filter>][, <year_end_date>]) です。year_end_date は、日付を表す文字で、年の部分は無視されます。私は、第3引数に、"3/31" を直接、置きました(間にフィルターの引数を入れず)。画面では、年度の終わりとして、働きました。
  • 日付テーブルのマーク: 公式の「Set and use date tables in Power BI Desktop」には、古い形の時間インテリジェンス関数を使うときなどに、日付テーブルをマークする必要がある、と書かれています。私の画面でも、マークで、結果が変わりました。
  • 公式の例: TOTALYTD の公式の例には、フィルターの引数に、ALL('DateTime')(日付の表全体の絞り込みを外す)を置いて、"6/30" を足した例がありました。マークしない場合の、別の回避策に見えます。私は、この書き方を、試していません。

この記事で確認できたこと・できていないこと

確認日: 2026年10月24日。Power BI Desktop(Windows、日本語版、2.159.883.0、未サインイン)、ダミーのデータ(24か月)。

確認できたこと

  • TOTALYTD(…, "3/31") で、年度累計が出て、4月にリセットされること
  • SAMEPERIODLASTYEAR を組み合わせた、前年度累計が出ること
  • 日付テーブルとしてマークする前は、年度累計が増えなかったこと(同じ表の「年月」の列を、行にしたとき)
  • マークしたあと、24か月分が別の計算と一致したこと

確認できていないこと

  • マークしない状態で、公式の例の ALL('カレンダー2') を、フィルターの引数に置く方法
  • 売上が、別の表にあって、リレーションシップでつながっているモデル(この記事は、簡易なモデルです)
  • 年度の終わりが、3月以外の場合(「9/30」など)。式の形は同じです
  • 年度の途中までのデータ(データが、ある月までしかない場合)での、前年度累計の見え方
  • 折れ線グラフ、カード、Power BI サービスでの動作、英語版での名称

参考

この記事で使った用語

Power BI Desktop
Windows で動く、レポートを作るためのアプリです。データの取り込みとモデルの作成、レポートの作成に向いています。

用語集をすべて見る