Freigeben über


rangeBetween (Window)

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|
# +---+--------+---+