Powerpivot: год до даты по сравнению с годом до даты в предыдущем году

Я использую excel 2013 powerpivot, который я связал с запросом sql. В этом запросе у меня есть все данные о продажах за предыдущие годы, и он обновляется с учетом текущих продаж. Я хочу сделать сводные данные о продажах с начала года до настоящего времени в этом году по сравнению с аналогичным периодом прошлого года. Так, например, с 1 января 2015 года по 10 июля 2015 года по сравнению с 1 января 2014 года по 10 июля 2014 года. Я связал свою таблицу данных о продажах с календарной таблицей. Но что бы я ни пробовал, parallelperiod, sameperiodlastyear, totalytd, он всегда показывает мне правильные данные за этот год, но за полный год продаж в прошлом году. Кто-нибудь может порекомендовать мне, что попробовать?

Благодарность,

откровенный


person Frank Peeters    schedule 10.07.2015    source источник


Ответы (3)


TOTALYTD (и другие функции анализа времени) будет искать самую высокую дату в любом контексте, который вы ему укажете, поэтому, когда вы попытаетесь указать ему вернуться на 12 месяцев назад, он подумает: «Хорошо, я в 2014 году». получить ВСЕ данные за 2014 год и рассчитать TOTALYTD. Таким образом, вы должны игнорировать встроенные функции и создавать свои собственные:

  =CALCULATE(sum(Table1[sales]),DATESBETWEEN(DateDim[Date], FIRSTDATE(DATEADD(DateDim[Date],-12,MONTH)), LASTDATE(DATEADD(Table1[Date],-12,MONTH))))

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

Изменить: протестировав образец данных, DAX снова пытается быть слишком умным, и поскольку я сказал ему вернуться на 12 МЕСЯЦЕВ, предполагается, что мне нужны ВСЕ данные из контекста месяца, который включает все с июля прошлого года. Это исправляет возврат на 365 дней (если это не проблема для високосных лет).

  =CALCULATE(sum(Table1[sales]),DATESBETWEEN(DateDim[Date], FIRSTDATE(DATEADD(DateDim[Date],-12,MONTH)), LASTDATE(DATEADD(Table1[Date],-365,DAY))))
person Gordon K    schedule 10.07.2015

Я пробовал ваш способ, но он еще не дал мне правильного ответа. Позвольте мне показать вам, что у меня есть прямо сейчас.

Для продажи в текущем году у меня есть следующая формула Dax

=TOTALYTD(sum(Omzetgegevens[NettoOmzet]); Kalender[Calender date])

На распродажу предыдущего года у меня есть:

=CALCULATE((SUM(Omzetgegevens[NettoOmzet])); SAMEPERIODLASTYEAR(DATESYTD(Kalender[Calender date])))

Чтобы проверить ваше решение, я назвал "test ytd":

=CALCULATE(SUM(Omzetgegevens[NettoOmzet]); DATESBETWEEN(Kalender[Calender date]; FIRSTDATE(DATEADD(Kalender[Calender date];-12; MONTH)); LASTDATE(DATEADD(Kalender[Calender date]; -365; DAY))))

Если я сейчас запустил сводную таблицу, то получу:

    2015        
    current year ytd    last year ytd   test ytd
januari          28.912          34.487         34.487
februari     50.301          66.003         31.516
maart            73.362          92.647         26.644
april            99.561          117.853    25.205
mei         128.021          149.108    31.255
juni            149.706          174.076    24.968
juli            158.297          205.438    31.362
augustus    158.297          231.693    26.255
september   158.297          254.534    22.841
oktober         158.297          282.484    27.951
november    158.297          303.808    21.324
december    158.297          313.208      9.400
Total   158.297          313.208    313.208

Я бы хотел увидеть следующее. Поскольку этот отчет был подготовлен 14 июля 2015 года. Я хочу увидеть все продажи за 2015 год до этой даты и все продажи за 2014 год до 14 июля 2014 года.

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

2015        
    current year ytd    last year ytd   
januari          28.912          34.487         
februari     50.301          66.003         
maart            73.362          92.647         
april            99.561          117.853    
mei         128.021          149.108    
juni            149.706          174.076    
juli            158.297          175.312(so not full month of july in 2014)
Total           158.297          175.312    
person Frank Peeters    schedule 14.07.2015
comment
В дополнение к комментарию Джеймса, пожалуйста, также убедитесь, что применили правильное форматирование - person LJᛃ; 27.07.2015

Недавно была похожая проблема. Текущий контекст сильно сбивает с толку и не вернул результат, который, по нашему мнению, должен быть возвращен. Поиграйте с DATEADD, чтобы перемещаться вперед и назад в сочетании с любой функцией даты / времени. Вы получите результат, и контекст также будет понятен.

person Prakash Gautam    schedule 10.09.2015