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

如何在Power BI中基于筛选日期后六周创建销售预测度量值?

解决DAX销售预测度量值返回空白的问题

核心原因

你的度量值返回空白是筛选上下文互斥导致的:当报表中已筛选了某个日期范围时,CALCULATE内部的DATESBETWEEN会在这个已筛选的范围内查找后续六周的数据,但这个后续范围不在原有筛选里,自然没有匹配结果。

修正后的DAX写法

写法1:清除所有日期筛选(适用于需要完全忽略当前日期选择,计算指定周之后六周的情况)

Sell Thru Projection = 
VAR SelectedMinWeek = MIN('Date'[Fiscal Week])
VAR Next6WkStart = SelectedMinWeek + 1
VAR Next6WkEnd = SelectedMinWeek + 42
RETURN
CALCULATE(
    [CDP Forecast Sell Thru (Units)],
    ALL('Date'), -- 清除日期表的所有筛选,确保能访问后续六周的日期数据
    DATESBETWEEN('Date'[Fiscal Week], Next6WkStart, Next6WkEnd)
)

写法2:保留其他维度筛选(仅清除日期筛选,保留产品、区域等其他筛选条件)

如果需要保留报表中其他维度的筛选(比如选了特定产品),可以用ALLSELECTED替代ALL:

Sell Thru Projection = 
VAR SelectedMinWeek = MIN('Date'[Fiscal Week])
VAR Next6WkStart = SelectedMinWeek + 1
VAR Next6WkEnd = SelectedMinWeek + 42
RETURN
CALCULATE(
    [CDP Forecast Sell Thru (Units)],
    ALLSELECTED('Date'), -- 仅清除日期列的筛选,保留其他筛选上下文
    DATESBETWEEN('Date'[Fiscal Week], Next6WkStart, Next6WkEnd)
)

补充说明

  • 你之前尝试的DATEADD无效,是因为DATEADD要求列是日期类型,如果Fiscal Week是周编号(数字类型),直接用加减数字的方式是正确的,问题仍出在筛选上下文上。
  • 若要单独定义next6wkstart和next6wkend度量值,可先创建:
    Next6WkStart = MIN('Date'[Fiscal Week]) + 1
    Next6WkEnd = MIN('Date'[Fiscal Week]) + 42
    
    然后在主度量值中引用,但核心还是要处理筛选上下文,写法类似:
    Sell Thru Projection = 
    CALCULATE(
        [CDP Forecast Sell Thru (Units)],
        ALL('Date'),
        DATESBETWEEN('Date'[Fiscal Week], [Next6WkStart], [Next6WkEnd])
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:10:19