potenciální zákazník

Funkce okna: vrátí hodnotu, která je offset řádky za aktuálním řádkem, a default pokud je za aktuálním řádkem menší než offset řádky. Například jeden offset z nich vrátí další řádek v libovolném bodě oddílu okna.

To je ekvivalentem funkce LEAD v SQL.

Syntaxe

from pyspark.sql import functions as sf

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

Parametry

Parameter Typ Description
col pyspark.sql.Column nebo název sloupce Název sloupce nebo výrazu
offset int, volitelné Počet řádků, které se mají rozšířit Výchozí hodnota je 1.
default optional Výchozí hodnota.

Návraty

pyspark.sql.Column: hodnota za aktuálním řádkem na offsetzákladě .

Examples

Příklad 1: Použití potenciálního zákazníka k získání další hodnoty

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

Příklad 2: Použití zájemce s výchozí hodnotou

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

Příklad 3: Použití zájemců s posunem 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|
+---+---+----------+