Pular para o conteúdo principal

n-ésimo valor

Função de janela: retorna o valor que é a offsetª linha do quadro da janela (contando a partir de 1), e null se o tamanho do quadro da janela for menor que offset linhas.

Ele retornará o offset-ésimo valor não nulo que encontrar quando ignoreNulls estiver definido como verdadeiro. Se todos os valores forem nulos, então será retornado nulo.

Isso é equivalente à função nth_value em SQL.

Sintaxe

Python
from pyspark.sql import functions as sf

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

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou nome da coluna

Nome da coluna ou expressão.

offset

int

Número de linhas a serem usadas como valor.

ignoreNulls

booleano, opcional

Indica que o enésimo valor deve ignorar valores nulos na determinação de qual linha usar.

Devoluções

pyspark.sql.Column: valor da n-ésima linha.

Exemplos

Exemplo 1 : Obter o primeiro valor no quadro da janela

Python
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()
Output
+---+---+
| c1| c2|
+---+---+
| a| 1|
| a| 2|
| a| 3|
| b| 8|
| b| 2|
+---+---+
Python
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("nth_value", sf.nth_value("c2", 1).over(w)).show()
Output
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
| a| 1| 1|
| a| 2| 1|
| a| 3| 1|
| b| 2| 2|
| b| 8| 2|
+---+---+---------+

Exemplo 2 : Obtenha o segundo valor no quadro da janela

Python
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()
Output
+---+---+---------+
| c1| c2|nth_value|
+---+---+---------+
| a| 1| NULL|
| a| 2| 2|
| a| 3| 2|
| b| 2| NULL|
| b| 8| 8|
+---+---+---------+