0

我们正在尝试使用 Report Builder 数据集中的 RANK() 函数对度量进行排名,但是当被排名的计算度量中有除数时,它会随机跳过值。这与度量值相等然后进入下一个等级无关。我们知道这就是 RANK() 函数的工作原理。例如,当排名的度量对每个成员具有唯一值时,它将从排名 33、34 到 36,完全跳过 35。

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

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

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

销售目标达成指标

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]”部分时,它工作正常。

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

4

1 回答 1

-1

问题的原因是 Rank 函数根据包含ALL以下函数调用中的成员的集合对成员进行排名

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

[Regions and Stores].[Store Name].members对包含该ALL成员的整个层次结构的引用。这可能会导致混淆,因为该ALL成员通常不应该出现在要排名的成员列表中。

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

RANK ([Regions and Stores].[Store Name].currentmember, [Regions and Stores].[Store Name].[Store Name].members, [Measures].[SalesGoalAttainment] ))
于 2021-03-05T21:47:23.697 回答