You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DAX实现2022至2023年的跨年度累计余额计算?

跨年度累计余额计算解决方案

问题根源

你当前的DAX公式里,period_end被固定为DATE(2023,1,31),这意味着不管报表中选中哪个月份,计算范围都会锁定到2023年1月底,所以所有行都只显示截至该日期的最终余额,无法按月份动态展示累计。

修正后的DAX公式

你需要动态获取当前筛选上下文的日期作为结束节点,同时固定起始日期为2022年1月1日,以下是两种可行的写法:

写法1:使用DATESBETWEEN简化筛选

Balance BRL = 
VAR Period_Start = DATE(2022, 1, 1)
-- 获取当前上下文的最后一天(比如报表行显示2022年5月,这里就是2022-5-31)
VAR Current_Period_End = MAX('Calendar'[Date])
RETURN
CALCULATE(
    -- 合并所有需要累计的度量值,减少重复CALCULATE
    'Fact_balance_cash'[realized_application] + 
    'Fact_balance_cash'[realized_investiments] + 
    'Fact_balance_cash'[realized_balance] + 
    [Forecast_R],
    -- 筛选从起始日到当前上下文结束日的所有日期
    DATESBETWEEN('Calendar'[Date], Period_Start, Current_Period_End)
)

写法2:使用FILTER自定义筛选范围

如果需要更灵活的日期逻辑,可以用FILTER:

Balance BRL = 
VAR Period_Start = DATE(2022, 1, 1)
VAR Current_Period_End = MAX('Calendar'[Date])
RETURN
CALCULATE(
    'Fact_balance_cash'[realized_application] + 
    'Fact_balance_cash'[realized_investiments] + 
    'Fact_balance_cash'[realized_balance] + 
    [Forecast_R],
    FILTER(
        ALL('Calendar'),
        'Calendar'[Date] >= Period_Start && 'Calendar'[Date] <= Current_Period_End
    )
)

关键说明

  • MAX('Calendar'[Date])会根据报表的筛选上下文动态变化:比如当报表按月份展示时,每个月份行对应的Current_Period_End就是该月的最后一天,从而实现逐月累计的效果。
  • 合并多个度量值的加法到同一个CALCULATE中,比多次调用CALCULATE更高效。

内容的提问来源于stack exchange,提问作者Arnold Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:10:32