Bagikan melalui


nth_value

Fungsi jendela: mengembalikan nilai yang merupakan offsetbaris ke-bingkai jendela (dihitung dari 1), dan null jika ukuran bingkai jendela kurang dari offset baris.

Ini akan mengembalikan offsetnilai non-null ke-th yang dilihatnya ketika ignoreNulls diatur ke true. Jika semua nilai null, maka null dikembalikan.

Ini setara dengan fungsi nth_value di SQL.

Syntax

from pyspark.sql import functions as sf

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

Parameter-parameternya

Pengaturan Tipe Description
col pyspark.sql.Column atau nama kolom Nama kolom atau ekspresi.
offset int Jumlah baris yang akan digunakan sebagai nilai.
ignoreNulls bool, opsional Menunjukkan nilai Nth harus melewati null dalam penentuan baris mana yang akan digunakan.

Pengembalian Barang

pyspark.sql.Column: nilai baris ke-n.

Examples

Contoh 1: Dapatkan nilai pertama dalam bingkai jendela

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

Contoh 2: Dapatkan nilai kedua dalam bingkai jendela

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