L'expression CASE
définit une ou plusieurs conditions et renvoie un résultat lorsqu'une condition est remplie. Vous pouvez définir un résultat par défaut si aucune des conditions n'est remplie.
Exemple
L'expression CASE
sert généralement à créer des catégories ou des regroupements de données. Par exemple, pour regrouper certaines valeurs de pays dans une dimension Région de vente, vous pourriez créer une expression CASE
de ce type :
CASE
WHEN Country IN ("USA","Canada","Mexico") THEN "North America"
WHEN Country IN ("England","France") THEN "Europe"
ELSE "Other"
END
Fonctionnement de CASE
élaboré
Une expression CASE
commence par le mot clé CASE
et se termine par le mot clé END
. Entre les deux se trouvent un certain nombre de sections ou clauses :
WHEN
: condition que vous souhaitez évaluer. Une expressionCASE
peut contenir plusieurs clausesWHEN
.THEN
: résultat à renvoyer si la condition de la clauseWHEN
est true. Une expressionCASE
doit contenir une clauseTHEN
pour chaque clauseWHEN
.ELSE
: facultatif. Si aucune des conditions de la clauseWHEN
n'est true,CASE
renvoie la valeur de la clauseELSE
, ou la valeurNULL
si aucune clauseELSE
n'est spécifiée.
L'expression CASE
évalue successivement chaque clause WHEN
et renvoie le premier résultat pour lequel la condition est true. Les clauses WHEN
restantes et le résultat ELSE
ne sont alors pas évalués. Si toutes les conditions WHEN
sont "false" ou NULL
, l'expression CASE
renvoie le résultat ELSE
. Si aucune clause ELSE
n'est précisée, elle renvoie la valeur NULL
.
Syntaxe de CASE élaboré
CASE
WHEN condition THEN result
[WHEN condition THEN result]
[...]
[ELSE else_result]
END
Paramètres
WHEN condition
Les conditions WHEN
évaluent vos données et renvoient la valeur "true" si la condition spécifiée est remplie ou "false" si ce n'est pas le cas. Vous pouvez utiliser n'importe quelle expression booléenne valide en tant que condition WHEN
.
THEN result
Chaque condition WHEN
doit contenir une clause THEN
correspondante, qui indique les résultats si la condition est "true". En présence de plusieurs conditions WHEN
, l'expression CASE
renvoie le résultat de la première condition "true".
Remarques
Tous les résultats potentiels d'une clause THEN
doivent être du même type.
Par exemple, si la première clause THEN
renvoie une valeur textuelle, les autres clauses THEN
, comme la clause ELSE
, doivent également renvoyer une valeur textuelle.
ELSE else_result
La clause facultative ELSE
spécifie un résultat par défaut. Cette clause est renvoyée si aucune des clauses WHEN
n'est "true". Si une expression CASE
ne comporte aucune clause ELSE
et qu'aucune des clauses WHEN n'est "true", l'instruction renvoie la valeur NULL
.
Une expression CASE
ne peut contenir qu'une seule clause ELSE
.
Autres exemples
Vérifier une inégalité
CASE WHEN Medium != "cpc" THEN "gratuit" ELSE "payant" END
Classifier des valeurs de dimension numérique au sein de buckets discrets
Par exemple, vous pouvez séparer des commandes selon trois tailles ("Petite", "Moyenne" et "Grande") basées sur le montant des commandes :
CASE WHEN Montant < 20 THEN "Petite" WHEN Montant >= 20 and Montant < 100 THEN "Moyenne" WHEN Montant >= 100 THEN "Grande" END
Évaluer une condition AND logique
CASE
WHEN Country ISO Code = "US" AND Medium = "cpc"
THEN "US - Payant"
ELSE "autre"
END
Évaluer une condition AND/OR logique
CASE WHEN REGEXP_MATCH(Titre de la vidéo, ".*Google Analytics*") AND diffusion_en_direct = TRUE OR Longueur de la vidéo > 600 THEN "Diffusion en direct GA ou longue vidéo" END
Évaluer un paramètre
Par exemple, vous pouvez définir un paramètre de cible de vente "Objectif de ventes" et l'ajuster de façon à afficher les commandes qui ont atteint l'objectif :
CASE WHEN Qty Sold >= Sales target parameter THEN 1 ELSE 0 END
Renvoyer un autre champ ou une autre valeur en fonction d'une valeur de paramètre
Le premier exemple renvoie une dimension basée sur la valeur de paramètre sélectionnée. Avec cette approche, les utilisateurs peuvent passer d'une dimension de répartition à un graphique.
Le deuxième exemple illustre comment renvoyer une autre métrique basée sur une valeur de paramètre.
CASE WHEN Répartition = "Catégorie de produit" THEN Catégorie de produit WHEN Répartition = "Magasin" THEN Magasin END
## Remarque : Vous pouvez aussi utiliser la syntaxe CASE simple suivante :
CASE Répartition WHEN "Catégorie de produit" THEN Catégorie de produit WHEN "Magasin" THEN Magasin END
CASE WHEN Afficher le coût ajusté = TRUE THEN Coût + Ajustements ELSE Coût END
Instructions CASE
imbriquées
Vous pouvez imbriquer des instructions CASE
pour créer une logique d'embranchement plus complexe :
CASE WHEN Couleur = "bleu"
ELSE
"PAS UN CHAPEAU"
END