Skip to content

case_when(condition1, value1, condition2, value2, ..., else_value)

Описание

Функция case_when() выполняет условные выражения с множественными условиями, возвращая соответствующее значение для первого истинного условия.

Параметры

  • condition1: Column - первое условие
  • value1: Column - значение для первого условия
  • condition2: Column - второе условие
  • value2: Column - значение для второго условия
  • ...: дополнительные пары условие-значение
  • else_value: Column - значение по умолчанию (если ни одно условие не истинно)

Возвращаемое значение

Column - значение, соответствующее первому истинному условию

Пример использования

from pyspark.sql.functions import case_when, col, lit
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("case_when_example").getOrCreate()

# Создаем DataFrame с оценками
data = [
    (90,),
    (75,),
    (60,),
    (45,),
    (30,)
]
df = spark.createDataFrame(data, ["score"])

# Применяем условное выражение
df = df.withColumn("grade", 
    case_when(
        col("score") >= 90, lit("A"),
        col("score") >= 80, lit("B"),
        col("score") >= 70, lit("C"),
        col("score") >= 60, lit("D"),
        lit("F")
    ))
df.show(truncate=False)

# Результат:
# +-----+-----+
# |score|grade|
# +-----+-----+
# |90   |A    |
# |75   |C    |
# |60   |D    |
# |45   |F    |
# |30   |F    |
# +-----+-----+

Примечания

  • Условия проверяются последовательно
  • Возвращает NULL, если все условия NULL
  • Полезно для:
  • Классификации данных
  • Сложной условной логики
  • Преобразования значений
  • Связанные функции:
  • when() - множественные условия
  • if() - простое условие