Es ist möglich, die Zeilen im DataFrame mithilfe der Fensterfunktion zu partitionieren. Es ist in der erhältlich PYSPARK.sql.Fenster Modul.
Syntax:
DataFrame_OBJ.WithColumn ("lag_column", lag ("Spalte", Offset).über (Partition))Es dauert zwei Parameter:
Schritte:
Syntax:
Partition = Fenster.partitionby ("Spalte").OrderBy ("Spalte")Wir können die partitionierten Daten mit der partitionierten Spalte oder einer anderen Spalte bestellen.
Jetzt können Sie die LAG () -Funktion auf den partitionierten Zeilen verwenden, indem Sie die über() Funktion.
Wir fügen eine Spalte hinzu, um die Zeilennummer mit dem zu speichern with column () Funktion.
Syntax:
DataFrame_OBJ.WithColumn ("lag_column", lag ("Spalte", Offset).über (Partition))Hier gibt der Name den Zeilennamen an und der DataFrame_OBJ ist unser PYSPARK -Datenrahmen.
Lassen Sie uns den Code implementieren.
Beispiel 1:
Hier erstellen wir einen pyspark -Datenrahmen mit 5 Spalten - ['Subjekt_ID', 'Name', 'Age', 'Technology1', 'Technology2'] mit 10 Zeilen und Partition der Zeilen basierend auf Technologie1 Verwenden der Fensterfunktion. Danach verzögern wir 1 Reihe.
pysspark importierenAusgang:
Erläuterung:
In der ersten Ausgabe repräsentiert die tatsächlichen Daten im Datenrahmen. In der zweiten Ausgabe erfolgt die Partition basierend auf dem Technologie1 Spalte.
Die Gesamtzahl der Partitionen beträgt 4.
Partition 1:
Der .Das Netz trat zweimal in der ersten Partition auf. Da wir den Verlierer als 1 angegeben haben, die erste .Nettowert ist null und der nächste .Der Nettowert ist der vorherige Zeilen -Subjekt_ID -Wert - 46.
Partition 2:
Hadoop ereignete sich einmal in der zweiten Partition. Lag ist also null.
Partition 3:
Oracle trat viermal in der Dritten Partition auf.
Für das erste Orakel ist Lag null.
Für das zweite Orakel beträgt der Verzögerungswert 4 (da der vorherige Zeilenwert 4 beträgt 4).
Für das dritte Orakel beträgt der Verzögerungswert 4 (da der vorherige Zeilenwert 4 beträgt 4).
Für das vierte Orakel beträgt der Verzögerungswert 12 (da der Wert der vorherigen Zeile beträgt.
Partition 4:
PHP trat dreimal in der vierten Partition auf.
Der Verzögerungswert für den 1. PHP ist null.
Der Verzögerungswert für den 2. PHP beträgt 4 (da der vorherige Zeilenwert 4 beträgt 4).
Der Verzögerungswert für den 3. PHP beträgt 4 (da der vorherige Zeilenwert 4 beträgt 4).
Beispiel 2:
Verzögern Sie die Reihen um 2. Stellen Sie sicher, dass Sie den PYSPark -Datenfreame erstellt haben, wie in Beispiel 1 zu sehen.
# Importieren Sie die FensterfunktionAusgang:
Erläuterung:
Die Partition basiert auf dem Technologie1 Spalte. Die Gesamtzahl der Partitionen beträgt 4.
Partition 1:
Der .Das Netz trat zweimal in der ersten Partition auf. Da wir den Lag-Offset als 2 angegeben haben, ist der Offset für beide Werte null.
Partition 2:
Hadoop ereignete sich einmal in der zweiten Partition. Lag ist also null.
Partition 3:
Oracle trat viermal in der Dritten Partition auf.
Für das erste und zweite Orakel ist Lag null.
Für das dritte Orakel beträgt der Verzögerungswert 4 (da die vorherigen 2 Zeilen der Subjekt_ID 4 sind).
Für das vierte Orakel beträgt der Verzögerungswert 4 (da die vorherigen 2 Zeilen der Subjekt_ID 4 sind).
Partition 4:
PHP trat dreimal in der vierten Partition auf.
Der Verzögerungswert für den 1. und 2. PHP ist null.
Der Verzögerungswert für den 3. PHP beträgt 4 (da der vorherige Wert der letzten 2 Zeilen 4 beträgt 4).
Beispiel 3:
Verzögern Sie die Zeilen um 2 basierend auf der Altersspalte. Stellen Sie sicher, dass Sie den PYSPark -Datenfreame erstellt haben, wie in Beispiel 1 zu sehen.
# Importieren Sie die FensterfunktionAusgang:
Erläuterung:
Die Partition basiert auf dem Technologie1 Spalte und Verzögerung werden basierend auf der Altersspalte definiert. Die Gesamtzahl der Partitionen beträgt 4.
Partition 1:
Der .Das Netz trat zweimal in der ersten Partition auf. Da wir den Lag-Offset als 2 angegeben haben, ist der Offset für beide Werte null.
Partition 2:
Hadoop ereignete sich einmal in der zweiten Partition. Lag ist also null.
Partition 3:
Oracle trat viermal in der Dritten Partition auf.
Für das erste und zweite Orakel ist Lag null.
Für das dritte Orakel beträgt der Verzögerungswert 21 (der Alterswert aus den beiden vorherigen Zeilen beträgt 21).
Für das vierte Orakel beträgt der Verzögerungswert 22 (der Alterswert aus den beiden vorherigen Zeilen beträgt 22).
Partition 4:
PHP trat dreimal in der vierten Partition auf.
Der Verzögerungswert für den 1. und 2. PHP ist null.
Der Verzögerungswert für den 3. HP beträgt 21 (der Alterswert aus den beiden vorherigen Zeilen beträgt 21).
Abschluss
Wir haben gelernt, wie man die LAG -Werte im PYSPARK -Datenframe in partitionierten Zeilen bekommt. Die LAG () -Funktion in pySpark ist im Fenstermodul verfügbar, mit dem die vorherigen Zeilenwerte an die aktuellen Zeilen zurückgegeben werden können. Wir haben die verschiedenen Beispiele gelernt, indem wir die verschiedenen Offsets festgelegt haben.