Como filtrar dados usando funções de janela no spark
Eu tenho os seguintes dados:
rowid uid time code
1 1 5 a
2 1 6 b
3 1 7 c
4 2 8 a
5 2 9 c
6 2 9 c
7 2 10 c
8 2 11 a
9 2 12 c
Agora eu queria filtrar os dados de forma que eu possa remover as linhas 6 e 7. Para um uid específico, eu quero manter apenas uma linha com o valor 'c' no código
Portanto, os dados esperados devem ser:
rowid uid time code
1 1 5 a
2 1 6 b
3 1 7 c
4 2 8 a
5 2 9 c
8 2 11 a
9 2 12 c
Eu estou usando a função de janela algo como isto:
val window = Window.partitionBy("uid").orderBy("time")
val change = ((lag("code", 1).over(window) <=> "c")).cast("int")
Isso nos ajudaria a identificar cada linha com um código 'c'. Posso estender isso para filtrar linhas para obter os dados esperados