Power BI — добавить N рабочих дней к дате

#powerbi #dax #powerquery

#пауэрби #дакс #powerquery

Вопрос:

У меня есть таблица календаря, в которой есть флаг хранения столбцов, указывающий, является ли календарная дата рабочим днем (WorkDay). WorkDay_FL = 0 означает, что дата либо выходная, либо Праздничная. Я хочу создать вычисляемый столбец, чтобы добавить 5 рабочих дней к заданной дате.

Итак, если дата = 12/30/2020, то есть 30 декабря 2020 года, то добавление 5 рабочих дней должно дать мне 1/7/2020 (7 января 2021 года).

 31-Dec-2020 = WeekDay
1-Jan-2021 = Holiday
2-Jan-2021 = Weekend
3-Jan-2021 = Weekend
4-Jan-2021 = WeekDay
5-Jan-2021 = WeekDay
6-Jan-2021 = WeekDay
7-Jan-2021 = WeekDay
 

Будет работать либо формула DAX, либо функция Power Query.

Спасибо

Комментарии:

1. Это было бы понятнее, если бы вы опубликовали именно то, как выглядят ваши данные. Содержит ли поле ваш столбец «Флаг»? Все ли элементы в поле находятся в одном столбце?

Ответ №1:

Самый простой способ — создать вычисляемую таблицу в вашей календарной таблице с прогрессивным числом рабочих дней. Например, предполагая, что ваш WorkDay_FL равен 1 для рабочих дней

 WorkDayProg = 
VAR CurDate = 'Date'[Date]
RETURN CALCULATE( SUM('Date'[WorkDay_FL]), 'Date'[Date] <= CurDate, REMOVEFILTERS('Date') )
 

и использовать вычисляемый столбец WorkDayProg для вычисления будущих (или прошлых) дат только в рабочие дни

 FiveWorkingDaysInTheFuture =
VAR CurrentWorkDay =
    MAX( 'Date'[WorkDayProg] )
RETURN
    CALCULATE(
        MIN( 'Date'[Date] ),
        'Date'[WorkDayProg] = CurrentWorkDay   5,
        REMOVEFILTERS( 'Date' )
    )
 

мы используем MIN, поскольку для нерабочих дней WorkDayProg равен последнему рабочему дню.