nvl2(expr1, expr2, expr3)
Описание
Функция nvl2()
возвращает второе значение, если первое не NULL, иначе возвращает третье значение.
Параметры
expr1
: Column - проверяемое значениеexpr2
: Column - значение, возвращаемое если expr1 не NULLexpr3
: Column - значение, возвращаемое если expr1 NULL
Возвращаемое значение
Тип данных второго или третьего значения
Пример использования
from pyspark.sql.functions import nvl2, lit
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("nvl2_example").getOrCreate()
# Создаем DataFrame с NULL значениями
data = [
(None, "not null", "is null"),
(1, "not null", "is null"),
(2, "not null", "is null")
]
df = spark.createDataFrame(data, ["col1", "col2", "col3"])
# Возвращаем разные значения в зависимости от NULL
result = df.select(
nvl2("col1", "col2", "col3").alias("result")
).show()
# Результат:
# +--------+
# |result |
# +--------+
# |is null |
# |not null|
# |not null|
# +--------+
Примечания
- Для простой замены NULL используйте
nvl()
- Для проверки на NULL используйте
isnull()
- Для получения первого не-NULL значения используйте
coalesce()
- Для условных выражений используйте
when()