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



如果不涉及时间,已经有很多选项可以计算两个日期之间的工作日数,但是如果您将其保留为日期/时间,有没有办法在 DAX 中获取两个时间点之间的工作日数(带有十进制余数((例如 Power Query/Power BI(?

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

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

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。

最新更新