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|
# +-----+----+