如何根据重复值将列分组为多个部分?

时间:2018-05-29 16:21:20

标签: spotfire

我们说我有以下专栏A:

------
| A  |
------
| 11 |
------ 
| 0  |
------
| 0  |
------
| 5  |
------
| 0  |
------
| 0  |
------
| 2  |
------

我想要做的是创建一个新的列B,它唯一地标识一个特定的0组。所以像这样:

------------
| A  |  B  |
------------
| 11 | null|
------------
| 0  | 1   |
------------
| 0  | 1   |
------------
| 5  | null|
------------
| 0  | 2   |
------------
| 0  | 2   |
------------
| 2  | null|
------------

我需要这样做的原因是因为我需要获取最后一组数据(在这种情况下,它将是组' 2')。

这可以在Spotfire中使用吗?

1 个答案:

答案 0 :(得分:0)

你可以稍微分解一下。

1-计算行ID [ROW]

的列
RowId()

2-计算一列以确定给定行是否在0的组中(当前行= 0且前一行或下一行= 0)[IN GROUP?]

case  when ([A]=0) and ((First([A]) OVER (Previous([ROW]))=0) or (First([A]) OVER (next([ROW]))=0)) then True ELSE False END

3-计算一个列,该列累计计算不在组中的行[#NotInGroup]

Count(If(not [IN GROUP?],1)) OVER (AllPrevious([ROW]))

4-通过排名[#NotInGroup]计算你[B]列,其中[IN GROUP?] = TRUE

case  when [IN GROUP?] then DenseRank([#NotInGroup]) end