rowsBetween (Window)

WindowSpec (包括) からstart (包括) まで、定義されたフレーム境界を持つendを作成します。

startendの両方が、現在の行からの相対位置です。 たとえば、 0 は "現在の行" を意味し、 -1 は現在の行の前の行を意味し、 5 は現在の行の後の 5 番目の行を意味します。

行ベースの境界は、パーティション内の行の位置に基づいています。 オフセットは、フレームが開始または終了する現在の行の上または下の行数を示します。

構文

Window.rowsBetween(start, end)

パラメーター

パラメーター タイプ 説明
start int 境界の開始 (両端を含む)。 フレームが Window.unboundedPrecedingされている場合、または -9223372036854775808以下の値の場合、フレームは無制限になります。
end int 境界の端 (両端を含む)。 フレームが Window.unboundedFollowingされている場合、または 9223372036854775807以上の値の場合、フレームは無制限になります。

返品

WindowSpec

メモ

Window.unboundedPrecedingWindow.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|
# +---+--------+---+