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

如何用DAX自动计算按日期筛选的上一周期Objectif度量值?

用DAX实现动态上一周期Objectif值计算

完全可以用DAX自动实现这个需求,核心是根据当前筛选的日期粒度(年/季度/月)自动匹配并计算上一周期的Objectif值。

前提条件

  • 需存在一个完善的日期表(需标记为Power BI中的日期表),包含年、季度、月、日期等字段,且已与存储Objectif数据的事实表建立正确关系。
  • 已存在基础度量值[Objectif]。

实现代码

Objectif_上一周期 = 
VAR DateRange = DATESBETWEEN('日期表'[日期], MIN('日期表'[日期]), MAX('日期表'[日期]))
VAR RangeYears = DISTINCTCOUNT('日期表'[年])
VAR RangeQuarters = DISTINCTCOUNT('日期表'[季度])
VAR RangeMonths = DISTINCTCOUNT('日期表'[月])
RETURN
SWITCH(
    TRUE(),
    -- 筛选全年时,取上一年同期值
    RangeYears = 1 && RangeQuarters = 4, CALCULATE([Objectif], SAMEPERIODLASTYEAR(DateRange)),
    -- 筛选单个季度时,取上一季度值
    RangeQuarters = 1, CALCULATE([Objectif], DATEADD(DateRange, -1, QUARTER)),
    -- 筛选单个月份时,取上月值
    RangeMonths = 1, CALCULATE([Objectif], DATEADD(DateRange, -1, MONTH)),
    -- 其他跨周期筛选场景返回空,可按需调整
    BLANK()
)

逻辑说明

  1. 通过变量获取当前筛选的日期范围,以及范围内年、季度、月的唯一计数,以此判断当前的筛选粒度。
  2. 用SWITCH分支处理不同场景:
    • 筛选一整年时,调用SAMEPERIODLASTYEAR获取上一年同期的Objectif值
    • 筛选单季度时,用DATEADD往前偏移1个季度计算
    • 筛选单月时,用DATEADD往前偏移1个月计算
    • 跨多个周期的筛选(比如跨两年、跨两个季度)返回空,可根据业务需求修改这部分逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:20:20