MDX 获取一段时间内 top3 成员的平均值



我正在尝试向我的多维数据集添加计算度量值。它应该计算特定成员的前 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])

非常感谢您提前

我会替换

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

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

您能否删除 WHERE 子句并将 axis(1) 的内容替换为:

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

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

菲利普

最新更新