rowsBetween (Fenêtre)

Crée un WindowSpec avec les limites de trame définies, de start (inclusive) à end (inclusive).

Les deux start sont des end positions relatives de la ligne actuelle. Par exemple, 0 signifie « ligne actuelle », -1 signifie la ligne avant la ligne actuelle, et 5 signifie la cinquième ligne après la ligne active.

Une limite basée sur les lignes est basée sur la position de la ligne dans la partition. Un décalage indique le nombre de lignes au-dessus ou en dessous de la ligne actuelle où le frame démarre ou se termine.

Syntaxe

Window.rowsBetween(start, end)

Paramètres

Paramètre Type Description
start int Début de limite, inclus. Le frame est non lié s’il s’agit Window.unboundedPrecedingd’une valeur inférieure ou égale à -9223372036854775808.
end int Fin de la limite, inclusive. Le frame est non lié s’il s’agit Window.unboundedFollowingd’une valeur supérieure ou égale à 9223372036854775807.

Retours

WindowSpec

Remarques

Utilisez Window.unboundedPreceding, Window.unboundedFollowinget Window.currentRow spécifiez des valeurs de limites spéciales plutôt que d’utiliser directement des valeurs intégrales.

Exemples

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