Window 함수: 현재 행 뒤의 행 값과 default 현재 행 뒤의 행보다 offset 작은 값을 반환 offset 합니다. 예를 들어 하나의 행은 offset 창 파티션의 지정된 지점에서 다음 행을 반환합니다.
이는 SQL의 LEAD 함수와 동일합니다.
문법
from pyspark.sql import functions as sf
sf.lead(col, offset=1, default=None)
매개 변수
| 매개 변수 | 유형 | Description |
|---|---|---|
col |
pyspark.sql.Column 또는 열 이름 |
열 또는 식의 이름입니다. |
offset |
int, 선택 사항 | 확장할 행 수입니다. 기본값은 1입니다. |
default |
optional | 기본값입니다. |
Returns
pyspark.sql.Column: 에 따라 현재 행 뒤의 값입니다 offset.
예시
예제 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("next_value", sf.lead("c2").over(w)).show()
+---+---+----------+
| c1| c2|next_value|
+---+---+----------+
| a| 1| 2|
| a| 2| 3|
| a| 3| NULL|
| b| 2| 8|
| b| 8| NULL|
+---+---+----------+
예제 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("next_value", sf.lead("c2", 1, 0).over(w)).show()
+---+---+----------+
| c1| c2|next_value|
+---+---+----------+
| a| 1| 2|
| a| 2| 3|
| a| 3| 0|
| b| 2| 8|
| b| 8| 0|
+---+---+----------+
예제 3: 오프셋이 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("next_value", sf.lead("c2", 2, -1).over(w)).show()
+---+---+----------+
| c1| c2|next_value|
+---+---+----------+
| a| 1| 3|
| a| 2| -1|
| a| 3| -1|
| b| 2| -1|
| b| 8| -1|
+---+---+----------+