メインコンテンツまでスキップ

n番目の値

ウィンドウ関数: ウィンドウ フレームのoffset行目 (1 から数えて) の値を返します。ウィンドウ フレームのサイズがoffset行未満の場合はnull返します。

ignoreNullsが true に設定されている場合、 offset番目の null 以外の値を返します。すべての値が null の場合、null が返されます。

これは SQL の nth_value 関数と同等です。

構文

Python
from pyspark.sql import functions as sf

sf.nth_value(col, offset, ignoreNulls=False)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または列名

列または式の名前。

offset

int

値として使用する行数。

ignoreNulls

bool、オプション

どの行を使用するかを決定する際に、N 番目の値が null をスキップすることを示します。

戻り値

pyspark.sql.Column: n 行目の値。

例1 : ウィンドウフレームの最初の値を取得する

Python
from pyspark.sql import functions as sf
from pyspark.sql import Window
df = spark.createDataFrame(
[("a", 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["c1", "c2"])
df.show()
Output
+---+---+
| c1| c2|
+---+---+
| a| 1|
| a| 2|
| a| 3|
| b| 8|
| b| 2|
+---+---+
Python
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("nth_value", sf.nth_value("c2", 1).over(w)).show()
Output
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
| a| 1| 1|
| a| 2| 1|
| a| 3| 1|
| b| 2| 2|
| b| 8| 2|
+---+---+---------+

例2 : ウィンドウフレームの2番目の値を取得する

Python
from pyspark.sql import functions as sf
from pyspark.sql import Window
df = spark.createDataFrame(
[("a", 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["c1", "c2"])
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("nth_value", sf.nth_value("c2", 2).over(w)).show()
Output
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
| a| 1| NULL|
| a| 2| 2|
| a| 3| 2|
| b| 2| NULL|
| b| 8| 8|
+---+---+---------+