Powerbi DAX表达式的性能问题
在下面的DAX度量中,我的性能有一个很大的问题Powerbi DAX表达式的性能问题,powerbi,dax,Powerbi,Dax,在下面的DAX度量中,我的性能有一个很大的问题 Amount = CALCULATE ( SUMX ( 'Financial All Scenarios', IF ( SELECTEDVALUE ( 'Report Options'[Currency], "CD" ) = "USD", 'Financial All Scenarios'[GLAmountUSD], IF (SELECT
Amount = CALCULATE (
SUMX (
'Financial All Scenarios',
IF (
SELECTEDVALUE ( 'Report Options'[Currency], "CD" ) = "USD",
'Financial All Scenarios'[GLAmountUSD],
IF (SELECTEDVALUE ( 'Report Options'[Currency], "CD" ) = "CD",
'Financial All Scenarios'[GLAmountCD],
'Financial All Scenarios'[GlAmountDoc]
)
)
)
)
此DAX度量具有以下特性。有一个名为Report Options的断开连接的筛选表,其中有3个名为Currency的字段,其中有3个值CD、USD和DOC。此切片器用于控制在所有场景中从事实表汇总哪个字段。如果未从报告选项表中选择任何内容,则默认为CD
我有一个报告,上面有一堆数据,当我在报告上有货币报告选项切片器时,它会在一秒钟内返回,但没有选择任何内容。只要我选择CD选项,它就会永远旋转,不再返回
如何调整此DAX度量值以使其性能良好。迭代函数往往比较昂贵。像这样重构怎么样
Amount =
SWITCH (
SELECTEDVALUE ( 'Report Options'[Currency], "CD" ),
"USD", SUM ( 'Financial All Scenarios'[GLAmountUSD] ),
"CD", SUM ( 'Financial All Scenarios'[GLAmountCD] ),
SUM ( 'Financial All Scenarios'[GlAmountDoc] )
)
迭代函数往往很昂贵。像这样重构怎么样
Amount =
SWITCH (
SELECTEDVALUE ( 'Report Options'[Currency], "CD" ),
"USD", SUM ( 'Financial All Scenarios'[GLAmountUSD] ),
"CD", SUM ( 'Financial All Scenarios'[GLAmountCD] ),
SUM ( 'Financial All Scenarios'[GlAmountDoc] )
)
谢谢,看来效果不错。我还需要多读一点,从Power BI的角度来理解它们之间的区别。我知道它们都做了什么,但只是知道它们的实际工作方式。基本的聚合函数,如
SUM
可以在幕后进行大量优化。使用SUMX
强制它实例化一个物理表,迭代每一行,并在每一行中运行IF
逻辑。即使没有幕后的优化,按照我写的方式,你只需要做一次切换逻辑。谢谢,这看起来很有效。我还需要多读一点,从Power BI的角度来理解它们之间的区别。我知道它们都做了什么,但只是知道它们的实际工作方式。基本的聚合函数,如SUM
可以在幕后进行大量优化。使用SUMX
强制它实例化一个物理表,迭代每一行,并在每一行中运行IF
逻辑。即使没有幕后优化,按照我写的方式,你只需要做一次切换逻辑。