DAX 公式 - 基于非日期列的最后一个非空白的期末余额

DAX Formula for - Closing Balance based on last non-blank by non-date column

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

[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

我已加入数据集 (table LoanSched) 并进行日期查找 table(日期)。

这是 DAX 计算字段公式:

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

但是,我得到下面的结果是不正确的。由于 Tranche T2 的余额在早于 T3 的日期结束,因此该余额不包括在每月总计中。数据集的工作方式是,总余额应包括出现在每个月最后一天的余额。我缺少部分条件。

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

所以你在这里看到的是一种半加性度量的形式,尽管我不太理解总计与小计的关系 - 它对我说的是每个 "tranche-maturity date"组合是一个独立的工具,因此使用传统的时间智能并不完全有意义——比如用其他任意层次结构代替月份。对吗?

反正按照你的标准,你要的基本上就是

  1. 一个计算量度,returns 给定档次在一个月内的最后一个非空白余额;
  2. 另一种措施,将每个部分的措施相加得到 "maturity month balance";
  3. 然后是最终指标,将每个到期月份的 指标相加得到 "total balance".

对于#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] )

请注意,这些措施基本上只适用于您所描述的布局,但听起来这是为给定的一组付款和到期日获得正确平衡的唯一方法,因此形式服从功能,如是的。