DAX公式 - 基于最后非空白非日期列的结算余额

时间:2015-11-01 21:18:31

标签: excel excel-2013 powerpivot dax

我试图按月显示以下数据集的总结算余额:

[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

我已经使用日期查找表(日期)加入了数据集(表LoanSched)。

这是DAX计算的字段公式:

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

但是,我得到的结果不正确。由于Tranche T2的余额在早于T3的日期结束,因此余额不包括在月度总额中。数据集的工作方式是总余额应包括每月最后一天出现的余额和付款。我错过了部分条件。

enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:2)

所以你所拥有的是一种半附加措施的形式,虽然我并不完全理解与小计有关的总数 - 它对我说的是每个"付款 - 成熟日期"组合是一种独立的工具,因此使用传统的时间智能并不是完全有意义的 - 比如几个月可能只是其他任意的等级。这是对的吗?

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

  1. 一个计算的度量,它返回给定部分的一个月内的最后一个非空白余额;
  2. 另一项措施,它为每一部分加上该措施以获得"到期月份余额&#34 ;;
  3. 然后是最后一项措施,将每个到期月份的 衡量标准加在一起,以获得"总余额"。
  4. 对于#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] )
    

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