鉛
ウィンドウ関数: 現在の行の後のoffset行の値を返します。現在の行の後の行がoffset行未満の場合はdefault返します。たとえば、 offsetが 1 の場合、ウィンドウ パーティション内の任意の時点での次の行が返されます。
これは SQL の LEAD 関数と同等です。
構文
Python
from pyspark.sql import functions as sf
sf.lead(col, offset=1, default=None)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
|
| 列または式の名前。 |
| int、オプション | 拡張する行数。デフォルトは1です。 |
| オプション | デフォルト値。 |
戻り値
pyspark.sql.Column: offsetに基づく現在の行の後の値。
例
例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("next_value", sf.lead("c2").over(w)).show()
Output
+---+---+----------+
| c1| c2|next_value|
+---+---+----------+
| a| 1| 2|
| a| 2| 3|
| a| 3| NULL|
| b| 2| 8|
| b| 8| NULL|
+---+---+----------+
例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("next_value", sf.lead("c2", 1, 0).over(w)).show()
Output
+---+---+----------+
| c1| c2|next_value|
+---+---+----------+
| a| 1| 2|
| a| 2| 3|
| a| 3| 0|
| b| 2| 8|
| b| 8| 0|
+---+---+----------+
例3 : オフセット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("next_value", sf.lead("c2", 2, -1).over(w)).show()
Output
+---+---+----------+
| c1| c2|next_value|
+---+---+----------+
| a| 1| 3|
| a| 2| -1|
| a| 3| -1|
| b| 2| -1|
| b| 8| -1|
+---+---+----------+