Как сгруппировать столбец в разделы на основе повторяющихся значений? - PullRequest
0 голосов
/ 29 мая 2018

Допустим, у меня есть следующий столбец 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 голосов
/ 31 мая 2018

Вы можете немного разбить это на части.

1- Рассчитать столбец для идентификатора строки [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- Вычислите свой [B] столбец по рейтингу [#NotInGroup], где [IN GROUP?] = TRUE

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