Power BI 如何编写仅保留tbCategory Date筛选的去重计数度量值
原有代码问题分析
- 你将
DISTINCTCOUNT逻辑放在VAR中提前计算,已经固化了原始筛选上下文的计算结果,后续CALCULATE调整上下文不会改变该VAR的返回值,是核心错误点 - 仅用
ALLSELECTED(tbCalendar)只能清除tbCalendar表的选中筛选,无法移除tbFiles、tbCategory其他列的筛选,不满足忽略所有筛选的要求
正确度量值写法
CountKeyCodRows = CALCULATE( DISTINCTCOUNT(tbFiles[KeyCod]), -- 清除所有表的所有外部筛选器 ALL(), -- 保留tbCategory表Date列的现有筛选 VALUES(tbCategory[Date]) )
逻辑说明
ALL()会清空当前评估上下文内所有表的所有筛选规则,实现忽略全部已设置筛选的要求VALUES(tbCategory[Date])会将当前上下文中tbCategory[Date]列的已有筛选重新应用,确保仅保留该列的筛选效果- 聚合逻辑直接放在CALCULATE内部,保证计算是在调整后的筛选上下文中执行
如果你的模型中tbCategory和tbFiles的关系传播存在异常,可以额外添加跨表筛选控制参数:
CountKeyCodRows = CALCULATE( DISTINCTCOUNT(tbFiles[KeyCod]), ALL(), VALUES(tbCategory[Date]), -- 强制启用tbCategory到tbFiles的筛选传播 CROSSFILTER(tbCategory[Category], tbFiles[Category], Both) )
内容的提问来源于stack exchange,提问作者Felipe
相关产品推荐
相关产品推荐

