Обратный ход Всего DAX

#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))