Ssas MDX获取一段时间内前三名成员的平均值
我正在尝试向多维数据集中添加一个经过计算的度量值。它应该计算特定成员(作为参数发送)前三名子成员的平均分数。 我设法找到了正确的号码,但查询要花很长时间 谁能帮我改进一下吗? 以下是MDX查询中的计算:Ssas MDX获取一段时间内前三名成员的平均值,ssas,mdx,average,query-performance,Ssas,Mdx,Average,Query Performance,我正在尝试向多维数据集中添加一个经过计算的度量值。它应该计算特定成员(作为参数发送)前三名子成员的平均分数。 我设法找到了正确的号码,但查询要花很长时间 谁能帮我改进一下吗? 以下是MDX查询中的计算: with member AVG_Score_Top3 AS Avg( Head( Order( [OrganizationUnits].[OrganizationUnit Hierarchy].current
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])
非常感谢您在advanced中的帮助,我将替换您
Head(
Order(
[OrganizationUnits].[OrganizationUnit Heirarchy].currentMember.children
,score
,BDESC
)
,3
)
借
您是否可以删除WHERE子句并将axis(1)的内容替换为: 看看性能是否有所改善(如果结果相同,因为有时度量组会扩大范围)
Philip,事实上,我从TOPCOUNT开始的时候比我写的要慢。分数的定义是什么?也许这是主要的性能杀手?我会在许多其他不同的计算中使用分数度量。我的假设是,问题是围绕顺序函数的,所描述的查询是您的实际语句,并且速度很慢,还是实际语句比显示的更复杂?我不希望一个单一订单或Topcount的查询会“永远持续”。是的。这正是问题所在。我曾尝试将成员的顺序声明为set,并在该集合上运行avg,这大大提高了性能。但是这个数字出现了错误-没有正确计算所有日期我只是在AdventureWorks上运行了以下内容,而且速度很快(一秒钟):
会员平均销售额Top3为平均值(TopCount([Customer].[Customer Geography].CurrentMember.Children,3,[Measures].[Internet Sales Amount]),[Measures].[Internet Sales Amount])在0上选择{AVG_Sales_Top3},在[Adventure Works]的[Customer].[Customer Geography].[State Province].[CA].[US]
上选择子代([Date].[Calendar].[Calendar Year].[2006],[Date].[Calendar].[Month]),在[Adventure Works的[Customer].[State Geography].[CA].[US].[US].上选择1原因。
TopCount(
[OrganizationUnits].[OrganizationUnit Heirarchy].currentMember.children
,3
,score
)
exists( [Period].[Periods].[Month Name].members,
( [Period].[Year].&[2013],
[OrganizationUnits].[OrganizationUnit Heirarchy].[Customer].&[6] ),
'ScoreMeasureGroupName'
)