#powerbi #dax #calculation #ssas-tabular
Вопрос:
У меня есть два стола:
Transactions:
CalendarID
LoanID
Amount
Calendar:
CalendarID
Date
Month
Quarter
Year
И мне нужно рассчитать «непогашенную» сумму, которая является сторнированным текущим итогом таблицы транзакций, в качестве показателя для отчета Power BI.
В зависимости от того, какой фильтр, мне нужно суммировать все будущие платежи по каждому кредиту без учета текущего периода. То есть, если мой фильтр основан на квартале, и я выбираю 3 квартал 2020 года, то мне нужен следующий результат:
Q4 2020 Q1 2021 Q2 2021 Q3 2021 ...
Надеюсь, это имеет смысл, и что вы можете мне помочь 🙂
Работая с моей моделью данных в Visual Studio 2017, она имеет табличную форму.
*** ОБНОВЛЕНИЕ ***
Я заставил это работать таким образом:
Outstanding:=
VAR varEndOfQ= MAX(_TransactionDateCalendar[CalendarID])
RETURN
CALCULATE([Repayments] ,FILTER(ALLSELECTED(_TransactionDateCalendar) ,
_TransactionDateCalendar[CalendarID] > varEndOfQ) )
Но проблема, с которой я столкнулся сейчас, заключается в том, что каждая строка привязана к кредиту, у которого есть дата вступления в силу. И я не хочу показывать кредиты на графике до того, как они вступят в силу. То есть до того, как мы фактически начнем погашать кредиты, у них просто будет одна и та же сумма задолженности с самой ранней даты в календарном измерении.
Я пытался решить эту проблему следующим образом:
Outstanding:=
VAR varEndOfQ= MAX(_TransactionDateCalendar[CalendarID])
VAR varStartOfQ= MIN(_TransactionDateCalendar[CalendarID])
RETURN
CALCULATE([Repayments] ,FILTER(ALLSELECTED(_TransactionDateCalendar) ,
_TransactionDateCalendar[CalendarID] > varEndOfQ) ,
FILTER(ALLSELECTED(Fact_LoanFacility) ,
Fact_LoanFacility[EffectiveDateID] >= varStartOfQ))
Но тогда он не может разделить суммы транзакций по кредитам, все они просто имеют одинаковую сумму …
Ответ №1:
Удалось найти решение:
Outstanding:=
VAR varEndOfQ= MAX(_TransactionDateCalendar[CalendarID])
VAR varStartOfQ= MIN(_TransactionDateCalendar[CalendarID])
RETURN
CALCULATE([Repayments]
, FILTER(ALL(_TransactionDateCalendar) , _TransactionDateCalendar[CalendarID] > varEndOfQ)
, FILTER(Fact_LoanFacility, Fact_LoanFacility[EffectiveDateID] < varStartOfQ))