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

如何创建依赖日期、名称随年份动态变化的DAX动态度量值?

实现方案

该需求完全可以实现,核心是替换掉硬编码的固定年份逻辑,用动态时间计算+独立参数表的方案,一次配置后永久自动更新,不需要每年手动修改度量值。

第一步:重构通用基础度量

首先删除你之前按年份单独创建的所有重复度量,只保留1个无硬编码的通用marketprice度量值,修正原有代码里的拼写错误和冗余计算:

marketprice = 
VAR TargetYear = SELECTEDVALUE('Year Range'[YearValue])
RETURN
CALCULATE(
    LASTNONBLANKVALUE('table'[column1], SUM('table'[column1])),
    FILTER(
        ALL('table'),
        'table'[year] = TargetYear
    )
)

注:你原有代码里的SUMMARIZE嵌套属于冗余写法,LASTNONBLANKVALUE可直接按列取最后非空值,额外嵌套函数只会增加计算开销;另外原代码里的CALCUALTE为拼写错误,正确函数名是CALCULATE。

第二步:创建自动更新的年份范围参数表

新建一个和现有事实表无关联的独立计算表,用来自动生成你需要的4个滚动年份窗口,表内容会跟随系统日期自动更新,无需手动维护:

Year Range = 
DATATABLE(
    "YearOffset", INTEGER,
    "YearName", STRING,
    "YearValue", INTEGER,
    {
        {-1, "上一年", YEAR(TODAY())-1},
        {0, "本年", YEAR(TODAY())},
        {1, "下一年", YEAR(TODAY())+1},
        {2, "后两年", YEAR(TODAY())+2}
    }
)

这个表的年份会自动随系统时间滚动:比如到2025年时,会自动生成2024、2025、2026、2027四个年份值,完全匹配你需要的时间窗口规则。

第三步:可视化/单独取值用法

  • 做表格、矩阵类可视化时:直接把Year Range表的YearName字段拖到行/列维度,把通用marketprice度量拖到值区域,即可自动展示4个年份的对应价格。
  • 如果需要单独引用某一个相对年份的数值,不需要每年改度量,直接按偏移量固定筛选即可,该类度量一次创建永久生效:
// 永远取上一年价格,无需按年修改
marketprice 上一年 = CALCULATE([marketprice], 'Year Range'[YearOffset] = -1)

// 永远取本年价格,无需按年修改
marketprice 本年 = CALCULATE([marketprice], 'Year Range'[YearOffset] = 0)

如果你的模型已经启用计算组,也可以用计算组实现完全一致的效果,核心逻辑都是把硬编码的固定年份替换为基于TODAY()的动态时间计算,从根源上消除每年手动修改度量值的维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 01:21:34