#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([Выберите группу],[Базовая группа], пробел()) и вычисление [Выберите группу] — это количество с фильтром в таблице клиентов, но вычисление [Базовой группы] — это количество из той же таблицы плюс число (которое представляет группу из клиенты, о которых у нас нет данных).