DAX公式 – 基于非date栏上次非空白的结算余额

我正在尝试按月显示下面数据集的总余额:

[Tranche] [Maturity Date] [Balance] T1 1-Jan-16 1000 T2 2-Jan-16 200 T3 1-Jan-16 3000 T3 3-Jan-16 2900 T1 31-Jan-16 1000 T2 1-Feb-16 200 T3 31-Jan-16 3000 T3 2-Feb-16 2900 

我已经join了数据集(表LoanSched)与date查找表(date)。

以下是DAX计算的字段公式:

 =CALCULATE ( SUM(LoanSched[Balance]), FILTER ( Dates, Dates[FullDate] = MAX(LoanSched[Maturity Date]) ) ) 

但是,我得到下面的结果是不正确的。 由于第二批的余额在T3之前的date结束,所以余额不包括在每月的总额中。 数据集的工作方式是,总余额应包括出现在每个月的最后一天的余额。 我错过了付款条件。

在这里输入图像说明

我需要计算以下正确的余额(以黄色突出显示):

在这里输入图像说明

所以你在这里有一个半加成的措施,虽然我不太明白总计,因为它涉及小计 – 它对我说的是,每个“批到期日”的组合是一个独立的仪器,所以使用传统的时间智能并不完全有意义,而不是几个月,可能只是一些其他的任意层次。 那是对的吗?

无论如何,根据你的标准,你想要的基本上是

  1. 一个计算出来的衡量标准,用于返回给定付款一个月内的最后一个非空白余额;
  2. 另一项措施是将每一档的措施加在一起,以获得“到期月余额”;
  3. 然后最后一个措施是将每个到期的月份加起来以得到“总余额”。

对于#1,这是传统的公式:

 TrancheEndingBalance := CALCULATE ( SUM ( ClosingBalance[Balance]), LASTNONBLANK ( Dates[FullDate], CALCULATE ( SUM ( ClosingBalance[Balance] ) ) ) ) 

然后#2只是一个SUMX跨越分档:

 MaturityMonthEndingBalance := SUMX ( VALUES ( ClosingBalance[Tranche] ), [TrancheEndingBalance] ) 

#3在成熟期的SUMX:

 TotalEndingBalance := SUMX ( VALUES ( Dates[MonthYear] ), [MaturityMonthEndingBalance] ) 

请注意,这些措施基本上只适用于您所描述的布局,但是这听起来像是为特定的一组付款和到期日获得正确余额的唯一方法,因此forms遵循function。