Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erstellt eine WindowSpec mit den definierten Rahmengrenzen von start (einschließlich) bis end (einschließlich).
Beide start und end sind relativ aus der aktuellen Zeile. Bedeutet z. B 0 . "aktuelle Zeile", -1 eine vor der aktuellen Zeile und 5 bedeutet fünf nach der aktuellen Zeile.
Eine bereichsbasierte Grenze basiert auf dem tatsächlichen Wert des ORDER BY Ausdrucks(en). Ein Offset ändert den Wert des ORDER BY Ausdrucks , z. B. wenn der aktuelle ORDER BY Wert ist 10 und der untere Begrenzungssatz ist -3, ist 7die resultierende untere Grenze . Aus diesem Grund benötigen bereichsbasierte Frames genau einen ORDER BY Ausdruck mit einem numerischen Datentyp, es sei denn, der Offset ist ungebunden.
Syntax
Window.rangeBetween(start, end)
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
start |
int | Begrenzungsanfang( einschließlich). Der Frame ist ungebunden, wenn dies Window.unboundedPrecedingoder ein beliebiger Wert kleiner als oder gleich ist max(-sys.maxsize, -9223372036854775808). |
end |
int | Begrenzungsende( einschließlich). Der Frame ist ungebunden, wenn dies Window.unboundedFollowingoder ein beliebiger Wert größer oder gleich ist min(sys.maxsize, 9223372036854775807). |
Rückkehr
WindowSpec
Hinweise
Verwenden Sie , Window.unboundedPrecedingund Window.unboundedFollowing geben Sie Window.currentRowspezielle Grenzwerte anstelle von integralen Werten direkt an.
Beispiele
from pyspark.sql import Window, functions as sf
df = spark.createDataFrame(
[(1, "a"), (1, "a"), (2, "a"), (1, "b"), (2, "b"), (3, "b")], ["id", "category"])
# Calculate the sum of id where the id value falls within [current id, current id + 1]
# in each category partition.
window = Window.partitionBy("category").orderBy("id").rangeBetween(Window.currentRow, 1)
df.withColumn("sum", sf.sum("id").over(window)).sort("id", "category").show()
# +---+--------+---+
# | id|category|sum|
# +---+--------+---+
# | 1| a| 4|
# | 1| a| 4|
# | 1| b| 3|
# | 2| a| 2|
# | 2| b| 5|
# | 3| b| 3|
# +---+--------+---+