如何在DAX度量值中传递切片器的多个选中值?
解决DAX切片器多选时的度量值问题
这问题我碰到过不少次,核心原因是你用的SelectedValue(Orders[Category])只在切片器恰好选中单个值时才会返回有效结果——一旦选了多个值,它就会返回空白,导致你的FILTER条件直接失效,自然算不出正确的总和。
解决方案:用VALUES代替SelectedValue处理多选场景
VALUES(Orders[Category])会返回当前切片器选中的所有分类组成的单列表,不管是选1个、多个还是全选,都能准确获取选中的集合。
写法1:用FILTER+IN判断(直观易懂)
Selected Categories Total = CALCULATE( SUM(Orders[Amount]), FILTER( ALL(Orders), // 清除Orders表的所有原有筛选 Orders[Category] IN VALUES(Orders[Category]) // 判断当前行是否在选中的分类集合里 ) )
写法2:简化版(更符合DAX的简洁风格)
其实CALCULATE可以直接把筛选条件组合起来,不用嵌套FILTER,效果完全一样:
Selected Categories Total = CALCULATE( SUM(Orders[Amount]), ALL(Orders), // 清除所有原有筛选 VALUES(Orders[Category]) // 应用选中的分类筛选 )
额外场景:如果需要保留其他筛选条件(比如日期筛选)
如果你的需求不是清除所有筛选,而是只忽略Category的原有筛选,保留其他列(比如Date)的筛选,那把ALL(Orders)换成ALL(Orders[Category])就行:
Selected Categories Total (Keep Other Filters) = CALCULATE( SUM(Orders[Amount]), ALL(Orders[Category]), // 只清除Category的筛选 VALUES(Orders[Category]) // 应用选中的分类筛选 )
这样不管你在切片器里选几个分类,度量值都能准确计算出对应分类的金额总和啦!
内容的提问来源于stack exchange,提问作者Student of the Digital World
相关产品推荐
相关产品推荐

