nth_value

Funkce okna: vrátí hodnotu, která je offsetth řádek rámce okna (počítá se od 1) a null pokud je velikost rámečku okna menší než offset řádky.

offsetVrátí th non-null hodnotu, která se zobrazí, když ignoreNulls je nastavena na hodnotu true. Pokud jsou všechny hodnoty null, vrátí se hodnota null.

To odpovídá funkci nth_value v SQL.

Syntaxe

from pyspark.sql import functions as sf

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

Parametry

Parameter Typ Description
col pyspark.sql.Column nebo název sloupce Název sloupce nebo výrazu
offset int Počet řádků, které se mají použít jako hodnota
ignoreNulls bool, volitelné Označuje Nth hodnotu by měla přeskočit hodnotu null při určování, který řádek se má použít.

Návraty

pyspark.sql.Column: hodnota nth row.

Examples

Příklad 1: Získání první hodnoty v rámečku okna

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

Příklad 2: Získání druhé hodnoty v rámečku okna

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