#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 равен последнему рабочему дню.