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

DAX如何计算上一财年截至去年同日的累计发票总额

DAX 财年上年同期累计金额计算方案

现有代码与需求

当前可正常运行的DAX代码用于计算2021财年(FY2021)全年CLIN Total总和:

Cum FY21 Invoice Total = 
     CALCULATE(
       SUM('Invoice Amounts'[CLIN Total]),
        FILTER(
            ALL('Calendar'),
            'Calendar'[Fiscal Year] = 2021
                && 'Calendar'[Date] < MAX('Calendar'[Date])
                && 'Calendar'[Date] < NOW())
                 )

需要实现的逻辑:计算截至上年同日的累计金额。例如当前日期为2022年7月1日时,返回2021财年从财年初到2021年7月1日的CLIN Total累计总和。
此前尝试的写法运行失败:

&&'Calendar'[Date]< DATEADD(now(),-1,YEAR)

报错原因

DAX的DATEADD属于时间智能函数,第一个参数必须传入日期列引用,不能直接传入NOW()返回的单个日期标量,因此该写法不符合语法要求。

正确实现代码

Cum FY21 Prior YTD Invoice Total = 
VAR CutoffDate = EDATE(TODAY(), -12)
RETURN
CALCULATE(
    SUM('Invoice Amounts'[CLIN Total]),
    FILTER(
        ALL('Calendar'),
        'Calendar'[Fiscal Year] = 2021
            && 'Calendar'[Date] < MAX('Calendar'[Date])
            && 'Calendar'[Date] <= CutoffDate
    )
)

说明

  • 用EDATE(TODAY(), -12)直接计算一年前的同日日期,不需要依赖时间智能函数对列的要求,还能自动处理闰年2月29日这类特殊日期,比手动拼接年/月/日的写法更稳定
  • 日期判断场景优先用TODAY()代替NOW(),NOW()会返回带时分秒的时间戳,可能导致当日日期匹配出现偏差
  • 现有筛选条件已经限定了统计范围为2021财年,不需要额外调整财年逻辑,计算出的结果就是2021财年截至上年同日的累计值

内容的提问来源于stack exchange,提问作者Robert Kendall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:21:46