rowsBetween (Fönster)

Skapar en WindowSpec med de definierade ramgränserna, från start (inkluderande) till end (inkluderande).

Både start och end är relativa positioner från den aktuella raden. Betyder till exempel 0 "aktuell rad", -1 innebär raden före den aktuella raden och 5 betyder den femte raden efter den aktuella raden.

En radbaserad gräns baseras på positionen för raden i partitionen. En förskjutning anger antalet rader ovanför eller under den aktuella raden där ramen startar eller slutar.

Syntax

Window.rowsBetween(start, end)

Parameters

Parameter Type Beskrivning
start int Gränsstart, inkluderande. Ramen är obundna om det här är , eller något värde som är Window.unboundedPrecedingmindre än eller lika med -9223372036854775808.
end int Gränsslut, inkluderande. Ramen är obundet om det här är , eller något värde som är Window.unboundedFollowingstörre än eller lika med 9223372036854775807.

Retur

WindowSpec

Notes

Använd Window.unboundedPreceding, Window.unboundedFollowingoch Window.currentRow för att ange särskilda gränsvärden i stället för att använda integralvärden direkt.

Exempel

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