Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi DAX表达式的性能问题_Powerbi_Dax - Fatal编程技术网

Powerbi 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

在下面的DAX度量中,我的性能有一个很大的问题

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
逻辑。即使没有幕后优化,按照我写的方式,你只需要做一次切换逻辑。