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

如何修改DAX度量值,避免1月时返回上一年12月的上月YTD值?

修复DAX度量值实现需求

原代码的核心问题是未判断上月年份与当前选择年份是否一致,导致跨年度时(如选2023年1月)仍会计算上一年的YTD值。同时,原代码中用FILTER筛选上月日期后套TOTALYTD的逻辑冗余,TOTALYTD本身可以直接指定截止日期。

以下是修复后的度量值:

VAR vCurrentDate = MAX(DateTable[Date])
VAR vLastMonthEnd = EOMONTH(vCurrentDate, -1)
VAR vCurrentYear = YEAR(vCurrentDate)
VAR vLastMonthYear = YEAR(vLastMonthEnd)

// 仅当上月与当前选择年份相同时,返回上月YTD;否则返回空值
RETURN
IF(
    vLastMonthYear = vCurrentYear,
    CALCULATE(
        TOTALYTD(SELECTEDMEASURE(), DateTable[Date]),
        DateTable[Date] <= vLastMonthEnd,
        ALLSELECTED(DateTable)
    ),
    BLANK()
)

代码关键逻辑说明:

  • vCurrentDate:获取当前日期选择器选中的最大日期,以此确定当前年份基准
  • vLastMonthEnd:计算上月月末日期,和你原变量逻辑一致
  • 年份判断:通过对比vCurrentYear和vLastMonthYear,过滤掉跨年度的情况(如选2023年1月时,上月年份2022≠2023,直接返回空)
  • CALCULATE部分:用DateTable[Date] <= vLastMonthEnd限定YTD的截止日期,同时用ALLSELECTED清除当前日期筛选,确保计算的是上月所在年份的年初至月末的累计值

额外说明:

如果选择器选中的是整个月份而非单日(比如选中2023年1月的所有日期),可以把vCurrentDate替换为EOMONTH(MAX(DateTable[Date]), 0),确保取选中月份的月末日期作为基准,逻辑不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:42:35