DAX实现按年统计有效订阅客户的经常性收入总额
DAX 年度经常性收入统计修正方案
原有公式缺陷
原有DAX逻辑存在核心问题,导致统计结果不符合预期:
- 筛选规则仅覆盖了填写了取消日期、且取消日期晚于统计节点的客户,取消日期为空的在订客户被直接排除
- 缺失订阅开始日期的判断逻辑,会导致未到生效时间的订阅被提前计入收入
- 误用计算列承载动态统计逻辑:计算列在数据刷新时计算完成,无法随日期维度的筛选上下文动态调整结果,该场景应该使用度量值实现
修正后DAX度量值
年度经常性收入 = VAR CurrentPeriodEnd = MAX('Date S&A'[Date]) RETURN CALCULATE( SUM('Licentie & SA'[recurring revenue]), 'Licentie & SA'[Date start] <= CurrentPeriodEnd, OR( ISBLANK('Licentie & SA'[cancellation date]), 'Licentie & SA'[cancellation date] > CurrentPeriodEnd ) )
逻辑说明:统计节点取当前筛选上下文下的最大日期,按年筛选时即为当年年末;仅统计订阅已生效、且未在统计节点前取消的客户收入,取消日期为空的在订客户会被默认纳入统计范围。
样例数据校验结果
基于提供的3条测试数据,按年度维度统计的结果完全匹配预期:
- 2012年:816欧元(仅客户1订阅生效)
- 2013年:816欧元(仅客户1在订)
- 2014年:5151.5欧元(客户1、2、3均已生效,无当年之前取消的记录)
- 2015年:5151.5欧元(客户1取消日期为2015-06-01,按规则计入当年收入)
- 2016年:4335.5欧元(客户1已取消,仅统计客户2、3收入)
- 2017年:4335.5欧元(客户2、3正常在订)
- 2018年:4335.5欧元(客户2取消日期为2018-11-01,按规则计入当年收入)
- 2019年:1690.5欧元(客户2已取消,仅统计客户3收入)
业务规则对齐:若客户取消日期为统计年度内的任意日期,该客户当年的经常性收入正常计入,次年及以后年度不再纳入统计,完全符合给定的统计口径。
内容的提问来源于stack exchange,提问作者Jaco van der Laan
相关产品推荐
相关产品推荐

