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()