【问题标题】:"Sparse" Rank in Business Objects XI Web Intelligence?Business Objects XI Web Intelligence 中的“稀疏”排名?
【发布时间】:2013-04-08 23:14:29
【问题描述】:

在 Business Objects XI Web Intelligence 中,Rank 函数返回密集的结果。例如,当按“金额”排名时,我只想返回前十名记录。然而,三项记录在“金额”上并列第五。结果一共 12 条记录:1 到 4 位和 6 到 10 位各 1 条,第 5 位 3 条记录。

期望的结果是“稀疏”的前十名,它丢弃了两个排名最低的记录(第 9 和第 10 名)。

【问题讨论】:

    标签: business-objects


    【解决方案1】:

    我尝试这样做并按数量对客户进行排名。

    我有 2 个对象:[Amount] 和 [Customernumber]。 [客户编号] 是数字。

    我创建了一个新变量:

    [varForSorting]=[Amount]*10000000+ToNumber([Customernumber])

    然后我按新变量 [varForSorting] 进行排名。

    相同金额的客户将按客户编号按字母顺序排序。我希望这会有所帮助。

    【讨论】:

    • 玛丽亚:谢谢。你的一般方法对我有用。我对其进行了一些调整,因为不幸的是,我唯一的客户标识符是一个包含字母数字数据的键,因此 ToNumber 在我的情况下不起作用。
    • 如果您的 Customernumber 是字母数字 - 您可以使用 Asc 函数将其转换为数字。例如:[VarNumericCustomerNumber]=Asc(Left([CustomerNumber];1)*1000+Asc(Substr([CustomerNumber];2;1))
    【解决方案2】:

    以下是我如何解决帐户计数随时间变化的示例。这种方法允许您使用数据提供者中的其他度量来打破密集的排名关系。基本上,您在一个排名中使用多个度量,并决定按第一、第二等排名的度量:

    第 1 步:确定变化量
    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];底部)

    第 5 步:过滤 v_Account_Count_Combined_Rank

    最终取决于您的数据,它仍然可能导致平局,除非您采取额外的步骤,通过其他可以转换为数字的独特属性进行排名(请参阅 Maria Ruchko 的回答,了解使用客户编号的那一点魔力)。我尝试使用 RowIndex() 和 LineNumber() 来做到这一点,但无法获得可用的结果。当我的度量加在一起时,碰巧永远不会绑定,所以这适用于我的特定数据块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      相关资源
      最近更新 更多