日期切片器与COALESCE函数冲突:矩阵表日期过滤范围异常问题
问题原因与解决方案
问题根源
你遇到的“日期过滤失效”是视觉上的错觉:原本矩阵仅显示有[Total answers]数据的6-11月,但添加satisfactionRate度量值后,COALESCE(SatRate, 1)会给无数据的1-5月返回值1,矩阵判定这些月份有有效结果,因此自动显示了日期表中所有存在的1-11月,并非日期筛选真的失效。
解决方案
根据你的需求选择以下两种处理方式:
方式1:恢复原过滤视觉效果(仅显示有数据的月份)
去掉COALESCE中返回1的逻辑,让无数据的月份保持空值,矩阵就不会展示这些月份:
satisfactionRate = VAR SatRate = CALCULATE( [Total answers], Satisfaction[Satisfied]="Yes" )/[Total answers] RETURN SatRate
方式2:保留无数据月份返回1,但严格遵守日期筛选
通过ALLSELECTED确保度量值继承外部日期筛选上下文,仅在6-11月范围内返回结果(超出范围的月份返回空值):
satisfactionRate = VAR SatRate = CALCULATE( [Total answers], Satisfaction[Satisfied]="Yes", ALLSELECTED('Date') )/CALCULATE([Total answers], ALLSELECTED('Date')) RETURN COALESCE(SatRate, 1)
也可以通过日期范围判断实现:
satisfactionRate = VAR CurrentMonth = MAX('Date'[Month]) VAR IsInFilterRange = CurrentMonth >=6 && CurrentMonth <=11 VAR SatRate = CALCULATE( [Total answers], Satisfaction[Satisfied]="Yes" )/[Total answers] RETURN IF(IsInFilterRange, COALESCE(SatRate, 1), BLANK())
内容的提问来源于stack exchange,提问作者Serge Inácio
相关产品推荐
相关产品推荐

