我正试图在spotfire中对我的数据子集进行排名。
假设我有一个包含以下6列的数据表:
Individual, City, Zip Code, State, Amount1,and Amount2
。
每个Individuals
中有数千个唯一Zip Code
,每个Zip Codes
中有State
个Zip 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
任何帮助都会很棒。谢谢!
答案 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")
为[国家邮编排名]