关于DAX中列值加减运算及指定DAX代码优化的技术咨询
DAX中列值加减运算及指定DAX代码优化的技术咨询
嗨,我来帮你优化这段DAX代码啦!你的原代码通过两次CALCULATE分别计算两个不同账户类别的值再相加,逻辑没问题但在数据量较大时,两次筛选上下文切换会带来不必要的性能开销。我们可以把两个筛选条件合并成一次计算,效率会更高:
优化后的DAX代码如下:
Total Operating Profit = CALCULATE( [mymeasure], dimAccount[FS Header Description] IN { "Total Other Operating(Inc)/Exp", "Direct Overhead without Allocations" } )
优化思路说明:
- 用
IN运算符把两个目标类别合并到同一个筛选条件里,只需要执行一次CALCULATE,减少了上下文切换的次数,性能更优 - 因为
[mymeasure]本身是可聚合的度量值,一次计算就能自动对符合条件的两个类别值求和,和你原代码_totOther + _direct的结果完全一致(也就是5+10=15)
如果你的[mymeasure]是一个非聚合的计算(比如仅返回单值),也可以用SUMX来确保求和逻辑,代码如下:
Total Operating Profit = SUMX( FILTER( dimAccount, dimAccount[FS Header Description] IN { "Total Other Operating(Inc)/Exp", "Direct Overhead without Allocations" } ), [mymeasure] )
不过通常情况下,第一种写法就足够满足需求啦,既简洁又高效~
备注:内容来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

