Power BI DAX中DISTINCT函数未遵循当前筛选上下文问题排查
DAX 虚拟表不响应切片器筛选的问题原因及解决方案
核心问题原因
问题本质是混淆了模型级计算表和度量值内虚拟表的计算时机:
- 如果你是直接在Power BI/Excel的建模选项卡中新建的计算表,公式为
Distinc Products Sold = DISTINCT(fSales[Product Sold]),这类计算表属于静态计算对象,仅在数据集刷新时执行一次计算,使用的是无筛选的完整数据上下文,完全不会响应报表页上的切片器、页面筛选等交互操作,所以永远返回全量3款产品。 - 只有在度量值内部定义的临时虚拟表,才会继承当前报表的筛选上下文,动态响应筛选操作。
解决方案
根据你的使用场景选择对应方案:
场景1:需要在DAX逻辑中动态调用可见产品列表
直接在度量值内部定义该虚拟表即可,它会自动继承切片器的筛选:
示例:计算当前筛选下的去重产品数量的度量值:
Distinct Product Count = COUNTROWS( DISTINCT(fSales[Product Sold]) // 该虚拟表会响应当前筛选上下文 )
你可以将该度量值和你之前创建的Rows Visible度量值同时放到画布上,调整切片器时两者的结果会匹配,验证筛选传递的正确性。
场景2:需要在报表上直接展示可见的去重产品列表
不需要额外创建任何计算表,直接将fSales[Product Sold]字段拖入表/矩阵视觉对象即可,视觉对象会自动应用当前页面的所有筛选,仅展示当前日期区间内有销售记录的产品。
内容的提问来源于stack exchange,提问作者Danilo Setton
相关产品推荐
相关产品推荐

