Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция окна: возвращает значение, которое является offsetстрокой кадра окна (подсчет от 1), а null также значение, если размер фрейма окна меньше offset строк.
Он вернет offsetзначение, отличное от NULL, которое отображается, если ignoreNulls задано значение true. Если все значения имеют значение NULL, возвращается значение NULL.
Это эквивалентно функции nth_value в SQL.
Синтаксис
from pyspark.sql import functions as sf
sf.nth_value(col, offset, ignoreNulls=False)
Параметры
| Параметр | Тип | Description |
|---|---|---|
col |
pyspark.sql.Column или имя столбца |
Имя столбца или выражения. |
offset |
инт | Число строк, используемых в качестве значения. |
ignoreNulls |
bool, необязательный | Указывает, что значение Nth должно пропускать значение NULL в определении используемой строки. |
Возвраты
pyspark.sql.Column: значение nth строки.
Примеры
Пример 1. Получение первого значения в кадре окна
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|
+---+---+---------+
Пример 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("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|
+---+---+---------+