다음을 통해 공유


nth_value

Window 함수: 창 프레임의 세 번째 행(1부터 계산)과 null 창 프레임의 크기가 행보다 offset 작은 경우 값을 offset반환합니다.

true로 offset설정된 경우 ignoreNulls 표시되는 null이 아닌 th 값을 반환합니다. 모든 값이 null이면 null이 반환됩니다.

이는 SQL의 nth_value 함수와 동일합니다.

문법

from pyspark.sql import functions as sf

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

매개 변수

매개 변수 유형 Description
col pyspark.sql.Column 또는 열 이름 열 또는 식의 이름입니다.
offset 정수 (int) 값으로 사용할 행 수입니다.
ignoreNulls bool, 선택 사항 사용할 행을 결정할 때 Nth 값이 null을 건너뛰어야 했음을 나타냅니다.

Returns

pyspark.sql.Column: n번째 행의 값입니다.

예시

예제 1: 창 프레임에서 첫 번째 값 가져오기

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()
+---+---+
| c1| c2|
+---+---+
|  a|  1|
|  a|  2|
|  a|  3|
|  b|  8|
|  b|  2|
+---+---+
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("nth_value", sf.nth_value("c2", 1).over(w)).show()
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
|  a|  1|        1|
|  a|  2|        1|
|  a|  3|        1|
|  b|  2|        2|
|  b|  8|        2|
+---+---+---------+

예제 2: 창 프레임에서 두 번째 값 가져오기

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()
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
|  a|  1|     NULL|
|  a|  2|        2|
|  a|  3|        2|
|  b|  2|     NULL|
|  b|  8|        8|
+---+---+---------+