Udostępnij przez


potencjalny klient

Funkcja okna: zwraca wartość, która jest offset wierszami po bieżącym wierszu, a default jeśli po bieżącym wierszu znajduje się mniej niż offset wiersze. Na przykład jeden z offset nich zwróci następny wiersz w dowolnym punkcie w partycji okna.

Jest to odpowiednik funkcji LEAD w języku SQL.

Składnia

from pyspark.sql import functions as sf

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

Parametry

Parameter Typ Description
col pyspark.sql.Column lub nazwa kolumny Nazwa kolumny lub wyrażenia.
offset int, opcjonalnie Liczba wierszy do rozszerzenia. Wartość domyślna to 1.
default optional Wartość domyślna.

Zwraca

pyspark.sql.Column: wartość po bieżącym wierszu na offsetpodstawie .

Przykłady

Przykład 1: Uzyskiwanie następnej wartości przy użyciu potencjalnego klienta

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

Przykład 2: Używanie potencjalnego klienta z wartością domyślną

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

Przykład 3: Używanie potencjalnych klientów z przesunięciem 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|
+---+---+----------+