2016-01-26 104 views
-1

我有一些MDX查詢與計算成員相比,當我在SSMS中運行他們運行速度非常快。 但是,當我在cube中實現這些計算出的成員並運行它時,它非常緩慢。 這種行爲的任何想法?SSMS中MDX查詢與立方體性能計算成員

這是在SSMS運行平穩查詢,但是當我查詢從Excel或的Tableau立方體(對多維數據集相同的計算成員)

with member [Measures].[Sales BUM Avg 3Months] 
as 
    sum( 
     lastperiods(3, ancestor([Date].[Calendar].currentMember,[Date].  [Calendar].[Calendar Year Month])), [Measures].[Sales Month BUM] 
    ) 
    /
    count(
     nonempty(lastperiods(3, ancestor([Date].[Calendar].currentMember,[Date].[Calendar].[Calendar Year Month])), [Measures].[Sales Month BUM]) 
    )  

member [Measures].[CoverageSalesBUM] 
as 
    sum([Measures].[Unrestricted BUM]) 
/
    sum([Measures].[Sales BUM Avg 3Months]) 

select non empty { [Measures].[Unrestricted BUM] , [Measures].[Sales BUM Avg 3Months] } on 0 
,non empty([Date].[Calendar].[Calendar Date] , [Plant].[Plant].[Plant],[Material].[Material].[Material].[149249]) on 1 
from [InventCoverage] 
+1

也許嘗試創建多維數據集的計算的措施後,重建聚合。 –

+0

您可以發佈幾個示例MDX查詢以及您添加到多維數據集的相同調用嗎? – GregGalloway

回答

0

(更多代碼審查的需要永遠不是一個答案,因爲我對立方體腳本不太瞭解,所以不能評論你可能需要對立方體做什麼)

你是第一次計算而不是函數的重新發明Avg

另外在你的第二個計算爲什麼你需要申請Sum()?如果這是多維數據集中的聚合集合,則不需要明確說明Sum。顯然也Divide是一個相當最近推出的,也許稍微更有效

WITH 
    MEMBER [Measures].[Sales BUM Avg 3Months] AS 
    Avg 
    (
     LastPeriods 
     (3 
     ,Ancestor 
     (
      [Date].[Calendar].CurrentMember 
     ,[Date].[Calendar].[Calendar Year Month] 
     ) 
    ) 
    ,[Measures].[Sales Month BUM] 
    ) 
    MEMBER [Measures].[CoverageSalesBUM] AS 
    Divide 
    (
     [Measures].[Unrestricted BUM] 
    ,[Measures].[Sales BUM Avg 3Months] 
    ) 
SELECT 
    NON EMPTY 
    { 
     [Measures].[Unrestricted BUM] 
    ,[Measures].[Sales BUM Avg 3Months] 
    } ON 0 
,NON EMPTY 
    (
     [Date].[Calendar].[Calendar Date] 
    ,[Plant].[Plant].[Plant] 
    ,[Material].[Material].[Material].[149249] 
    ) ON 1 
FROM [InventCoverage];