Ssas 在使用除法对计算的度量值进行排序时,MDX中缺少秩值

Ssas 在使用除法对计算的度量值进行排序时,MDX中缺少秩值,ssas,mdx,ranking,reportbuilder,mdx-query,Ssas,Mdx,Ranking,Reportbuilder,Mdx Query,我们试图在报表生成器数据集中使用rank()函数对度量值进行排序,但当正在排序的计算度量值中包含除法时,它会随机跳过值。这与度量值相等然后进入下一个等级无关。我们知道RANK()函数就是这样工作的。例如,当被排名的度量值对每个成员都有唯一的值时,它将从第33、34位上升到第36位,总共跳过35位 没有任何数据集、表或分组被过滤或隐藏任何行,因此我们应该看到排名35。秩函数在使用加法、减法和乘法的度量上与预期一样有效,但在使用除法的所有排名上都会中断。跳过的值是随机的,对于不同的排名度量值,它们并

我们试图在报表生成器数据集中使用rank()函数对度量值进行排序,但当正在排序的计算度量值中包含除法时,它会随机跳过值。这与度量值相等然后进入下一个等级无关。我们知道RANK()函数就是这样工作的。例如,当被排名的度量值对每个成员都有唯一的值时,它将从第33、34位上升到第36位,总共跳过35位

没有任何数据集、表或分组被过滤或隐藏任何行,因此我们应该看到排名35。秩函数在使用加法、减法和乘法的度量上与预期一样有效,但在使用除法的所有排名上都会中断。跳过的值是随机的,对于不同的排名度量值,它们并不总是位于同一位置

我们还使用自定义报告代码在表本身中进行排名,划分也打破了这一点

以下是所用措施的一些示例:

销售目标达成指标

MEMBER [Measures].[SalesGoalAttainment] AS
IIF([Measures].[Sales_Target] is null,null,
([Measures].[Metric1_Sales_MTD] + [Measures].[Metric2_Sales_MTD] + ([Measures].[Metric3_Sales_MTD] *.5))
/ [Measures].[Sales_Target] )
销售目标达成程度排名

MEMBER [Measures].[SalesGoalAttainmentRank] AS
IIF( Measures].[SalesGoalAttainment] = null, null, 
RANK ([Regions and Stores].[Store Name].currentmember, [Regions and Stores].[Store Name].members, [Measures].[SalesGoalAttainment] ))
当我们取出“/[Measures].[Sales_Target]”部分进行排名时,效果很好


有没有人有一个解决方案,可以在不丢失秩值的情况下使用除法对度量值进行排序?或者这是某种已知的bug?

问题的原因是,Rank函数将一个成员与包含以下函数调用中的
ALL
成员的集合进行排序

RANK ([Regions and Stores].[Store Name].currentmember, [Regions and Stores].[Store Name].members, [Measures].[SalesGoalAttainment] )
[区域和存储].[Store Name]。成员
引用包含
所有
成员的整个层次结构。这可能会导致混淆,因为
ALL
成员通常不应该在要排序的成员列表中

解决方案是使用以下表达式通过引用不包含
ALL
成员的层次结构级别对成员进行排序

RANK ([Regions and Stores].[Store Name].currentmember, [Regions and Stores].[Store Name].[Store Name].members, [Measures].[SalesGoalAttainment] ))