Optimization DAX:SSAS 2012表格模型中的优化措施

Optimization DAX:SSAS 2012表格模型中的优化措施,optimization,dax,division,measure,Optimization,Dax,Division,Measure,-我使用SSAS 2012 SP4表格版本。 多维数据集包含2个事实表,每个事实表使用相同的维度表(=7个维度表)。 两个事实表之间没有定义关系 -Fact2表中设置了以下措施: Measure1 := IF ( SUM ( Fact1[ColumnA] ) = 0, BLANK (), IF ( SUM ( Fact2[ColumnB] ) > 0, SUM ( Fact1[ColumnA] ) / SUM ( Fact2[Colu

-我使用SSAS 2012 SP4表格版本。 多维数据集包含2个事实表,每个事实表使用相同的维度表(=7个维度表)。 两个事实表之间没有定义关系

-Fact2表中设置了以下措施:

Measure1 :=
IF (
    SUM ( Fact1[ColumnA] ) = 0,
    BLANK (),
    IF (
        SUM ( Fact2[ColumnB] ) > 0,
        SUM ( Fact1[ColumnA] ) / SUM ( Fact2[ColumnB] ),
        99
    )
)
当我显示此度量值和几个属性时,我的Excel报告很长,无法刷新

-当我激活探查器跟踪时,我可以看到在公式引擎中花费的时间是80%。 我尝试使用函数DIVIDE()重写查询,如下所示:

Measure1 := DIVIDE(sum(Fact1[ColumnA])/sum(Fact2[ColumnB]),99)
在这种情况下,报告速度更快,查询持续时间更好。但是由于我已经删除了IF函数,我不再检查“IF sum(Fact1[ColumnA])=0”

可以重构此DAX公式以提高性能。并保持检查“如果总和(Fact1[ColumnA])=0,则为空()

非常感谢你的帮助 当然,试试这个:

Measure 1 :=
VAR SUMA =
    SUM ( 'Fact1'[ColumnA] )
VAR SUMB =
    SUM ( 'Fact2'[ColumnB] )
VAR QUOT =
    DIVIDE ( SUM ( 'Fact1'[ColumnA] ), SUM ( 'Fact2'[ColumnB] ) )
RETURN
    SWITCH ( TRUE (), SUMA = 0, BLANK (), SUMB > 0, QUOT, 99 )
Measure1 :=
SWITCH (
    TRUE (),
    SUM ( 'Fact1'[ColumnA] ) = 0, BLANK (),
    SUM ( 'Fact2'[ColumnB] ) > 0, DIVIDE ( SUM ( 'Fact1'[ColumnA] ), SUM ( 'Fact2'[ColumnB] ) ),
    99
)
如果无法在度量中使用变量,请尝试以下方法:

Measure 1 :=
VAR SUMA =
    SUM ( 'Fact1'[ColumnA] )
VAR SUMB =
    SUM ( 'Fact2'[ColumnB] )
VAR QUOT =
    DIVIDE ( SUM ( 'Fact1'[ColumnA] ), SUM ( 'Fact2'[ColumnB] ) )
RETURN
    SWITCH ( TRUE (), SUMA = 0, BLANK (), SUMB > 0, QUOT, 99 )
Measure1 :=
SWITCH (
    TRUE (),
    SUM ( 'Fact1'[ColumnA] ) = 0, BLANK (),
    SUM ( 'Fact2'[ColumnB] ) > 0, DIVIDE ( SUM ( 'Fact1'[ColumnA] ), SUM ( 'Fact2'[ColumnB] ) ),
    99
)
另一种方法是创建计算列,如下所示:

result := DIVIDE ( SUM ( 'Fact1'[ColumnA] ), SUM ( 'Fact2'[ColumnB] )
)
然后,针对它写一个度量,如下所示:

Measure1 :=
SWITCH ( TRUE (), [result] = 0, BLANK (), [result] > 0, [result], 99 )
我还没有测试过这两个,所以我不确定它们的性能如何


希望有帮助

好的。但我使用SSAS 2012,我认为它不支持DAX中的VAR变量。这是2016年SSAS发布的。好吧,让我来做一些adjustments@ema请看我的编辑,我误读了原来的措施,我道歉。谢谢。它返回与初始查询相同的结果。但持续时间是相似的。每次我在Excel中选择新日期时,刷新时间都在18秒到51秒之间。你认为可以进行其他重写吗?因为除法函数非常快,我不知道直接将条件应用于除法结果是否更有效?类似于:result=DIVIDE(SUM('Fact1'[ColumnA]),SUM('Fact2'[ColumnB])。如果结果为0,则为空;如果结果为空,则为99,否则为空