Ich muss eine Spalte mit einer Gruppennummer erstellen, die basierend auf den Werten in der Spalte TRUE inkrementiert. Ich kann nach ID partitionieren, also denke ich, dass dies das Inkrement zurücksetzen würde, wenn sich die ID ändert, was ich tun möchte. Innerhalb der ID möchte ich die Gruppennummer immer dann erhöhen, wenn TRUE ungleich 1 ist. Wenn TRUE = 1, möchte ich, dass die Nummer die gleiche wie die letzte bleibt. Dies ist eine Teilmenge meiner aktuellen ID- und TRUE-Spalten, und GROUP wird wie gewünscht angezeigt. Ich habe auch Spalten LATITUDE und LONGITUDE, die ich in meiner Art verwende.Kumulative Summe einer Partition in PySpark
ID TRUE GROUP
3828 0 1
3828 0 2
3828 1 2
3828 1 2
3828 1 2
4529 0 1
4529 1 1
4529 0 2
4529 1 2
4529 0 3
4529 0 4
4529 1 4
4529 0 5
4529 1 5
4529 1 5
Ich hatte gehofft, so etwas wie unten zu tun, aber das gibt mir alle 0s
trip.registerTempTable("trip_temp")
trip2 = sqlContext.sql('select *, sum(cast(TRUE = 0 as int)) over(partition by ID order by ID, LATITUDE, LONGITUDE) as GROUP from trip_temp')
Mögliche Duplikat von [Wie kumulative Summe berechnen mit SqlContext] (http://stackoverflow.com/questions/34726268/how-to-calculate-cumulative-sum-using-sqlcontext) – muon