Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
WindowSpec Создает границы кадра, определенные от start (включительно) до end (включительно).
Оба start и end относительны из текущей строки. Например, 0 означает "текущая строка", -1 означает одну до текущей строки и 5 означает пять после текущей строки.
Граница на основе диапазона основана на фактическом значении выражений ORDER BY . Смещение изменяет значение ORDER BY выражения, например, если текущее ORDER BY значение и 10 смещение -3нижней границы равно, результирующая нижняя граница .7 Из-за этого кадры на основе диапазона требуют ровно одного ORDER BY выражения с числовым типом данных, если смещение не является несвязанным.
Синтаксис
Window.rangeBetween(start, end)
Параметры
| Параметр | Тип | Описание |
|---|---|---|
start |
int | Начало границы, включаемый. Кадр не связан, если это Window.unboundedPrecedingзначение меньше или равно max(-sys.maxsize, -9223372036854775808). |
end |
int | Конец границы, инклюзивный. Кадр не связан, если это Window.unboundedFollowingзначение больше или равно min(sys.maxsize, 9223372036854775807). |
Возвраты
WindowSpec
Примечания
Используйте Window.unboundedPreceding, Window.unboundedFollowingа также Window.currentRow для указания специальных значений границ, а не использования целочисленных значений напрямую.
Примеры
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|
# +---+--------+---+