2016-12-07 5 views
0

Я использую DAX в Power BI для расчета общего количества продаж в прошлом месяце, чтобы создать визуальный эффект KPI. т. е. если сегодня 7 декабря, я хочу получить общий объем продаж с 1 ноября по 7 ноября и сравнить с текущим месяцем до настоящего времени.DAX Предыдущий месяц на сегодняшний день общий итог всего 0 месяца назад

CurrentMTD = TOTALMTD(SUM(SALES_VOUCHERS[SaleValue]),DatesTable[Date]) 

Это прекрасно работает. Тем не менее, предыдущий месяц с начала года дает мне всего за целый месяц ноября. Я попытался следующие до сих пор

PMYTD = totalmtd(sum(SALES_VOUCHERS[SaleValue]),dateadd(DATESMTD(DatesTable[Date]),-1,month)) 

и

PMYTD = CALCULATE(sum(SALES_VOUCHERS[SaleValue]), 
    DATESBETWEEN(DatesTable[Date],      
     FIRSTDATE(PREVIOUSMONTH(DatesTable[Date])), 
     LASTDATE(DATEADD(DatesTable[Date],-1,MONTH)))) 

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

Я связал таблицу фактов (Sales_VOUCHERS) с DatesTable, и на данный момент на странице отчета нет других визуальных эффектов. Просьба оказать помощь в том, что у меня отсутствует, и как я могу получить предыдущий месяц год к настоящему времени

ответ

0

Если вы агрегируете на уровне месяца (то есть вы смотрите на декабрь 2016 года по сравнению с ноябрем 2016 года), то мера, которую вы указали выше, покажет вам весь месяц декабря по сравнению со всем месяцем ноября (а с декабря - неполный месяц, а ноябрь - нет, это вызывает несоответствие, которое вы видите).

Если вы отфильтруете текущую дату (например, 7 декабря), то и ваши MTD, и MTD-меры за предыдущий месяц покажут вам только 7-е из их соответствующих месяцев.

Предполагая, что вы не хотите фильтровать до дневного уровня (небезосновательно), вы можете улучшить формулу, чтобы отфильтровать будущие даты. Например:

PMYTD = totalmtd(
    sum(SALES_VOUCHERS[SaleValue]), 
    dateadd(
     FILTER(
      DATESMTD(DatesTable[Date]), 
      DatesTable[Date]<TODAY() 
     ), 
     -1, 
     month 
    ) 
) 

Это говорит о том, если дата после сегодняшнего дня, не передать его в расчет TOTALMTD (так он будет вычислять только первые 7 дней месяца, например, если сегодня декабря 8-й - даже если вы просматриваете полные месяцы в своем отчете).

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

PMYTD = CALCULATE(
    [CurrentMTD], 
    DATEADD(
     FILTER(
      DatesTable[Date], 
      DatesTable[Date]<TODAY() 
     ), 
     -1, 
     MONTH 
    ) 
) 

Полезные ресурсы:

  1. https://www.powerpivotpro.com/2016/01/year-to-date-in-previousprior-year/ (статья, которая охватывает эту проблему и множество решений)
  2. https://community.powerbi.com/t5/Desktop/Compare-MTD-with-previous-period/td-p/24656 (форум для дискуссий о той же проблеме)
  3. http://community.powerbi.com/t5/Desktop/Time-Intelligence-TOTALMTD-vs-DATESMTD-vs-DATEADD/td-p/10088 (обсуждение на форуме о DATESMTD против TOTALMTD)