Нужна другая формула с начала года в DAX для двухстандартного питания с начала года не работает

#powerbi #dax

#powerbi #dax

Вопрос:

Мне нужен показатель dax, который сначала вычисляет ежемесячную чистую разницу в% выбранных клиентов, а затем суммирует итоговую сумму с начала года на ежемесячной основе.

Стандартная функция YTD в DAX не работает для этого вычисления.

Я не понимаю, почему это не работает, но я думаю, это потому, что мне нужен YTD для ЕЖЕМЕСЯЧНОГО расчета чистого изменения — как это отображается в моем визуальном представлении (а не совокупный YTD от ежедневных изменений).

Вот моя текущая формула с начала года, которая не работает:

 YTD of % Change =
TOTALYTD ( [% Change], 'DateTable'[Date].[Date] )
  

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

Вот Dax для моего показателя изменения% (этот показатель подходит. Он выдает ожидаемые результаты за месяц (разница между месяцами) на всякий случай, если это поможет…

 % Change =
VAR __PREV_MONTH =
    CALCULATE ( [% Of Base Group], DATEADD ( 'DateTable'[Date].[Date], -1, MONTH ) )
RETURN
    [% Of Base Group] - __PREV_MONTH
  

Мои ежемесячные данные представляют собой данные в стиле моментального СНИМКА с полным набором данных за каждый месяц, поэтому я обычно не вычисляю итоговые данные или подсчеты по месяцам (поскольку в каждом месяце уже есть полное количество клиентов и итоговые данные) — я храню их только в одной таблице, чтобы я мог вычислить разницу между месяцами.

Результаты, которые я получаю в настоящее время (т. Е. Неправильные), показаны ниже вместе с ожидаемым результатом

Ожидаемый результат базового поля, который я получаю

Год Месяц% Изменение с начала года % Изменение с начала года

Январь 2018 -0,10% -0,10% -0,10%

Февраль 2018 -0,44% -0,55% -0,28%

Март 2018 года -0,09% -0,64% -0,21%

Апрель 2018 0.06% -0.58% -0.14%

Май 2018 года 0,87% 0,29% 0,06%

Июнь 2018 -0,26% 0,03% 0,01%

Июль 2018 0.10% 0.13% 0.02%

2018 Авг 0.08% 0.21% 0.03%

Сентябрь 2018 0.00% 0.21% 0.02%

Октябрь 2018 -0,08% 0,13% 0,01%

Ноябрь 2018 -0,18% -0,06% -0,01%

Декабрь 2018 -0,77% -0,83% -0,07%

Январь 2019 -0,26% -1,09% -0,26%

Февраль 2019 -0,44% -1,53% -0,35%

 

Ответ №1:

Я нашел решение (хотя оно и не очень приятное), которое дает мне результаты, которые я ищу.

Чтобы сделать это, я в основном вычел значение января текущего года [% от базовой группы] из текущего значения [% от базовой группы], а затем добавил чистое изменение, произошедшее в январе. В моей таблице дат есть столбец, который показывает ГГГГ в качестве значения, поэтому я смог отфильтровать до декабря предыдущего года (чтобы вычислить это первое чистое изменение), используя значение (ГГГГ)-89.

 YTD Total of % Change in Select Group  = 
    VAR FirstMonthofCurrentYear = VALUE(Min(DateTable[Date].[Year])amp;"01")
    VAR LastMonthofPrevYear = FirstMonthofCurrentYear - 89
    VAR JanPercentofBaseGroup =
        CALCULATE(
          [% Of Base Group],DateTable[YearMonthOrder]=        FirstMonthofCurrentYear,ALLEXCEPT(DateTable,DateTable[Date])
        )

    VAR JanChangeinPercent =
      JanPercentofBaseGroup - CALCULATE(
    [% Of Base Group],DateTable[YearMonthOrder] =     LastMonthofPrevYear,ALLEXCEPT(DateTable,DateTable[Date])
    )
     Return   
    If (
    [% Of Base Group]=blank(),
    BLANK(),
    [% Of Base Group]- JanPercentofBaseGroup   JanChangeinPercent
    )  

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

Ответ №2:

Предполагая, что ваша таблица дат представляет собой непрерывный набор дат, тогда что-то вроде следующего должно работать просто отлично:

 YTD of % Change =
CALCULATE ( [% Change], DATESYTD ( 'DateTable'[Date].[Date] ) )
  

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

1. Спасибо за ваше предложение использовать с начала года % Change = CALCULATE ([% Изменение], DATESYTD ( ‘DateTable'[Дата]. [Дата] ) ) Я попробовал это, но это просто дает тот же ответ, который я получал с моей исходной формулой (С начала года % Change = TOTALYTD ( [% Change], ‘DateTable'[Дата]. [Дата]) Если, как показал мой исходный столбец (% изменения). 10% в январе и .44% в феврале Я бы ожидал, что мой показатель с начала года в феврале составит .54% (.10% .44%), но вместо этого формула с начала года вычисляет .28%

2. Тогда проблема в вашей дельта-мере. Пожалуйста, опубликуйте все части этого показателя, и я посмотрю, смогу ли я вам помочь.

3. Спасибо Stelio, дельта-мера такова: VAR __PREV_MONTH = CALCULATE( [% от базовой группы], DATEADD(‘DateTable'[Дата]. [Дата], -1, МЕСЯЦ) ) ВОЗВРАЩАЕТ [% от базовой группы] — __ПРЕДЫДУЩИЙ_МЕСЯЦ и вычисление [% от базовой группы] равно: =Divide([Выберите группу],[Базовая группа], пробел()) и вычисление [Выберите группу] — это количество с фильтром в таблице клиентов, но вычисление [Базовой группы] — это количество из той же таблицы плюс число (которое представляет группу из клиенты, о которых у нас нет данных).