Aller au contenu principal

when (Colonne)

Évaluer une liste de conditions et renvoyer l'une des multiples expressions de résultat possibles.

Syntaxe

Python
when(condition, value)

parameter

parameter

Type

Description

condition

Colonne

Condition booléenne

value

Valeur

Valeur à renvoyer si la condition est vraie.

parameter

Type

Description

condition

Colonne

Condition booléenne

value

Valeur

Valeur à renvoyer si la condition est vraie.

Renvoie

Colonne

Exemples

Exemple 1 : Utilisation de when() avec des conditions et des valeurs pour créer une nouvelle colonne.

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(2, "Alice"), (5, "Bob")], ["age", "name"])
result = df.select(df.name, sf.when(df.age > 4, 1).when(df.age < 3, -1).otherwise(0))
result.show()
Output
# +-----+------------------------------------------------------------+
# | name|CASE WHEN (age > 4) THEN 1 WHEN (age < 3) THEN -1 ELSE 0 END|
# +-----+------------------------------------------------------------+
# |Alice| -1|
# | Bob| 1|
# +-----+------------------------------------------------------------+

Exemple 2 : Chaînage de plusieurs conditions when().

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, "Alice"), (4, "Bob"), (6, "Charlie")], ["age", "name"])
result = df.select(
df.name,
sf.when(df.age < 3, "Young").when(df.age < 5, "Middle-aged").otherwise("Old")
)
result.show()
Output
# +-------+---------------------------------------------------------------------------+
# | name|CASE WHEN (age < 3) THEN Young WHEN (age < 5) THEN Middle-aged ELSE Old END|
# +-------+---------------------------------------------------------------------------+
# | Alice| Young|
# | Bob| Middle-aged|
# |Charlie| Old|
# +-------+---------------------------------------------------------------------------+

Exemple 3 : Utilisation de valeurs littérales comme conditions.

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(2, "Alice"), (5, "Bob")], ["age", "name"])
result = df.select(
df.name, sf.when(sf.lit(True), 1).otherwise(
sf.raise_error("unreachable")).alias("when"))
result.show()
Output
# +-----+----+
# | name|when|
# +-----+----+
# |Alice| 1|
# | Bob| 1|
# +-----+----+