在 spotfire 的数据子集中排名

Rank within subsets of data in spotfire

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

假设我有一个数据 table,其中包含以下 6 列:

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

每个 Zip Code 中有数以千计的唯一 Individuals,每个 State 中有许多 Zip Codes。我如何只显示每个 State 中前 5 个 Zip Codes 的数据(由 Amount1SUM() 定义)?

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

中的前 5 Zip Codes

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

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

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

感谢评论中的澄清。

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

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

然后,您可以为筛选器面板创建计算列,或仅在图表的 "Limit Data using Custom Expressions" 部分对其进行筛选。

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