2016-01-26 46 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];