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.
Vytvoří s WindowSpec definovanými hranicemi rámce od start (včetně) do end (včetně).
Obě start a end jsou relativní z aktuálního řádku. Například 0 znamená "aktuální řádek", -1 znamená jeden před aktuálním řádkem a 5 znamená pět za aktuálním řádkem.
Hranice založená na rozsahu je založena na skutečné hodnotě výrazů ORDER BY . Posun změní hodnotu výrazu ORDER BY , například pokud je ORDER BY aktuální 10 hodnota a dolní mez posunu je -3, výsledná dolní mez je 7. Z tohoto důvodu vyžadují rámce založené na rozsahu přesně jeden ORDER BY výraz s číselným datovým typem, pokud není posun nevázaný.
Syntaxe
Window.rangeBetween(start, end)
Parametry
| Parameter | Typ | Description |
|---|---|---|
start |
int (integer) | Začátek hranice včetně. Rámec je nevázaný, pokud je Window.unboundedPrecedingtato hodnota nebo jakákoli hodnota menší nebo rovna max(-sys.maxsize, -9223372036854775808). |
end |
int (integer) | Konec hranice včetně. Rámec je nevázaný, pokud je Window.unboundedFollowingtato hodnota nebo jakákoli hodnota větší nebo rovna min(sys.maxsize, 9223372036854775807). |
Návraty
WindowSpec
Poznámky
Použijte Window.unboundedPreceding, Window.unboundedFollowinga Window.currentRow k určení speciálních hraničních hodnot místo použití integrálních hodnot přímo.
Příklady
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|
# +---+--------+---+