Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DataFrame'lerde pencere tanımlamaya yönelik yardımcı program işlevleri.
Spark Connect'i destekler
Class öznitelikleri
| Özellik | Açıklama |
|---|---|
unboundedPreceding |
İlişkisiz pencere çerçevesinin başlangıcını temsil eden sınır değeri. |
unboundedFollowing |
İlişkisiz pencere çerçevesinin sonunu temsil eden sınır değeri. |
currentRow |
Pencere çerçevesindeki geçerli satırı temsil eden sınır değeri. |
Methods
| Yöntem | Açıklama |
|---|---|
orderBy(*cols) |
Tanımlanan sıralamayla bir WindowSpec oluşturur. |
partitionBy(*cols) |
Bölümleme tanımlı bir WindowSpec oluşturur. |
rangeBetween(start, end) |
Geçerli satırın start değerinden aralık tabanlı uzaklıkları kullanarak çerçeve sınırları (dahil) ile end (dahil) ORDER BY arasında tanımlanmış bir WindowSpec oluşturur. |
rowsBetween(start, end) |
Geçerli satırdan satır tabanlı uzaklıkları kullanarak çerçeve sınırları (dahil) ile start (dahil) end arasında tanımlanmış bir WindowSpec oluşturur. |
Notlar
Sıralama tanımlanmadığında, varsayılan olarak ilişkisiz bir pencere çerçevesi (rowFrame, unboundedPreceding, unboundedFollowing) kullanılır. Sıralama tanımlandığında, varsayılan olarak büyüyen bir pencere çerçevesi (rangeFrame, unboundedPreceding, currentRow) kullanılır.
Örnekler
Sıralama ve satır çerçevesi içeren temel pencere
from pyspark.sql import Window
# ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
window = Window.orderBy("date").rowsBetween(Window.unboundedPreceding, Window.currentRow)
Aralık çerçevesi ile bölümlenmiş pencere
from pyspark.sql import Window
# PARTITION BY country ORDER BY date RANGE BETWEEN 3 PRECEDING AND 3 FOLLOWING
window = Window.orderBy("date").partitionBy("country").rangeBetween(-3, 3)
Bölüm içindeki satır numarası
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"]
)
# Show row number ordered by id within each category partition
window = Window.partitionBy("category").orderBy("id")
df.withColumn("row_number", sf.row_number().over(window)).show()
Satır tabanlı çerçeve ile toplam çalıştırma
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"]
)
# Sum id values from the current row to the next row within each partition
window = Window.partitionBy("category").orderBy("id").rowsBetween(Window.currentRow, 1)
df.withColumn("sum", sf.sum("id").over(window)).sort("id", "category", "sum").show()
Aralık tabanlı çerçeve ile toplam çalıştırma
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"]
)
# Sum id values from the current id value to id + 1 within each partition
window = Window.partitionBy("category").orderBy("id").rangeBetween(Window.currentRow, 1)
df.withColumn("sum", sf.sum("id").over(window)).sort("id", "category").show()