在spotfire

时间:2016-06-06 17:32:02

标签: subset tibco spotfire dense-rank

我正试图在spotfire中对我的数据子集进行排名。

假设我有一个包含以下6列的数据表:

Individual, City, Zip Code, State, Amount1,and Amount2

每个Individuals中有数千个唯一Zip Code,每个Zip Codes中有StateZip Codes。如何仅显示每个State中前5个SUM()的数据(由Amount1的{​​{1}}定义)?

总结操作的顺序;我想为每个Amount1总结Zip Code,然后在每个Zip Codes内按顺序排列State(仅为解释目的的中间步骤),最后,仅显示每个Zip Codes中的前5 State

我能想到的只是创建一个计算列,如果满足我的条件,将返回Zip Code,如果不满足,则返回NULL。我不认为它是最好的,但这是我开始使用的代码:

case  WHEN DenseRank(Sum(Sum([Amount1]) over [ZipCode]) over [State],"desc")<6 then [ZipCode] ELSE NULL END

任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

感谢评论中的澄清。

DenseRank(Sum([A1]) OVER ([ZipCode]),"desc",[State]) as [Rank]

上述功能会根据[ZipCode]列中[State]的金额SUM()对其[A1]进行排名。如果存在平局,DenseRank()将不会跳过排名。这意味着,如果您想避免这种情况,那么您的前5名[ZipCode]可能会超过5 Use Rank()

然后,您可以为过滤器面板创建一个计算列,或者只使用自定义表达式&#34;限制数据过滤它&#34;你的图表部分。

If([Rank] < 6,"Top 5", "Other")为[国家邮编排名]