Freigeben über


rowsBetween (Window)

Erstellt eine WindowSpec mit den definierten Rahmengrenzen von start (einschließlich) bis end (einschließlich).

Beide start und end sind relative Positionen aus der aktuellen Zeile. Bedeutet z 0 . B. "aktuelle Zeile", -1 bedeutet die Zeile vor der aktuellen Zeile und 5 bedeutet die fünfte Zeile hinter der aktuellen Zeile.

Eine zeilenbasierte Grenze basiert auf der Position der Zeile innerhalb der Partition. Ein Offset gibt die Anzahl der Zeilen oberhalb oder unterhalb der aktuellen Zeile an, in der der Frame beginnt oder endet.

Syntax

Window.rowsBetween(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 -9223372036854775808.
end int Begrenzungsende( einschließlich). Der Frame ist ungebunden, wenn dies Window.unboundedFollowingoder ein beliebiger Wert größer oder gleich ist 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 from the current row to current row + 1 in each category partition.
window = Window.partitionBy("category").orderBy("id").rowsBetween(Window.currentRow, 1)
df.withColumn("sum", sf.sum("id").over(window)).sort("id", "category", "sum").show()
# +---+--------+---+
# | id|category|sum|
# +---+--------+---+
# |  1|       a|  2|
# |  1|       a|  3|
# |  1|       b|  3|
# |  2|       a|  2|
# |  2|       b|  5|
# |  3|       b|  3|
# +---+--------+---+