rangeBetween (Ventana)

Crea un WindowSpec objeto con los límites de marco definidos, de start (ambos incluidos) a end (inclusivos).

Ambos start y end son relativos de la fila actual. Por ejemplo, 0 significa "fila actual", -1 significa uno antes de la fila actual y 5 significa cinco después de la fila actual.

Un límite basado en intervalos se basa en el valor real de las ORDER BY expresiones. Un desplazamiento modifica el valor de la ORDER BY expresión ; por ejemplo, si el valor actual ORDER BY es 10 y el desplazamiento de límite inferior es -3, el límite inferior resultante es 7. Por este motivo, los fotogramas basados en intervalo requieren exactamente una ORDER BY expresión con un tipo de datos numérico, a menos que el desplazamiento no esté enlazado.

Sintaxis

Window.rangeBetween(start, end)

Parámetros

Parámetro Tipo Descripción
start int Inicio de límite, inclusivo. El marco no está enlazado si es Window.unboundedPreceding, o cualquier valor menor o igual que max(-sys.maxsize, -9223372036854775808).
end int Fin del límite, inclusivo. El marco no está enlazado si es Window.unboundedFollowing, o cualquier valor mayor o igual que min(sys.maxsize, 9223372036854775807).

Devoluciones

WindowSpec

Notas

Use Window.unboundedPreceding, Window.unboundedFollowingy Window.currentRow para especificar valores de límite especiales en lugar de usar valores enteros directamente.

Ejemplos

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