DAX需求:数据透视表逐年计算未来5年累计利润(含当前年)
解决Power BI中按年份计算未来N年利润总和的问题
直接给你能实现需求的度量值,核心思路是先确定每个年份对应的有效计算区间,再汇总该区间的利润:
Rolling 5-Year Profit = VAR CurrentYear = SELECTEDVALUE('Calendar'[YEARS]) VAR MaxYear = CALCULATE(MAX('Calendar'[YEARS]), ALL('Calendar')) VAR EndYear = MIN(CurrentYear + 4, MaxYear) -- 计算结束年份:当前年+4(含当前共5年)或最后一年,取较小值 RETURN CALCULATE( [Profit], DATESBETWEEN('Calendar'[YEARS], CurrentYear, EndYear) )
关键逻辑说明:
CurrentYear:获取透视表当前列对应的年份(利用SELECTEDVALUE捕捉上下文年份)MaxYear:获取日历表中所有年份的最大值(用ALL('Calendar')忽略当前上下文,拿到全局最大年份)EndYear:确定计算的截止年份——如果当前年+4不超过总年份的最大值,就取当前年+4;如果超过(比如第6年,总8年),就取最后一年,这样自然就会汇总当前年到最后一年的所有剩余年份- 最后用
DATESBETWEEN锁定时间区间,计算该区间内的利润总和
注意事项:
- 确保
Calendar表的YEARS列是整数类型,且和Data表的年份字段建立了正确的关系 - 如果你的
YEARS列是日期格式(比如2023/1/1),只需把SELECTEDVALUE和MAX部分改成YEAR('Calendar'[DateColumn])即可适配
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

