Create the calendar table with Power Query
Hello friends! Today we’ll be learning create calendar table with Power Query. Creating a calendar table using Power Query can be beneficial for several reasons like Data Consistency, Customization, Data Modeling etc. using M language to generate a range of dates.
Creating a calendar table using Power Query can be beneficial for several reasons:
- Data Consistency: A calendar table ensures consistency in date-related analyses by providing a consistent set of dates. It allows you to avoid missing or duplicate dates in your analysis.
- Facilitates Time Intelligence: For time-based analysis in tools like Power BI or Excel, having a calendar table simplifies calculations involving dates (such as year-to-date, month-over-month, etc.). It aids in implementing time intelligence functions and measures easily.
- Ease of Use: With a pre-defined calendar table, you don’t have to generate date sequences each time you need them in your analysis. It’s readily available for use across multiple reports or analyses.
- Customization: You can create calendar tables with additional columns like day of the week, week number, fiscal periods, etc., which can be handy for various types of reporting and analysis.
- Data Modeling: In tools like Power BI, a calendar table is often used as a Date table for creating relationships with other fact tables. This is essential for building relationships in a data model and performing accurate analyses across different data sets.
Go to get data and Blank query (as shown in image below):

In the power query window, go to advance editor and paste the query below

let
Source = List.Dates(#date(2024,1,1),365, #duration(1,0,0,0)),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}}),
#"Inserted Year" = Table.AddColumn(#"Changed Type", "Year", each Date.Year([Date]), Int64.Type),
#"Inserted Month" = Table.AddColumn(#"Inserted Year", "Month", each Date.Month([Date]), Int64.Type),
#"Inserted Month Name" = Table.AddColumn(#"Inserted Month", "Month Name", each Date.MonthName([Date]), type text),
#"Inserted Day of Week" = Table.AddColumn(#"Inserted Month Name", "Day of Week", each Date.DayOfWeek([Date]), Int64.Type),
#"Inserted Day Name" = Table.AddColumn(#"Inserted Day of Week", "Day Name", each Date.DayOfWeekName([Date]), type text),
#"Added Conditional Column" = Table.AddColumn(#"Inserted Day Name", "Is Weekend?", each if [Day of Week] = 6 then "Yes" else if [Day of Week] = 0 then "Yes" else "No"),
#"Inserted Start of Month" = Table.AddColumn(#"Added Conditional Column", "Start of Month", each Date.StartOfMonth([Date]), type date),
#"Added Custom" = Table.AddColumn(#"Inserted Start of Month", "Year Month", each [Year] * 100 + [Month]),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Current Month", each let cm = Date.StartOfMonth(DateTime.LocalNow())
in Date.Year(cm) * 100 + Date.Month(cm)),
#"Added Conditional Column2" = Table.AddColumn(#"Added Custom1", "Fiscal Year", each if [Month] >= 7 then [Year] else [Year]-1),
#"Inserted End of Month" = Table.AddColumn(#"Added Conditional Column2", "End of Month", each Date.EndOfMonth([Start of Month]), type date)
in
#"Inserted End of Month"

Download the file here
Keep visiting Analytics Tuts for more tutorials.
Thanks for reading! Comment your suggestions and queries
