我有一个用Dax制作的相当大的日历表,大约有40个不同的列。我引入了一个额外的假日表,在日历表中创建两列:"Holiday"one_answers";IsWorkday"。这可以正常工作,但现在我在不同的国家有部门,因此这两个列必须根据部门动态。
相关的表是销售、部门、日历和假日。日历和划分都与销售有关。假日表只能与日历表中的LOOKUPVALUE一起使用。
简化预览:[简体预览][1][1]:https://i.stack.imgur.com/FQv5G.png
Dax日历中的两列看起来像这样,(其中[Date]不是来自Holiday是来自calendar Dax的日期)
"Holiday", VAR DivisionCountry = LOOKUPVALUE(Division[Country], Division[DivisionID], SELECTEDVALUE(SALES[DivisionID]))
VAR Country = LOOKUPVALUE(Holiday[Country], Holiday[Country], DivisionCountry)
RETURN
LOOKUPVALUE(Holiday[Holiday],Holiday[Date],[Date], Holiday[Country], Country),
"IsWorkday", VAR WeekdayNum = WEEKDAY( [Date], 2)
VAR DivisionCountry = LOOKUPVALUE(Division[Country], Division[DivisionID], SELECTEDVALUE(SALES[DivisionID]))
VAR Country = LOOKUPVALUE(Holiday[Country], Holiday[Country], DivisionCountry)
VAR Integer = INT( NOT WeekdayNum IN {6, 7} && ISBLANK(LOOKUPVALUE(Holiday[Holiday],Holiday[Dato],[Date],Holiday[Country], Country) ) )
VAR Result = Integer
RETURN Result,
'Holiday'返回空白,即使我选择了不同的部门。当我注释掉假日部分时,'IsWorkday'能够返回星期一至星期五的1,但是当我包含假日部分时返回0。两列的holiday -部分基本相同。
我不太擅长Dax,我承认我可能不理解我在这里写的Dax的真正逻辑,因为我的逻辑显然是失败的。
我真的很感谢任何帮助或提示,让我更接近一个解决方案。希望我提供的信息是足够的。如果没有,请告诉我,我会补充的。谢谢!
我将首先创建Calendar[Date]
和Holiday[Date]
之间的关系。接下来,我将创建一个度量HolidayName
来返回给定[Date]
和[DivisionID]
的假期。
HolidayName =
VAR DivisionCountry = LOOKUPVALUE(Division[Country], Division[DivisionID], SELECTEDVALUE(Sales[DivisionID]))
RETURN
LOOKUPVALUE(Holiday[Holiday], Holiday[Date], SELECTEDVALUE(Calendar[Date]), Holiday[Country], DivisionCountry)
那么你可以把Calendar[isWorkday]
和新做的HolidayName
组合成另一个测量isWorkdayOrHoliday
。
isWorkdayOrHoliday = INT(Calendar[isWorkday] && ISBLANK([HolidayName]))
如果给定的日期是周末或假日,则返回isWorkdayOrHoliday = 0
。