日付テーブルの取り扱いについて

カテゴリ: データモデリング作成日: 2026-02-26

Power BIで集計や分析を行うと、必ずと必要となるのが日付テーブルです。
日付テーブルは、わざわざExcelなどで日付用のテーブルを作成し、取り込む必要はありません。
Power BIのテーブル作成機能を使い、日付テーブルを作成できます。

日付テーブルの作成

Power BIの上部メニューから「モデリング」>「新しいテーブル」を押下すると、数式バーがアクティブになります。
日付テーブルの作成方法は、Addcolumns関数Calendar関数を使用します。
下記は2025年から2030年の5年間を期間とするものです。

_日付 = 
ADDCOLUMNS (
    CALENDAR (DATE(2025,1,1), DATE(2030,12,31)),

    "年", YEAR([Date]),
    "月", FORMAT([Date], "YYYY-MM"),
)

上記より、「_日付」テーブルには「Date」、「年」、「月」の3つの列が作成されます。
Year関数で年、Date関数で月の列を作成しています。
 ※" "で囲まれているところは列名で、任意に変更可能です
実際に作成された列は、Power BI左メニューの「テーブルビュー」から確認できます。

日付テーブルの作成

データ取り込みではなく、Power BI上で作成するテーブルやメジャーは、名前の先頭に「_(アンダーバー)」などを付けておくと管理しやすいです。

日付テーブルの改良

上記で年と月の列を作成しましたが、他にも列は自作できます。
例えば、会計年度や当月判定など、任意のものをDAXを使って作成します。
作成方法は、メジャーで個別にすることもできますが、日付テーブルは個別に改良するケースも少ないので、テーブル生成のDAXで一括作成します。

_日付 = 
ADDCOLUMNS (
    CALENDAR (DATE(2025,1,1), DATE(2030,12,31)),

    // 基本情報
    "年", YEAR([Date]),
    "月", MONTH([Date]),
    "週番号", WEEKNUM([Date], 2),
    "週始まり", [Date] - WEEKDAY([Date],2) + 1,
    "週終わり", [Date] - WEEKDAY([Date],2) + 7,

    // 会計月
    "会計月(4月始まり)",
        IF ( MONTH([Date]) >= 4,
             MONTH([Date]) - 3,
             MONTH([Date]) + 9
        ),
    "会計月(1月始まり)",
        IF ( MONTH([Date]) >= 1,
             MONTH([Date]) ,
             MONTH([Date]) + 12
        ),

    // 会計年度
    "会計年度(4月始まり)",
        IF ( MONTH([Date]) >= 4,
             YEAR([Date]),
             YEAR([Date]) - 1
        ),
    "会計年度(1月始まり)",
        IF ( MONTH([Date]) >= 1,
             YEAR([Date]),
             YEAR([Date]) - 1
        ),

    // 当月フラグ
    "当月",
        IF (
            YEAR([Date]) = YEAR(TODAY()) &&
            MONTH([Date]) = MONTH(TODAY()),
            1,
            0
        ),

    // 当年フラグ
    "当年",
        IF (
            IF ( MONTH([Date]) >= 4, YEAR([Date]), YEAR([Date]) - 1)
             = IF ( MONTH(TODAY()) >= 4, YEAR(TODAY()), YEAR(TODAY()) - 1),
            1,
            0
        ),

    // 表示用
    "表示年-月", FORMAT([Date], "YYYY-MM"),
    "表示月", FORMAT([Date], "M月"),
    "表示会計月", FORMAT([Date], "YYYY年M月")
)

テーブルビューで確認すると、下図の通りです。

日付テーブルの改良