Dax 日历,不同国家不同部门的假期,power bi

Dax calender with holidays for different divisions in different countries, power bi

我有一个用 Dax 制作的相当大的压延机 table,大约有 40 个不同的列。我引入了一个额外的假期 table 以在日历 table 中制作两列:“假期”和“IsWorkday”。这很好用,但现在我在不同的国家有部门,因此这两列必须根据部门动态变化。

相关的 table 是销售额、部门、日历和假日。日历和分区都与销售有关。假期 table 仅在日历 table.

中与 LOOKUPVALUE 一起使用

简化预览: [简化预览][1] [1]: https://i.stack.imgur.com/FQv5G.png

Dax 日历中的两列看起来像这样,(其中 [Date] 不是来自 Holiday 是来自 Calender 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' return 即使我 select 不同的部门也是空白。 当我注释掉假期部分时,'IsWorkday' 能够在星期一至星期五为 return 1,但是当我包含它时 returns 0。两列的Holiday-part基本相同

我不太擅长 Dax,我承认我可能不理解我在这里写的 dax 的真正逻辑,因为我的逻辑显然是错误的。

非常感谢任何帮助或提示,让我更接近解决方案。希望我提供的信息足够。如果没有 - 请告诉我,我会添加。

谢谢!

我首先要在 Calendar[Date]Holiday[Date] 之间建立关系。接下来,我将针对给定的 [Date][DivisionID].

创建一个度量 HolidayName 到 return 假期
HolidayName = 
    
VAR DivisionCountry = LOOKUPVALUE(Division[Country], Division[DivisionID], SELECTEDVALUE(Sales[DivisionID]))

RETURN

LOOKUPVALUE(Holiday[Holiday], Holiday[Date], SELECTEDVALUE(Calendar[Date]), Holiday[Country], DivisionCountry) 

然后您可以进行另一个测量 isWorkdayOrHoliday 以合并 Calendar[isWorkday] 和新测量 HolidayName

isWorkdayOrHoliday = INT(Calendar[isWorkday] && ISBLANK([HolidayName]))

如果给定日期是周末或假期,这将 return isWorkdayOrHoliday = 0