在DAX中,我可以创建一个函数来计算两个日期/时间字段之间的工作日吗?

时间:2018-09-13 14:50:58

标签: excel powerbi dax powerquery powerbi-desktop

如果不涉及时间,已经有很多选择来计算两个日期之间的工作日数,但是如果将其保留为日期/时间,则有任何方法可以获取工作日数(带小数的余数) )在DAX中的两个时间点之间(例如Power Query / Power BI)?

1 个答案:

答案 0 :(得分:1)

假设您的开始时间和结束时间在工作日内发生,那么您应该能够计算两个日期之间的时差,并减去该期间的非工作日数。

您需要一个日历表来帮助您。说,

Dates = CALENDARAUTO()

那么您的工作日度量可能如下所示:

WorkingDays =
    StartFinish[Finish Date] - StartFinish[Start Date] -
    SUMX(
        FILTER(Dates,
            Dates[Date] > StartFinish[Start Date] && 
            Dates[Date] < StartFinish[Finish Date]),
        IF(WEEKDAY(Dates[Date]) = 1 || WEEKDAY(Dates[Date]) = 7, 1, 0)
    )

如果您的日历表中有一个IsWorkDay列(其中可能包括假期和周末),则可以只在最后一行引用它:

        IF(Dates[IsWorkDay], 0, 1)

请注意,此方法假定工作日为24小时,而不是标准的8小时。如果您不希望小数部分表示24小时的一部分,则必须进行一些调整。要切换到8小时工作日的一部分,只需将小数部分乘以24/3 = 3。