Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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|
# +---+--------+---+