如何修复返回空白的上一年上月DAYS OVER 3总和Power BI度量值?
问题分析与修正方案
原度量值返回空白的核心问题是日期匹配逻辑错误,直接用日期字段和月份/年份数字比较会导致筛选条件永远不成立,自然返回空白。以下是具体修正步骤和正确代码:
错误点拆解
- 错误1:
MasterDate[Date] = MONTH(TODAY()) - 1——Date是完整日期类型,不能直接和月份数字(如12)比较,需提取日期的月份部分再对比。 - 错误2:
MasterDate[Date] = YEAR(TODAY())-2—— 同理,需提取日期的年份部分再对比。 - 错误3:1月时
MONTH(TODAY())-1会得到0,实际目标月份应为12,需修正这个逻辑。
修正后的度量值
KPI 10 TB NO Days Over 3 Last Month Previous Year = VAR CurrentMonth = MONTH(TODAY()) VAR TargetMonth = IF(CurrentMonth = 1, 12, CurrentMonth - 1) VAR TargetYear = IF(CurrentMonth = 1, YEAR(TODAY()) - 2, YEAR(TODAY()) - 1) RETURN CALCULATE( SUM('KPI10'[DAYS OVER 3]), FILTER( ALL(MasterDate), MONTH(MasterDate[Date]) = TargetMonth && YEAR(MasterDate[Date]) = TargetYear ) )
修正说明
- 先定义变量存储当前月份、目标月份、目标年份,逻辑更清晰:
- 若当前是1月,目标月份设为12,年份设为当前年份减2(如2024年1月对应2022年12月)
- 其他月份,目标月份为当前月份减1,年份为当前年份减1
- 使用
ALL(MasterDate)清除日历表的现有筛选,确保筛选范围覆盖整个日历表 - 在FILTER中用
&&同时匹配目标月份和年份,替代原代码中两个独立FILTER的冗余写法
内容的提问来源于stack exchange,提问作者SHENOOOO
相关产品推荐
相关产品推荐

