Condividi tramite


rowsBetween (Window)

Crea un WindowSpec oggetto con i limiti dei fotogrammi definiti, da start (inclusivo) a end (inclusivo).

Sia start che end sono posizioni relative dalla riga corrente. Ad esempio, 0 significa "riga corrente", -1 indica la riga prima della riga corrente e 5 indica la quinta riga dopo la riga corrente.

Un limite basato su righe si basa sulla posizione della riga all'interno della partizione. Un offset indica il numero di righe sopra o sotto la riga corrente in cui inizia o termina il frame.

Sintassi

Window.rowsBetween(start, end)

Parametri

Parametro Tipo Descrizione
start int Inizio limite, inclusivo. Il frame non è associato se è Window.unboundedPrecedingo qualsiasi valore minore o uguale a -9223372036854775808.
end int Fine limite, inclusivo. Il frame non è associato se è Window.unboundedFollowingo qualsiasi valore maggiore o uguale a 9223372036854775807.

Restituzioni

WindowSpec

Note

Usare Window.unboundedPreceding, Window.unboundedFollowinge Window.currentRow per specificare valori limite speciali anziché usare direttamente i valori integrali.

Examples

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