The CALENDARAUTO function in Power BI automatically creates a date table based on the earliest and latest date values found in your data model.
You don’t need to manually enter start and end dates — CALENDARAUTO() detects the date range from your data and generates a complete calendar table for you.
Let’s start with the practical. Below is the sample dataset we will use. We have two tables: Transaction and Sales, and both tables contain a few date columns.
Dataset

To use it:
1- Go to the Modeling tab and select New Table.

2- Write CALENDARAUTO() and click on Commit.
CalerndarAuto = CALENDARAUTO()
Now, let’s check the Calendar table data. You can see that it returns dates from January 1, 2022, to December 31, 2027.

How does CALENDARAUTO work?
In our dataset, we have multiple tables with multiple date columns. The CALENDARAUTO function combines all date column values in one place and identifies the minimum and maximum dates from them.

For example:
- Light blue dates are from the Transaction Table – Transaction Date column.
- Light orange dates are from the Sales Table – Date column.
- Yellow dates are from the Transaction Table – Expiry Date column.
The minimum date is July 11, 2022, and the maximum date is December 31, 2027.
When CALENDARAUTO generates dates, it picks the minimum and maximum years from the dataset, and it creates a continuous range of dates from January 1st of the earliest year to December 31st of the latest year found.
CALENDARAUTO() DAX – Fiscal Year
The CALENDARAUTO function also supports a fiscal year argument, which is optional.
For example, if the fiscal year ends in June, you need to pass 6 as an argument in CALENDARAUTO().
Now, check the Calendar table. It will generate dates from July 1, 2022, to June 30, 2028.

When to Use CALENDARAUTO?
✅ If your dataset contains multiple date columns
✅ When you want a fully dynamic date table
✅ If your fiscal year follows the standard January–December
Limitations
❌ It includes all date columns, so unexpected dates might appear
❌ You cannot control the start and end date explicitly
❌ If no date column exists in the model, it returns an error
Thanks for reading this post! I hope you found it helpful. Feel free to share it with others or your teammates so they can benefit from it too. 😊
![]()
