以前、DAXで日付テーブルを作成してみましたが、今回はPower Queryを使って日付テーブルを作成していきます。(「Power BIで日付テーブルを作成する」)
パラメータの設定
日付テーブルに設定するFrom-Toの日付をパラメータで設定します。その他、言語を日本語と英語の選択可能にし、週の始まりを日曜日にするか、月曜日にするかを選べるようにします。
Power Query
以下のようなクエリを作成しました。
let
DateFromDate = Date.FromText(FromDate, "ja-JP"),
DateToDate = Date.FromText(ToDate, "ja-JP"),
Source = List.Dates(
DateFromDate,
Duration.Days(DateToDate - DateFromDate) + 1,
#duration(1,0,0,0)
),
ListToTable = Table.FromList(
Source,
Splitter.SplitByNothing(),
type table [Date = Date.Type],
null,
ExtraValues.Error
),
// 年
YearAdded = Table.AddColumn(
ListToTable,
"Year",
each Date.Year([Date]),
Int32.Type
),
// 月
MonthAdd = Table.AddColumn(
YearAdded,
"Month",
each Date.Month([Date]),
Int32.Type
),
// 日
DayAdd = Table.AddColumn(
MonthAdd,
"Day",
each Date.Day([Date]),
Int32.Type
),
// 年月
YearMonthAdd = Table.AddColumn(
DayAdd,
"YearMonth",
each Date.ToText([Date], "yyyyMM", Language),
Text.Type
),
// 年月日
YearMonthDayAdd = Table.AddColumn(
YearMonthAdd,
"YearMonthDay",
each Date.ToText([Date], "yyyyMMdd", Language),
Text.Type
),
// 曜日
WeekAdd = Table.AddColumn(
YearMonthDayAdd,
"Week",
each Date.ToText([Date], "ddd", Language),
Text.Type
),
WeekNumberAdd = Table.AddColumn(
WeekAdd,
"WeekNumber",
each Date.DayOfWeek([Date], StartWeekDay),
Int32.Type
),
// 週開始日
StartOfWeekAdd = Table.AddColumn(
WeekNumberAdd,
"WeekStartDate",
each Date.AddDays([Date], - [WeekNumber]),
Date.Type
),
// 月末日
EndOfMonthAdd = Table.AddColumn(
StartOfWeekAdd,
"EndOfMonth",
each Date.EndOfMonth([Date]),
Date.Type
),
// 月日数
DaysInMonthAdd = Table.AddColumn(
EndOfMonthAdd,
"DaysInMonth",
each Date.DaysInMonth([Date]),
Int32.Type
)
in
DaysInMonthAdd
テンプレートファイルで保存
テンプレートファイルで保存すると、次回使用するときに、パラメータ設定画面が最初に表示されるようになります。
ここで入力した値に基づいて日付テーブルが作成されますが、後からパラメータの値を変えて変更することもできます。