So filtern Sie Daten mithilfe von Fensterfunktionen in spark
Ich habe folgende Daten:
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
Jetzt wollte ich die Daten so filtern, dass ich die Zeilen 6 und 7 entfernen kann, da ich für eine bestimmte UID nur eine Zeile mit dem Wert 'c' im Code behalten möchte.
So sollten die erwarteten Daten sein:
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
Ich benutze die Fensterfunktion in etwa so:
val window = Window.partitionBy("uid").orderBy("time")
val change = ((lag("code", 1).over(window) <=> "c")).cast("int")
Dies würde uns helfen, jede Zeile mit einem Code 'c' zu identifizieren. Kann ich dies erweitern, um Zeilen herauszufiltern, um die erwarteten Daten zu erhalte