如何在DAX中通过条件移除行以避免重复计算?
解决DAX度量值中排除特定行的问题
问题分析
当前的MyCalculate度量值仅筛选了Currency = "USD"和Scenario = "AOP"的行,但未处理[LC or USD] = "USD"的排除条件,导致这部分数据被计入计算,不符合预期。
修改后的DAX代码
直接在CALCULATE的筛选参数中添加排除[LC or USD] = "USD"的条件即可:
MyBase = SUM('MyData'[Amount]) MyCalculate = CALCULATE( [MyBase], KEEPFILTERS('MyData'[Currency] = "USD"), KEEPFILTERS('MyData'[Scenario] = "AOP"), KEEPFILTERS('MyData'[LC or USD] <> "USD") // 新增:排除LC or USD为USD的行 )
结果验证
基于你的数据源:
- 原数据中
[LC or USD] = "USD"的3行被排除 - 剩余符合条件的是3行
[LC or USD] = "LC"且Currency = "USD"的记录,总和为3,与预期一致。
补充说明
如果不需要保留外部筛选上下文的影响,也可以省略KEEPFILTERS,直接使用筛选表达式:
MyCalculate = CALCULATE( [MyBase], 'MyData'[Currency] = "USD", 'MyData'[Scenario] = "AOP", 'MyData'[LC or USD] <> "USD" )
两者的区别在于KEEPFILTERS会保留原有筛选器与当前筛选的交集,适合需要维持外部筛选上下文的场景。
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

