Semanticus
Documentation

Calendars

Calendar-based time intelligence for modern models: map your date columns to time units once, then write calendar-aware DAX like TOTALYTD([Total Sales], 'Fiscal'). Templates cover Gregorian, fiscal, ISO week, 4-4-5 retail and 13-period calendars, and a single table can carry several at once.

Compatibility level 1701

Modern calendars require compatibility level 1701. The upgrade button previews that single model change, asks for confirmation and refreshes the calendar editor when it succeeds.

The Calendars editor showing Gregorian and fiscal calendars mapped to model columns.

In the Studio

The Calendars area (under Advanced Modelling) lists each table's calendars and gives you a mapping editor. Pick a column and assign it to a time unit (Year, Quarter, Month, Week, Date, and the recurring variants such as MonthOfYear and DayOfWeek), and drop untagged-but-time-related columns (like IsWorkingDay or HolidayName) into a time-related bucket. Template buttons scaffold a whole calendar in one step.

Because the calendar metadata is plain model metadata, Semanticus authors it directly whatever your editing setup, and a single date table can hold a Gregorian, a fiscal and an ISO-week calendar together over the same columns.

Over MCP

The same calendars are dual-drive:

list_calendars                                    # -> calendars + whether CL supports them
set_compatibility_level  1701                     # if needed (a one-way upgrade)
define_calendar_from_template  table:Date  template=fiscal  fiscalStartMonth=7
# then author calendar-aware DAX:   TOTALYTD([Total Sales], 'Fiscal')

The classic path is still there

generate_date_table and mark_date_table remain for classic, Gregorian-only date tables (existing models are real), but they are the legacy approach: their own tool descriptions point to define_calendar_from_template for calendar-based time intelligence. If you are building a new model on a recent compatibility level, prefer calendars, calendar-aware YTD can even outperform the classic date-column form in grouped-by-week scenarios.

Calendars need compatibility level 1701 or higher

list_calendars tells you whether the current model qualifies; if not, set_compatibility_level raises it. Upgrades are one-way, and redeploying an upgraded model to an older runtime may fail, so raise the level deliberately.