rangeBetween (Jendela)

Membuat dengan batas bingkai yang WindowSpec ditentukan, dari start (inklusif) hingga end (inklusif).

Keduanya start dan end relatif dari baris saat ini. Misalnya, 0 berarti "baris saat ini", -1 berarti satu sebelum baris saat ini, dan 5 berarti lima setelah baris saat ini.

Batas berbasis rentang didasarkan pada nilai ORDER BY aktual ekspresi. Offset mengubah nilai ORDER BY ekspresi — misalnya, jika nilai saat ini ORDER BY adalah 10 dan offset terikat yang lebih rendah adalah -3, batas bawah yang dihasilkan adalah 7. Karena itu, bingkai berbasis rentang memerlukan tepat satu ORDER BY ekspresi dengan jenis data numerik, kecuali offset tidak terbatas.

Sintaksis

Window.rangeBetween(start, end)

Parameter-parameternya

Parameter Tipe Deskripsi
start int Mulai batas, inklusif. Bingkai tidak terbatas jika ini adalah Window.unboundedPreceding, atau nilai apa pun yang kurang dari atau sama dengan max(-sys.maxsize, -9223372036854775808).
end int Batas akhir, inklusif. Bingkai tidak terbatas jika ini adalah Window.unboundedFollowing, atau nilai apa pun yang lebih besar dari atau sama dengan min(sys.maxsize, 9223372036854775807).

Pengembalian Barang

WindowSpec

Catatan

Gunakan Window.unboundedPreceding, Window.unboundedFollowing, dan Window.currentRow untuk menentukan nilai batas khusus daripada menggunakan nilai integral secara langsung.

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