Megosztás:


érdeklődő

Ablakfüggvény: azt az értéket adja vissza, amely offset az aktuális sor utáni sor, és default ha az aktuális sor után kevesebb offset sor van. Az egyik például offset az ablakpartíció bármely pontján visszaadja a következő sort.

Ez egyenértékű az SQL LEAD függvényével.

Szemantika

from pyspark.sql import functions as sf

sf.lead(col, offset=1, default=None)

Paraméterek

Paraméter Típus Description
col pyspark.sql.Column vagy oszlop neve Oszlop vagy kifejezés neve.
offset int, nem kötelező A kiterjesztendő sorok száma. Az alapértelmezett érték 1.
default optional Alapértelmezett érték.

Visszatérítések

pyspark.sql.Column: érték az aktuális sor után a következő alapján offset: .

Példák

1. példa: Az érdeklődő használata a következő érték lekéréséhez

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. példa: Az érdeklődő használata alapértelmezett értékkel

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. példa: Az érdeklődő használata 2 eltolással

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|
+---+---+----------+