2

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

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

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

每个都有数以千计的独特性Individuals,每个内部都有Zip Code许多。如何仅显示每个中前 5 名的数据(由of定义)?Zip CodesStateZip CodesStateSUM()Amount1

总结操作顺序;Amount1我想对每个进行总结Zip Code,然后Zip Codes在每个中按降序排列State(只是用于解释目的的中间步骤),最后,只显示每个中的前 5Zip CodesState

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

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

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

4

1 回答 1

1

感谢评论中的澄清。

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

上述功能将根据列中的金额在[ZipCode]其各自的范围内给出排名。如果有平局,将不会跳过排名数字。如果您想避免这种情况,则意味着您可以在前5 名中拥有超过 5 个。[State]SUM()[A1]DenseRank()[ZipCode]Use Rank()

然后,您可以为过滤器面板创建一个计算列,或者只是在图表的“使用自定义表达式限制数据”部分中对其进行过滤。

If([Rank] < 6,"Top 5", "Other")as [Zip Rank in State]

于 2016-06-06T20:22:28.373 回答