Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi utilitas untuk menentukan jendela di DataFrames.
Mendukung Spark Connect
Atribut kelas
| Attribute | Deskripsi |
|---|---|
unboundedPreceding |
Nilai batas yang mewakili awal bingkai jendela yang tidak terbatas. |
unboundedFollowing |
Nilai batas yang mewakili akhir bingkai jendela yang tidak terbatas. |
currentRow |
Nilai batas yang mewakili baris saat ini dalam bingkai jendela. |
Metode
| Metode | Deskripsi |
|---|---|
orderBy(*cols) |
Membuat WindowSpec dengan urutan yang ditentukan. |
partitionBy(*cols) |
Membuat WindowSpec dengan partisi yang ditentukan. |
rangeBetween(start, end) |
Membuat WindowSpec dengan batas bingkai yang ditentukan, dari start (inklusif) ke end (inklusif), menggunakan offset berbasis rentang dari nilai baris ORDER BY saat ini. |
rowsBetween(start, end) |
Membuat WindowSpec dengan batas bingkai yang ditentukan, dari start (inklusif) ke end (inklusif), menggunakan offset berbasis baris dari baris saat ini. |
Catatan
Saat pengurutan tidak ditentukan, bingkai jendela yang tidak terbatas (rowFrame, unboundedPreceding, unboundedFollowing) digunakan secara default. Saat pengurutan ditentukan, bingkai jendela yang berkembang (rangeFrame, unboundedPreceding, currentRow) digunakan secara default.
Examples
Jendela dasar dengan pengurutan dan bingkai baris
from pyspark.sql import Window
# ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
window = Window.orderBy("date").rowsBetween(Window.unboundedPreceding, Window.currentRow)
Jendela yang dipartisi dengan bingkai rentang
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)
Nomor baris dalam partisi
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()
Menjalankan jumlah dengan bingkai berbasis baris
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()
Jumlah berjalan dengan bingkai berbasis rentang
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()