2012-05-30 4 views
1

Как вы надежно добавляете 10 месяцев к дате в формуле DAX для расчетной колонки PowerPivot?DATEADD и отсутствующие даты

Моя первая попытка работает только для дат, которые уже существуют в столбце EventDate.

=DATEADD(Dates[EventDate], 10, month) 

Как Крис Уэбб написал в своем блоге DATEADD is unreliable, как он возвращает пробелы, когда результирующая дата не найден в колонке EVENTDATE.

Моя вторая попытка всегда возвращает данные, но день месяца неверен.

=[EventDate] + 10 * 31 

Примечания: Все даты в EventDate находятся в первый день месяца. Я использую PowerPivot для Excel 2010. Формула предназначена для иерархии финансового года в измерении даты.

Есть ли лучший способ добавить месяцы в DAX?

ответ

2

Это старая, но все еще может быть полезным ......

=IF(
    DAY([Eventdate])>DAY(EOMONTH([Eventdate],10)), 
      DATE(year(eomonth([Eventdate],10)),month(eomonth([Eventdate],10)),day(EOMONTH([Eventdate],10))), 
      DATE(year(eomonth([Eventdate],10)),month(eomonth([Eventdate],10)),day([Eventdate])) 
    ) 

Это предполагает, что там, где «партнер» 10 месяцев на есть меньше дней, то по умолчанию будет последний день этот месяц.

НТН Jacob

1

Другой способ добавления времени к дате с помощью DAX использует EDATE(), эта функция добавления месяцев, и он будет возвращать правильный день месяца. Например:

Foo = EDATE(Dates[EventDate], 10) 
Смежные вопросы