Power BI中如何基于指定日期对图表内的度量值进行过滤
错误原因
- 你的现有DAX仅对销售额的计算逻辑做了日期过滤,没有对图表的日期轴展示范围做限制:所有早于
ClosedMonthsDates[Date]最大值的月份都会返回对应销售额,Power BI会把所有有返回值的月份都展示在图表中。如果你原本需要的是仅展示指定日期所在年度到该日的月度数据,当前逻辑没有限制年份范围,就会出现你看到的过多历史早前数据。 - 运算符使用错误:你用了
<对比日期,如果ClosedMonthsDates[Date]的最大值为6月30日,会直接排除6月30日当天的销售额,不符合“不晚于6月末”的要求,需要替换为<=。 - 筛选上下文被覆盖:
FILTER('Date', ...)是直接迭代整个日期表,会覆盖掉你在视觉对象、页面层级设置的其他日期筛选规则,如果你原本设置了仅展示当年数据的筛选器,也会被这个逻辑覆盖失效。
修正方案
如果你需要仅展示指定日期所在年度、不晚于该日期的月度数据,可以使用以下DAX:
Total Sales Filtered = VAR MaxClosedDate = MAX(ClosedMonthsDates[Date]) VAR CurrentMonthMaxDate = MAX('Date'[Date]) RETURN IF( // 仅保留截止日期当年、且不晚于截止日期的月份 CurrentMonthMaxDate <= MaxClosedDate && YEAR(CurrentMonthMaxDate) = YEAR(MaxClosedDate), CALCULATE([Total Sales], 'Date'[Date] <= MaxClosedDate), BLANK() )
该逻辑会让不符合要求的月份返回空值,Power BI默认不会展示度量值为空的轴项,会自动过滤掉不需要的早前数据和超期数据。如果你需要保留所有年份不晚于截止日期的月度数据,仅需要过滤更早时期的数据,调整IF内的判断条件为你需要的时间范围即可。
内容的提问来源于stack exchange,提问作者Robert Di Meglio
相关产品推荐
相关产品推荐

