Équivalent Spark de "IF Then ELSE"
Introduction :
Offre de transformations Spark DataFrame un moyen puissant de manipuler les données. Une opération courante consiste à appliquer conditionnellement des transformations basées sur des valeurs variables. Comprendre l'équivalent Spark de l'instruction "IF Then ELSE" dans SQL est crucial pour de telles tâches.
Question :
Un utilisateur tente d'ajouter une nouvelle colonne à un Spark DataFrame basé sur des règles conditionnelles. Cependant, ils rencontrent une TypeError lorsqu'ils tentent d'utiliser la fonction F.when avec plusieurs conditions.
TypeError: when() takes exactly 2 arguments (3 given)
Réponse :
L'erreur se produit car le F.when La fonction dans Spark attend exactement deux arguments : une condition et une valeur à renvoyer lorsque la condition est remplie. Le code de l'utilisateur inclut un argument supplémentaire, une autre condition F.when, qui est une syntaxe incorrecte.
La syntaxe correcte pour l'équivalent "IF Then ELSE" dans Spark utilisant F.when est soit :
(when(col("iris_class") == 'Iris-setosa', 0) .when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2))
ou :
(when(col("iris_class") == 'Iris-setosa', 0) .otherwise(when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2)))
La première syntaxe utilise des conditions F.when imbriquées, tandis que la seconde utilise la fonction F.otherwise.
Une instruction SQL équivalente serait une expression CASE :
CASE WHEN (iris_class = 'Iris-setosa') THEN 0 ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 ELSE 2 END END
Spark prend également en charge la syntaxe conditionnelle Hive IF, mais uniquement en SQL brut avec prise en charge de Hive :
IF(condition, if-true, if-false)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!