MDX随着时间的推移获得top3成员的平均值

时间:2014-02-20 14:05:31

标签: ssas mdx average query-performance

我正在尝试将计算的度量添加到我的多维数据集中。它应该计算特定成员的前3个孩子的平均分数(作为参数发送)。 我设法得到了正确的数字,但查询需要永远。

任何人都可以帮我改进吗? 这是MDX查询中的计算:

with member AVG_Score_Top3  
 AS Avg(
         Head(
               Order(
                 [OrganizationUnits].[OrganizationUnit Hierarchy].currentMember.children
                 ,score
                 ,BDESC
                )
                ,3
          )
          ,Score
       )
   select  AVG_Score_Top3 on 0,
   [Period].[Periods].[Month Name].members on 1
   from [MyCube]
   where ( [Period].[Year].&[2013],[OrganizationUnits].[OrganizationUnit Heirarchy].[Customer].&[6])

非常感谢高级

2 个答案:

答案 0 :(得分:1)

我会替换

Head(
     Order(
           [OrganizationUnits].[OrganizationUnit Heirarchy].currentMember.children
          ,score
          ,BDESC
          )
    ,3
    )

通过

TopCount(
          [OrganizationUnits].[OrganizationUnit Heirarchy].currentMember.children
         ,3
         ,score
        )

答案 1 :(得分:1)

是否可以删除WHERE子句并将轴(1)的内容替换为:

exists( [Period].[Periods].[Month Name].members,
        (   [Period].[Year].&[2013],
            [OrganizationUnits].[OrganizationUnit Heirarchy].[Customer].&[6]    ),
        'ScoreMeasureGroupName'
    )

并查看性能是否有所提高(如果结果相同,因为有时度量组会扩大范围)

菲利普,