Compartir vía


cliente potencial

Función Window: devuelve el valor que es offset filas después de la fila actual y default si hay menos que offset filas después de la fila actual. Por ejemplo, un offset de uno devolverá la siguiente fila en cualquier punto determinado de la partición de ventana.

Esto equivale a la función LEAD en SQL.

Syntax

from pyspark.sql import functions as sf

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

Parámetros

Parámetro Tipo Description
col pyspark.sql.Column o nombre de columna Nombre de columna o expresión.
offset int, opcional Número de filas que se van a extender. El valor predeterminado es 1.
default opcional Valor predeterminado.

Devoluciones

pyspark.sql.Column: valor después de la fila actual basada en offset.

Examples

Ejemplo 1: Uso del cliente potencial para obtener el siguiente valor

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

Ejemplo 2: Uso del cliente potencial con un valor predeterminado

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

Ejemplo 3: Uso del cliente potencial con un desplazamiento de 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|
+---+---+----------+