Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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|
+---+---+----------+