Compartir por


nth_value

Función window: devuelve el valor que es la offsetprimera fila del marco de ventana (contando de 1) y null si el tamaño del marco de ventana es menor que offset las filas.

Devolverá el offsetvalor distinto de NULL que ve cuando ignoreNulls se establece en true. Si todos los valores son null, se devuelve null.

Esto equivale a la función nth_value en SQL.

Syntax

from pyspark.sql import functions as sf

sf.nth_value(col, offset, ignoreNulls=False)

Parámetros

Parámetro Tipo Description
col pyspark.sql.Column o nombre de columna Nombre de columna o expresión.
offset int Número de filas que se van a usar como valor.
ignoreNulls bool, opcional Indica que el valor Nth debe omitir null en la determinación de la fila que se va a usar.

Devoluciones

pyspark.sql.Column: valor de la nª fila.

Examples

Ejemplo 1: Obtener el primer valor en el marco de ventana

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("nth_value", sf.nth_value("c2", 1).over(w)).show()
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
|  a|  1|        1|
|  a|  2|        1|
|  a|  3|        1|
|  b|  2|        2|
|  b|  8|        2|
+---+---+---------+

Ejemplo 2: Obtención del segundo valor en el marco de ventana

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("nth_value", sf.nth_value("c2", 2).over(w)).show()
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
|  a|  1|     NULL|
|  a|  2|        2|
|  a|  3|        2|
|  b|  2|     NULL|
|  b|  8|        8|
+---+---+---------+