rangeBetween (Pencere)

(dahil) ile WindowSpec (dahil) start arasında tanımlanan çerçeve sınırlarıyla bir end oluşturur.

Hem hem de startend geçerli satırdan görelidir. Örneğin, 0 "geçerli satır" anlamına gelir, -1 geçerli satırdan önce bir satır ve 5 geçerli satırdan sonra beş anlamına gelir.

Aralık tabanlı sınır, ifadelerin gerçek değerini ORDER BY temel alır. Uzaklık, ifadenin ORDER BY değerini değiştirir; örneğin, geçerli ORDER BY değer 10 ve alt sınır uzaklığı ise -3, sonuçta elde edilen alt sınır olur 7. Bu nedenle, uzaklık ilişkisiz olmadığı sürece aralık tabanlı çerçeveler sayısal veri türüne sahip tam olarak ORDER BY bir ifade gerektirir.

Sözdizimi

Window.rangeBetween(start, end)

Parametreler

Parametre Türü Açıklama
start Int Sınır başlangıcı, dahil. Bu ise, çerçeve ilişkisizdir Window.unboundedPrecedingveya değerinden küçük veya buna eşit herhangi bir değerdir max(-sys.maxsize, -9223372036854775808).
end Int Sınır ucu, dahil. Bu ise çerçeve ilişkisizdir Window.unboundedFollowingveya değerinden büyük veya buna eşit herhangi bir değerdir min(sys.maxsize, 9223372036854775807).

İadeler

WindowSpec

Notlar

Tam sayı değerlerini doğrudan kullanmak yerine özel sınır değerleri belirtmek için , Window.unboundedPrecedingve Window.unboundedFollowing kullanınWindow.currentRow.

Örnekler

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