Вопрос:
У меня есть отчет в SSRS с расчетами, которые мне нужно перевести в DAX. Цель состоит в том, чтобы вычислить ProjectedYTD
Но для этого сначала нужно рассчитать премию и бюджеты через текущий день. Так что я делаю это в SSRS:
1) Я рассчитываю бюджет в день за текущий месяц, разделив общий бюджет на текущий на количество дней в этом месяце. Таким образом, бюджет на октябрь в день
2,579,757/31 = 83,217.97.
2) Затем я умножаю бюджет в день на количество дней между началом текущего месяца и до сегодняшнего дня. Так что если сегодня 27 октября, тогда
83,217.97 * 27 = 2,246,885
3) И последним шагом я добавлю весь бюджет до текущего месяца (октябрь) в бюджет на октябрь до сегодняшнего дня:
23,385,769 + 2,246,885 = 25,632,654
Затем я вычисляю разницу на каждый месяц и сумму до сегодняшнего дня.
Variance = (Total Premium — Budget till current day)/ Budget till current day * 100
Который:
(28,477,194 — 25,632,654) / 25,632,654 * 100 = 11.1%
И, наконец, рассчитать Projected YTD:
(Total Budget for whole year — Budget till current day) * (1 + Variance) + TotalPremium
Который:
(30,148,763 — 25,632,654) * (1 + 0.11) + 28,477,174 = 33,494,470
Поэтому я предполагаю, что мне нужно создать все эти переменные в Power BI, а затем выполнить расчет.
В Power BI я вижу это примерно так:
Файл.ipbx можно получить здесь:
https://www.dropbox.com/s/io1yumnqlrzj067/PremiumByDivisions.pbix?dl=0
Пожалуйста помоги.
ОБНОВЛЕНИЕ 1
Джо, большое спасибо за ваше время. Я думаю, что он неправильно вычисляет BudgetTillCurrentDay. На скриншоте его 25,965,526, что является суммой бюджета до конца октября.
Но мне нужно до сегодняшнего дня. Так что если сегодня 30-й, то 2579757/31 * 30 = 2,496,539 –this – это бюджет с начала октября по сегодняшний день (30 октября)
Затем сумма (всего бюджета на год до конца сентября) + 2,496,539 = 25,882,308.
Извините за недопонимание.
Лучший ответ:
Некоторые комментарии перед тем, как войти в мое решение:
- Номера в файле, который вы поделили, точно не совпадают с цифрами в вашем вопросе, поэтому, надеюсь, это решение соответствует ожидаемым числам.
- В конце этого решения есть скриншот, показывающий страницу отчета, над которой я работал, чтобы вы могли увидеть структуру, которую я использовал в качестве примера.
- Чтобы прокомментировать последнее замечание в вашем вопросе, вы технически не должны выполнять все эти меры; вы могли бы объединить формулы в одну (аналогично тому, что я сделал по первой бюджетной формуле ниже), но я думаю, что разбивка их на отдельные меры, как я сделал, будет лучше для отчетности.
Прежде чем что-либо с бюджетами, я создал пару мер в таблице Premium, чтобы упростить другие формулы позже.
PremiumsMTD = TOTALMTD(SUM(Premiums[Premium]), Dates[Date]) PremiumsYTD = TOTALYTD(SUM(Premiums[Premium]), Dates[Date])
Во-первых, чтобы создать бюджетную меру на сегодняшний день, я использовал следующую формулу. Постепенно эта формула 1) определяет общее количество дней в месяце, 2) делит общий бюджет за месяц на количество дней, 3) определяет, сколько дней прошло в месяце (все если в прошлом месяце 0, если в будущем месяце, текущая дата текущего месяца) и, наконец, 4) умножает бюджет в день на сколько дней прошло.
BudgetMTD = VAR DaysOfMonth = MAXX(Dates, DAY(EOMONTH(Dates[Date], 0))) VAR BudgetPerDayForMonth = SUM(BudgetData[Amount]) / DaysOfMonth VAR DaysInMonthToToday = MAXX(Dates, IF(Dates[Date] < TODAY(), DAY(Dates[Date]), IF(Dates[Date] > TODAY(), 0, DAY(TODAY()) ))) RETURN BudgetPerDayForMonth * DaysInMonthToToday
Затем, для YTD, просто используйте встроенную функцию TOTALYTD Power BI (как это было сделано для мер Premium) с недавно созданной мерой BudgetMTD в качестве выражения и отфильтруйте ее в не будущие дни.
BudgetYTD = TOTALYTD(BudgetData[BudgetMTD], Dates[Date], Dates[Date] <= TODAY())
И тогда вы можете получить отклонения, выполнив простую математику с использованием мер MTD и YTD, созданных ранее.
BudgetVarianceMTD = (Premiums[PremiumsMTD] — BudgetData[BudgetMTD]) / BudgetData[BudgetMTD] BudgetVarianceYTD = (Premiums[PremiumsYTD] — BudgetData[BudgetYTD]) / BudgetData[BudgetYTD]
Вот страница отчета, с которой я работал. Обратите внимание, что я использовал матрицу (хотя это могло быть несколько различных визуальных эффектов), с MonthName как ось/категории. Поскольку визуальное изображение находится на уровне месяца, значения YTD не имеют хорошего места для существования в одном и том же виде (промежуточные итоги Power BI автоматически не совпадают с пользовательскими мерами), поэтому есть карточки с значения YTD.