如何在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]) + 42Sell Thru Projection = CALCULATE( [CDP Forecast Sell Thru (Units)], ALL('Date'), DATESBETWEEN('Date'[Fiscal Week], [Next6WkStart], [Next6WkEnd]) )
内容的提问来源于stack exchange,提问作者Shadowsong
相关产品推荐
相关产品推荐

