Могу ли я создать в DAX функцию, которая вычисляет рабочие дни между двумя полями даты / времени? - PullRequest
0 голосов
/ 13 сентября 2018

Уже есть множество опций для расчета количества рабочих дней между двумя датами, если время не используется, но если вы оставите это как дату / время, есть ли способ получить количество рабочих дней (с десятичными остатками) ) между двумя точками времени в DAX (например, Power Query / Power BI)?

1 Ответ

0 голосов
/ 13 сентября 2018

Предполагая, что ваше время начала и окончания наступает в рабочие дни, вы должны быть в состоянии взять разницу во времени между двумя датами и вычесть количество нерабочих дней в течение этого периода.

Вам понадобится таблица календаря, чтобы помочь. Скажем,

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.

...