DAX日历动态假日功能



我正在为整个公司构建我们的个人日历。设置了典型的基本列(周、月、年(。我正在使用这样的方法:

Calendar = 
VAR BaseCalendar =
CALENDAR ( DATE ( 2016; 1; 1 ); DATE ( 2025; 12; 31 ) )
RETURN
GENERATE (
BaseCalendar;
VAR BaseDate = [Date]
VAR Year =
YEAR ( BaseDate )
VAR MonthNumber =
MONTH ( BaseDate )
VAR WeekNumber =
WEEKNUM ( BaseDate )
VAR FWeek =
WEEKNUM ( BaseDate; 21 )
RETURN
ROW (
"Day"; BaseDate;
"Year"; Year;
"Month Number"; MonthNumber;
"Month"; FORMAT ( BaseDate; "mmmm" );
"Year Month"; FORMAT ( BaseDate; "yyyy-mm" );
"Day of Week"; FORMAT ( BaseDate; "dddd" );
"Day of Week Short"; FORMAT ( BaseDate; "ddd" )
)
)

现在我正在寻找一个动态函数来添加一个关于我们假期的列。我们的大多数假期都是基于一个固定的日期,比如25.12或26.12。东部的日子充满活力。

有人知道吗?我不想用一张额外的桌子来记录所有的假期日期。

我同意Jonee的观点,不可能有一种内置的方法来管理假期,因为假期会根据年份、国家甚至州而变化。

最佳做法是在附加表格中记录公司的所有假期。表的粒度是Date,可能只包含假日的日期。

然后,将"日历"与"假日"连接起来,并在"日历"中创建一个新属性Holiday_FL。

最后,对于日历中的每个日期,您都知道它是否是假日。

复活节被定义为3月21日或之后第一次满月后的第一个星期日。理论上,你可以动态定义computus,但我真的不建议尝试在DAX中编写月球周期逻辑,而不是使用固定的假日日期表。

也就是说,完全可以在日历表定义中将假日日期表定义为VAR,这样模型中就不会有其他物理表。

感谢您的帮助和建议。这种方法有效:

Var for eastern
VAR Eastern =
FLOOR ( DATE ( Year; 3; MOD ( 18,37 * MOD ( Year; 19 ) - 6; 29 ) ); 7 ) + 29
Var for Holidays
VAR IsHoliday =
SWITCH (
TRUE ();
FORMAT ( BaseDate; "MMDD" ) = "0101"; TRUE();
BaseDate = Eastern - 2; TRUE();
BaseDate = Eastern + 1; TRUE();
FORMAT ( BaseDate; "MMDD" ) = "0501"; TRUE();
BaseDate = Eastern + 39; TRUE();
BaseDate = Eastern + 50; TRUE();
FORMAT ( BaseDate; "MMDD" ) = "1003"; TRUE();
FORMAT ( BaseDate; "MMDD" ) = "1031"; TRUE();
FORMAT ( BaseDate; "MMDD" ) = "1224"; TRUE();
FORMAT ( BaseDate; "MMDD" ) = "1225"; TRUE()
)

最新更新