DAX测量TOTALMTD运行缓慢

时间:2017-01-24 11:51:25

标签: performance dax

我的表格立方体中有两个度量。

第一个叫

'Number of Days' := CALCULATE(COUNTROWS(SUMMARIZE('A'[Date])))

第二个将包括第一个作为其表达式

'Number of Days (MTD)' := CALCULATE(TOTALMTD([Number of Days],'A'[Date]))

当我浏览多维数据集并拉出度量时的第二个度量。 它的速度非常慢。

我知道如何优化这些测量并使其运行得更快吗?

Sample Data

Volume:= SUMX(A, DIVIDE([Volume],2))

Volume (MTD):= TOTALMTD([Volume],'A'[Date])

更新额外测量值

1 个答案:

答案 0 :(得分:1)

最佳做法应该是创建日历/日期表并使用TOTALMTD时间智能功能。但是,如果您的模型没有包含日期​​表,则可以使用此方法。

第一项措施,天数:

1.0f

累积量度:

Num of Days := DISTINCTCOUNT(A[Date])

更新:添加了屏幕截图。

enter image description here

更新2:您似乎需要计算累计总数,在这种情况下,只需使用以下表达式进行第二项衡量:

Num of days (MTD) :=
CALCULATE (
    [Num of Days],
    FILTER (
        ALL ( A ),
        [Date] <= MAX ( A[Date] )
            && MONTH ( [Date] ) = MONTH ( MAX ( [Date] ) )
            && YEAR ( [Date] ) = YEAR ( MAX ( [Date] ) )
    )
)

更新3:使用SUMX和DISTINCT来计算不同的日期。

用以下内容替换第一项措施:

Num of days (MTD) :=
CALCULATE ( [Num of Days], FILTER ( ALL ( A ), [Date] <= MAX ( A[Date] ) ) )
  

此解决方案可能比使用COUNTROWS + SUMMARIZE更高效,   但是它可能会非常慢,具体取决于行数和数量   机器在哪里运行。

如果有帮助,请告诉我。