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

如何计算日历年动态YTD平均值且不受日期筛选器影响

DAX 不受日期筛选影响的YTD动态平均值计算方案

实现逻辑

核心要解决两个问题:一是忽略页面现有日期筛选器的影响,取全局最新有数据的日期作为计算终点;二是动态匹配最新日期所在年份,自动生成当年1月1日到最新日期的计算区间,再求对应字段的平均值。

具体度量值代码

若你是月度粒度数据(直接求字段平均值即可)

Actual Exp YTD 平均

Actual Exp YTD 平均 = 
VAR 最新数据日期 = CALCULATE(MAX('日期表'[日期]), REMOVEFILTERS('日期表'))
VAR 当前统计年份 = YEAR(最新数据日期)
VAR YTD区间 = DATESBETWEEN('日期表'[日期], DATE(当前统计年份,1,1), 最新数据日期)
RETURN CALCULATE(AVERAGE('业务表'[Actual Exp]), REMOVEFILTERS('日期表'), YTD区间)

Actual Min YTD 平均

Actual Min YTD 平均 = 
VAR 最新数据日期 = CALCULATE(MAX('日期表'[日期]), REMOVEFILTERS('日期表'))
VAR 当前统计年份 = YEAR(最新数据日期)
VAR YTD区间 = DATESBETWEEN('日期表'[日期], DATE(当前统计年份,1,1), 最新数据日期)
RETURN CALCULATE(AVERAGE('业务表'[Actual Min]), REMOVEFILTERS('日期表'), YTD区间)

若你是日粒度数据(需要先按月求和再算月度平均)

Actual Exp YTD 月度平均

Actual Exp YTD 月度平均 = 
VAR 最新数据日期 = CALCULATE(MAX('日期表'[日期]), REMOVEFILTERS('日期表'))
VAR 当前统计年份 = YEAR(最新数据日期)
VAR YTD区间 = DATESBETWEEN('日期表'[日期], DATE(当前统计年份,1,1), 最新数据日期)
RETURN CALCULATE(
    AVERAGEX(VALUES('日期表'[年月]), SUM('业务表'[Actual Exp])),
    REMOVEFILTERS('日期表'),
    YTD区间
)

Actual Min的版本只需要替换求和的字段名即可。

注意事项

  • 将代码中的'日期表'替换为你自己的日期维度表名称,无单独日期表则替换为业务表中日期字段所属的表名
  • 将'业务表'替换为你存储Actual Exp、Actual Min字段的表名
  • 若使用的Excel版本不支持REMOVEFILTERS函数,替换为ALL('日期表')即可

原TOTALYTD方案失效原因

TOTALYTD默认继承当前筛选上下文,若页面存在日期筛选器,计算范围会被强制限制在筛选区间内;且未清除筛选的前提下MAX(Date)取到的是筛选后的最大日期,不是全局最新的有数据日期,因此无法满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:45:07