在 Business Objects XI Web Intelligence 中,Rank 函数返回密集的结果。例如,当按“金额”排名时,我只想返回前十名记录。然而,三项记录在“金额”上并列第五。结果一共12条记录:1至4位和6至10位各1条,第5位各3条。
期望的结果是“稀疏”的前十名,其中两个排名最低的记录(第 9 位和第 10 位)下降。
在 Business Objects XI Web Intelligence 中,Rank 函数返回密集的结果。例如,当按“金额”排名时,我只想返回前十名记录。然而,三项记录在“金额”上并列第五。结果一共12条记录:1至4位和6至10位各1条,第5位各3条。
期望的结果是“稀疏”的前十名,其中两个排名最低的记录(第 9 位和第 10 位)下降。
我试图这样做并按数量对客户进行排名。
我有 2 个对象:[Amount] 和 [Customernumber]。[客户编号] 是数字。
我创建了一个新变量:
[varForSorting]=[Amount]*10000000+ToNumber([Customernumber])
然后我按新变量 [varForSorting] 进行排名。
相同金额的客户将按客户编号按字母顺序排序。我希望这有帮助。
这是一个示例,说明我如何解决帐户数量随时间变化的问题。这种方法允许您使用数据提供者中的其他度量来打破密集的排名关系。基本上,您在一个等级中使用多个度量,并决定按第一、第二等排列哪个度量:
第一步:确定变化量
v_Account_Count_Delta_Amount
=([v_Account_Count_After] - [v_Account_Count_Before])
第 2 步:对变化量进行排名(这就是关系和密集排名导致返回多行的地方)
v_Account_Count_Delta_Amount_Rank
=NoFilter(Rank([v_Account_Count_Delta_Amount]))
第 3 步:使用其他度量计算平局排名
v_MonthToDateMeasuresRank
=NoFilter(Rank([Month To Date Sva]+ [Bank Share Balance] + [Total Commitment]))
第 4 步:计算现在没有平局的组合排名并加权您的排名,但您选择
v_Account_Count_Combined_Rank
=Rank([v_Account_Count_Delta_Amount_Rank]* 1000000 + [v_MonthToDateMeasuresRank];Bottom)
第 5 步:过滤 v_Account_Count_Combined_Rank <= 10 的数据块
最终,根据您的数据,它仍然可能导致平局,除非您采取额外的步骤,通过其他可以转换为数字的独特属性进行排名(请参阅 Maria Ruchko 的回答,了解使用客户编号的那一点魔法)。我尝试使用 RowIndex() 和 LineNumber() 来做到这一点,但无法获得可用的结果。当我的度量加在一起时,碰巧永远不会绑定,所以这适用于我的特定数据块。