【问题标题】:Dax calender with holidays for different divisions in different countries, power biDax 日历与不同国家不同部门的假期,电源双
【发布时间】:2021-11-22 12:48:23
【问题描述】:

我有一个很大的 Dax 日历表,有大约 40 个不同的列。我引入了一个额外的假期表,以便在日历表中创建两列:“Holiday”和“IsWorkday”。这工作正常,但现在我在不同的国家有部门,因此这两个列必须是基于部门的动态。

相关的表格是销售、部门、日历和假期。日历和部门都与销售有关。假期表仅与日历表中的 LOOKUPVALUE 一起使用。

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

Dax 日历中的两列如下所示,(其中 [Date] not from Holiday 是日历 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,

即使我选择不同的部门,“假期”也会返回空白。 当我注释掉假期部分时,'IsWorkday' 能够在周一至周五返回 1,但在我包含它时返回 0。两列的Holiday-部分基本相同。

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

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

谢谢!

【问题讨论】:

    标签: date calendar dax powerbi-desktop


    【解决方案1】:

    我将首先在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) 
    

    然后你可以创建另一个度量 isWorkdayOrHoliday 来组合 Calendar[isWorkday] 和新创建的度量 HolidayName

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 2011-02-20
      相关资源
      最近更新 更多