rowsBetween (Окно)

WindowSpec Создает границы кадра, определенные от start (включительно) до end (включительно).

Оба start и end являются относительными позициями из текущей строки. Например, 0 означает "текущая строка", -1 означает строку перед текущей строкой и 5 означает пятую строку после текущей строки.

Граница на основе строк основана на позиции строки в секции. Смещение указывает количество строк выше или ниже текущей строки, в которой начинается или заканчивается кадр.

Синтаксис

Window.rowsBetween(start, end)

Параметры

Параметр Тип Описание
start int Начало границы, включаемый. Кадр не связан, если это Window.unboundedPrecedingзначение меньше или равно -9223372036854775808.
end int Конец границы, инклюзивный. Кадр не связан, если это Window.unboundedFollowingзначение больше или равно 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 from the current row to current row + 1 in each category partition.
window = Window.partitionBy("category").orderBy("id").rowsBetween(Window.currentRow, 1)
df.withColumn("sum", sf.sum("id").over(window)).sort("id", "category", "sum").show()
# +---+--------+---+
# | id|category|sum|
# +---+--------+---+
# |  1|       a|  2|
# |  1|       a|  3|
# |  1|       b|  3|
# |  2|       a|  2|
# |  2|       b|  5|
# |  3|       b|  3|
# +---+--------+---+