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

In DAX, can I create a function that calculates the working days between two date/time fields?

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

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

您需要一个日历 table 来帮忙。说,

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)
    )

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

        IF(Dates[IsWorkDay], 0, 1)

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