Power BIのカレンダーテーブルはPower Queryで作れ!その理由と方法を解説

Power BIを使う上で、日付テーブルって本当に重要ですよね。
Power BIでは時系列分析を行う場面が多く、そのグラフやチャートの基礎となるのが、この日付テーブルなんです。
言い換えれば、日付テーブルがしっかりしていないと、分析も思うように進まないことがあるということですね。
これまでDAXを使った方法など、様々な方法を紹介してきましたが、
最近、「これが一番良いな!」と思った方法がPower Queryで日付テーブルを作る ことです!
個人的には、これが現時点での最善策だと感じています。
●Before:DAXを使ったカレンダーテーブルの作成

理由としては、
開始年と終了年、さらに会計年度の開始月をパラメーターで指定し、Power Query内で活用することで、企業ごとに異なる会計年度にも柔軟に対応した動的な日付テーブルを簡単に作成することができるということです!
この方法なら、様々なビジネス要件にも対応でき、時系列分析の基盤となるテーブルを効率的に管理できます。
というわけで、下の動画にて Power Queryで動的な日付テーブルを作るメリットと方法を紹介しています。
サンプルクエリについては下記を参照してみてみてください。
= let
StartYear = InputStartYear, // 例: 開始年(2023)
EndYear = InputEndYear, // 例: 終了年(2025)
FiscalStartMonth = InputFiscalStartMonth, // 例: 会計年度の開始月(4月)
// 開始日と終了日を計算
StartDate = #date(StartYear, 1, 1),
EndDate = #date(EndYear, 12, 31),
NumberOfDays = Duration.Days(EndDate - StartDate) + 1,
DateList = List.Dates(StartDate, NumberOfDays, #duration(1, 0, 0, 0)),
// テーブル化
DateTable = Table.FromList(DateList, Splitter.SplitByNothing(), {"Date"}),
// 日付列の型を設定
DateWithColumns = Table.TransformColumns(DateTable, {{"Date", each DateTime.Date(_), type date}}),
// 年を追加
WithYear = Table.AddColumn(DateWithColumns, "Year", each Date.Year([Date]), Int64.Type),
// 月の列を追加
WithMonth = Table.AddColumn(WithYear, "Month", each Date.Month([Date]), Int64.Type),
// 月名の列を追加
WithMonthName = Table.AddColumn(WithMonth, "Month Name", each Date.ToText([Date], "MMMM"), type text),
// 日の列を追加
WithDay = Table.AddColumn(WithMonthName, "Day", each Date.Day([Date]), Int64.Type),
// 曜日番号(0=日曜日)の列を追加
WithDayOfWeek = Table.AddColumn(WithDay, "Day of Week", each Date.DayOfWeek([Date], Day.Sunday), Int64.Type),
// 曜日名の列を追加
WithDayOfWeekName = Table.AddColumn(WithDayOfWeek, "Day of Week Name", each Date.ToText([Date], "dddd"), type text),
// 四半期の列を追加
WithQuarter = Table.AddColumn(WithDayOfWeekName, "Quarter", each Date.QuarterOfYear([Date]), Int64.Type),
// ISO週番号の列を追加
WithISOWeekNumber = Table.AddColumn(WithQuarter, "ISO Week Number", each Date.WeekOfYear([Date], Day.Monday), Int64.Type),
// 年と月(YYYY-MM)の列を追加
WithYearMonth = Table.AddColumn(WithISOWeekNumber, "Year-Month", each Date.ToText([Date], "yyyy-MM"), type text),
// 営業日フラグの列を追加(0=非営業日, 1=営業日)
WithBusinessDayFlag = Table.AddColumn(WithYearMonth, "Is Business Day", each if Date.DayOfWeek([Date], Day.Sunday) > 4 then 0 else 1, Int64.Type)
in
WithBusinessDayFlag
会員登録いただくと、会計月に対応したフルのクエリとその作り方・サンプルデータを提供しますので、興味あれば登録もお願い致します!
初回は導入サポートも行います。




コメントを残す