rangeBetween (Fenêtre)

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

Les deux start sont end relatifs à partir de la ligne actuelle. Par exemple, 0 signifie « ligne actuelle », -1 signifie un avant la ligne actuelle, et 5 signifie cinq après la ligne actuelle.

Une limite basée sur une plage est basée sur la valeur réelle de la ORDER BY ou des expressions. Un décalage modifie la valeur de l’expression ORDER BY ( par exemple, si la valeur actuelle ORDER BY est 10 et que le décalage de limite inférieure est -3, la limite inférieure résultante est 7. En raison de cela, les images basées sur des plages nécessitent exactement une ORDER BY expression avec un type de données numérique, sauf si le décalage n’est pas lié.

Syntaxe

Window.rangeBetween(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 à max(-sys.maxsize, -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 à min(sys.maxsize, 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 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|
# +---+--------+---+