【问题标题】:DAX Formula for - Closing Balance based on last non-blank by non-date columnDAX 公式 - 基于非日期列的最后一个非空白的期末余额
【发布时间】:2015-11-01 21:18:31
【问题描述】:

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

[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)与日期查找表 (Dates) 结合在一起。

这是 DAX 计算字段公式:

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

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

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

【问题讨论】:

  • 7300 真的是总计的正确余额吗?看起来你在重复计算 T2 和 T3 的滚动余额...?
  • 你是对的。我打错了。总数应该是 4100 而不是 7300,所以这只是意味着我在您的解决方案中执行了第 2 步。

标签: excel excel-2013 powerpivot dax


【解决方案1】:

因此,您在这里所拥有的是一种半加法测量的形式,尽管我不太了解与小计相关的总计 - 它对我说的是每个“付款到期日期”组合是一种独立的工具,因此使用传统的时间智能并不完全有意义——比如用几个月来代替可能只是其他任意层次结构的时间。对吗?

不管怎样,根据你的标准,你想要的基本上是

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

请注意,这些措施基本上只适用于您所描述的布局,但听起来这是在给定的一组批次和到期日期获得正确余额的唯一方法,因此形式服从功能,因为它是.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多