BI探検ノート

DAX 練習問題 12 / 31

前年比を出す(SAMEPERIODLASTYEAR)

目的(何のためにやるか)

前の年と比べて、増えたか、減ったかを見るための練習です(前年比)。

状況

2025年1月〜2026年3月の売上51行です。月ごとの前年比を出します。日付テーブルを自分で作る必要があります。

準備

  1. CSV をダウンロードします(ダミーのデータです)。
  2. Power BI Desktop で、CSV を読み込みます。やり方は、はじめかたにあります。

やること

  1. 日付テーブルを作り、売上とつなぎ、「日付テーブルとしてマーク」する。
  2. 前年売上と前年比のメジャーを作る。
  3. 月ごとの表で、2025年と2026年の動きを確かめる。

まず、下を見ずに、自分でやってみてください。うまくいかなければ、ここから下の解説を、上から順に、読みながら、やってみます。

解き方(ステップごとの解説・画面つき)

  1. 練習用の CSV で、はじめから作る(画面つき)

    前提

    日付テーブルを、自分で作りたいときは、日付テーブルの DAX を作る道具もあります。

    日付テーブルを作って、売上のテーブルとつなぎ、「日付テーブルとしてマーク」してあります(手順は、日付テーブルを作る方法に書きました)。

    データは、ダミーの売上(2025年1月〜2026年3月、51行)です。売上合計 = SUM(sales3[売上]) のメジャーを、先に作りました。

    練習問題の CSV(sales_yoy.csv、51行)を使って、日付テーブルを作るところから、画面を撮り直しました(テーブル名は、sales_yoy です。下の「手順」の式は、記事を最初に書いたときのテーブル名(sales3)のままなので、読み替えてください)。

    1. CSV を読み込む。 日付、店舗、売上の3列、51行です。

    CSV のプレビュー。日付、店舗、売上の3列が見える
    CSV のプレビュー。日付、店舗、売上の3列が見える

    2. 日付テーブルを作る。 「モデリング」→「新しいテーブル」で、次の式を入れます。

    日付テーブル = CALENDAR(DATE(2025,1,1), DATE(2026,12,31))
    数式バーに、日付テーブル = CALENDAR(DATE(2025,1,1), DATE(2026,12,31)) と入っている
    数式バーに、日付テーブル = CALENDAR(DATE(2025,1,1), DATE(2026,12,31)) と入っている

    3. 売上の「日付」と、日付テーブルの「Date」をつなぐ。 モデルビューで、ドラッグします。出てきた画面では、「一対一・双方向」になっていたので、「多対一」「単一」に直して、保存しました。

    新しいリレーションシップの画面。多対一、クロスフィルターの方向は単一
    新しいリレーションシップの画面。多対一、クロスフィルターの方向は単一

    4. 日付テーブルとしてマークする。 日付テーブルを選び、「テーブル ツール」の「日付テーブルとしてマーク」をオンにして、日付列に「Date」を選ぶと、「正常に検証されました」と出ます。

    5. メジャーを作る。 売上合計、前年売上、前年比の順に、「新しいメジャー」で作ります。

    数式バーに、前年売上のメジャーが入っている
    数式バーに、前年売上のメジャーが入っている

    6. 表にして確かめる。 年と月の列(年 = YEAR('日付テーブル'[Date])、月 = MONTH('日付テーブル'[Date]))を、日付テーブルに足して、売上合計、前年売上、前年比と並べます。2026年1月は 1.16、2月は 1.45、3月は 0.81、合計は 1.23 でした(2025年は、前年がないので、空白です)。

    年と月ごとの表。2026年1月の前年比は1.16、2月は1.45、3月は0.81。2025年は前年売上と前年比が空白
    年と月ごとの表。2026年1月の前年比は1.16、2月は1.45、3月は0.81。2025年は前年売上と前年比が空白
  2. 手順

    「モデリング」タブの「新しいメジャー」で、次の2つを作ります。

    前年売上 =
    CALCULATE (
        [売上合計],
        SAMEPERIODLASTYEAR ( '日付テーブル'[Date] )
    )
    前年比 = DIVIDE ( [売上合計], [前年売上] )
    数式バーに、前年売上のメジャー(CALCULATE と SAMEPERIODLASTYEAR)を入力した画面
    数式バーに、前年売上のメジャー(CALCULATE と SAMEPERIODLASTYEAR)を入力した画面

    テーブルのビジュアルに、年、月、前年比、売上合計、前年売上を、並べました。

    年と月ごとの表。2025年の行は前年比と前年売上が空白。2026年1月は前年比 1.16、2月は 1.45、3月は 0.81。2026年4月以降は売上合計が空白だが前年売上は値がある。合計行の前年比は 1.23
    年と月ごとの表。2025年の行は前年比と前年売上が空白。2026年1月は前年比 1.16、2月は 1.45、3月は 0.81。2026年4月以降は売上合計が空白だが前年売上は値がある。合計行の前年比は 1.23

    結果の読み方

    • 2025年の行: 売上合計はありますが、前年売上と前年比は、空白でした。前の年(2024年)のデータが、ないためです。
    • 2026年1〜3月: 前年比は、1月が 1.16、2月が 1.45、3月が 0.81 でした(1月は、4573 ÷ 3931 です)。
    • 2026年4〜12月: 売上合計は空白ですが、前年売上は、2025年の同じ月の値が出ます(4月は 4150 など)。前年比は、売上合計が空白なので、空白になります。「売上がない月に、前年売上だけ出る」ことに、驚かないようにします。
    • 合計行: 前年比が 1.23 になっています。これは、全期間の売上合計(75874)を、前年売上の合計(61508、2025年だけ)で割った値で、年どうしの比較ではありません。この値を、そのまま報告に使わないようにします。

答え合わせ

自分で採点する数字

2026年1月の前年比が 1.16(4573 ÷ 3931)、2月が 1.45、3月が 0.81。2025年の行は空白。

  • 前年売上 = CALCULATE([売上合計], SAMEPERIODLASTYEAR(日付テーブル[Date]))、前年比 = DIVIDE([売上合計], [前年売上])。
  • 2025年の行は、前年のデータがないので、前年売上も前年比も空白。
  • 2026年4月以降は売上が空白でも、前年売上には2025年の同じ月の値が出る。合計行の前年比(1.23)は、年どうしの比較ではない。

この解説は、実機(Power BI Desktop 日本語版 2.159.883.0)で確かめた記事から、まとめています。確認していないことは、記事の最後に書いています。
元の記事を読む →

確認日: 2026-10-25。CSV はダミーのデータで、無料です。