Используйте лаг в spark sql в регистре - PullRequest
0 голосов
/ 18 января 2019

У меня есть таблица, как показано ниже

enter image description here

Я хочу добавить столбец seq_group справа на основе значения stay в каждой группе Item.

enter image description here

Для каждой группы элементов seq_group начинается с 0, а когда seq_group > 8600 устанавливается как предыдущая строка seq_group + 1, предложение else будет означать, что установлена ​​предыдущая строка seq_group.

Я реализовал это в spark sql, как показано ниже.

select 
Item,
Stay,
case when Stay > 8600
then lag(seq_group,1) over (partition by Item order by ts) + 1
else lag(seq_group,1) over (partition by Item order by ts)
end as seq_group
from tableA

и в настоящее время получает результат, как показано ниже

enter image description here

Любые указатели, которые могут это исправить, очень помогли бы

1 Ответ

0 голосов
/ 18 января 2019

Это может быть достигнуто с помощью промежуточной суммы.

select Item,
       Stay,
       sum(case when Stay > 8600 then 1 else 0 end) over(partition by item order by ts) as seq_group
from tableA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...