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"组合是一个独立的工具,因此使用传统的时间智能并不完全有意义——比如用其他任意层次结构代替月份。对吗?
反正按照你的标准,你要的基本上就是
- 一个计算量度,returns 给定档次在一个月内的最后一个非空白余额;
- 另一种措施,将每个部分的措施相加得到 "maturity month balance";
- 然后是最终指标,将每个到期月份的 指标相加得到 "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] )
请注意,这些措施基本上只适用于您所描述的布局,但听起来这是为给定的一组付款和到期日获得正确平衡的唯一方法,因此形式服从功能,如是的。
我正在尝试按月显示以下数据集的总期末余额:
[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"组合是一个独立的工具,因此使用传统的时间智能并不完全有意义——比如用其他任意层次结构代替月份。对吗?
反正按照你的标准,你要的基本上就是
- 一个计算量度,returns 给定档次在一个月内的最后一个非空白余额;
- 另一种措施,将每个部分的措施相加得到 "maturity month balance";
- 然后是最终指标,将每个到期月份的 指标相加得到 "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] )
请注意,这些措施基本上只适用于您所描述的布局,但听起来这是为给定的一组付款和到期日获得正确平衡的唯一方法,因此形式服从功能,如是的。