Power BI切片器选月份后上月日均案件DAX度量值不生效咨询
原度量值错误原因
SELECTEDVALUE('Date'[MMM-YYYY])返回的是文本类型的月份标识(例如May-2021),无法直接传入MONTH()、YEAR()函数解析,这两个函数仅支持日期格式入参,第一步就取不到正确的年月参数。- 手动计算上月逻辑未处理跨年场景:如果选中每年1月,
MONTH(xxx)-1会得到0,同时年份沿用选中月的年份,完全匹配不到上年12月的日期。 - 计算时未清除当前选中的
MMM-YYYY筛选条件,即使匹配到上月日期,也会被当前的月份筛选过滤,返回空结果。
修复后的度量值
使用DAX内置时间智能函数处理月份偏移,无需手动处理年月计算,自动适配跨年场景:
Avg Daily Cases Prev Month = VAR 当前月首日 = STARTOFMONTH(MAX('Date'[Date])) VAR 上月首日 = EDATE(当前月首日, -1) VAR 上月末日 = EOMONTH(上月首日, 0) RETURN CALCULATE( AVERAGEX(VALUES('Date'[DateAsInteger]), CALCULATE(DISTINCTCOUNT(MyTable[CaseNo]))), DATESBETWEEN('Date'[Date], 上月首日, 上月末日), ALL('Date'[MMM-YYYY]) )
简化优化方案
如果你的日历表已经新增了数值型的年月序号列(例如202104对应2021年4月,202105对应2021年5月,字段名为YearMonthNum),可以直接复用你已经写好的当月日均度量值,逻辑更简洁:
Avg Daily Cases Prev Month = VAR 当前年月序号 = SELECTEDVALUE('Date'[YearMonthNum]) RETURN CALCULATE( [Avg Daily Cases], FILTER(ALL('Date'), 'Date'[YearMonthNum] = 当前年月序号 - 1), ALL('Date'[MMM-YYYY]) )
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

