はじめに
Power BIの基本的なことである日付テーブルの作成についてのメモです。日付テーブルは、カレンダーテーブルとも呼ばれます。
英語コンテンツでは、date table または calendar table 等と呼ばれています。
日付テーブルの要件
Docs : Power BI Desktop で日付テーブルを作成するより、日付テーブルには要件があり以下です。
- "日付列" と呼ばれるデータ型 date (または date/time ) の列が必要
- 日付列には一意の値が含まれている必要
- 日付列に空白を含めることはできない。
- 日付列に欠落している日付があってはならない。
- 日付列は年間全体にわたっている必要がある。1 年は必ずしも暦年 (1 月から 12 月) である必要はなく、4月から翌年3月でもよい。
- 日付テーブルには日付テーブルとしてマークされている必要がある。
DAXでの日付テーブルの例
計算テーブル(新しいテーブル)で作成する例です。CALENDARAUTO関数を使っているので、ディメンションテーブルで古い日付を持っている場合などは適時書き換え等を行ったほうがよいです。
日付テーブル(カレンダーテーブル)の例
Dates =
// テーブル名は「Dates」
// (方法1) CALENDARAUTO。データモデルのテーブルに日付があるとき、範囲が無駄に広くならないか要注意
var BaseCalendar = CALENDARAUTO()
// (方法2) 以下のように決め打ちの日付指定またはファクトテーブルに含まる日付持ってくる等
// var BaseCalendar = CALENDAR(DATE (2020, 1, 1), DATE (2021, 12, 31))
RETURN
GENERATE(
BaseCalendar,
var BaseDate = [Date]
var YearNumber = YEAR(BaseDate)
var MonthNumber = MONTH(BaseDate)
var DateNumber = DAY(BaseDate)
var DayNumber = WEEKDAY(BaseDate, 1)
RETURN
ROW(
"年", YearNumber,
"月", MonthNumber,
"日", DateNumber,
"年月_番号", FORMAT(BaseDate, "yyyymm"),
"年月", FORMAT(BaseDate, "yyyy/mm"),
"月日_番号", FORMAT(BaseDate, "yyyymmdd"),
"月日", FORMAT(BaseDate, "mm/dd"),
"曜日_番号", DayNumber,
"曜日", SWITCH(DayNumber, 1, "日", 2, "月", 3, "火", 4, "水", 5, "木", 6, "金", 7, "土",""),
"相対月数", DATEDIFF(TODAY(), BaseDate, MONTH)
)
)
日付テーブルに関数する関連ページ
by Docs, Learn
↑「Power BI Desktop の自動の日付/時刻」既定の自動で作るとどうなるか.. (私は設定2か所オフにしています)
自動で作られた日付テーブルはDAX Studio等で確認できます。
by かたがさん
by y-komuroさん