Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Utility functions for defining window in DataFrames.
Podporuje Spark Connect.
Atributy třídy
| Vlastnost | Description |
|---|---|
unboundedPreceding |
Hodnota hranice představující začátek rámečku nevázaného okna |
unboundedFollowing |
Mezní hodnota představující konec nevázaného rámečku okna |
currentRow |
Hodnota hranice představující aktuální řádek v rámečku okna |
Methods
| Metoda | Description |
|---|---|
orderBy(*cols) |
Vytvoří WindowSpec s definovaným řazením. |
partitionBy(*cols) |
Vytvoří windowSpec s definovaným dělením. |
rangeBetween(start, end) |
Vytvoří WindowSpec s definovanými hranicemi rámce od start (včetně) do end (včetně) pomocí posunů založených na rozsahu od hodnoty aktuálního ORDER BY řádku. |
rowsBetween(start, end) |
Vytvoří WindowSpec s definovanými hranicemi rámce od start (včetně) do end (včetně) pomocí posunů na základě řádků z aktuálního řádku. |
Poznámky
Pokud řazení není definované, použije se ve výchozím nastavení nevázaný rámec okna (rowFrame, unboundedPreceding, unboundedFollowing). Při definování řazení se ve výchozím nastavení používá rozrůstající se rámec okna (rangeFrame, unboundedPreceding, currentRow).
Příklady
Základní okno s pořadím a rámečkem řádku
from pyspark.sql import Window
# ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
window = Window.orderBy("date").rowsBetween(Window.unboundedPreceding, Window.currentRow)
Dělené okno s rámečkem rozsahu
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)
Číslo řádku v rámci oddílu
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()
Průběžný součet s rámečkem založeným na řádcích
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()
Průběžný součet s rámcem založeným na rozsahu
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()