CASE

Générez des valeurs de champs à l'aide d'expressions conditionnelles.

Les instructions CASE déterminent la valeur d'un champ calculé à l'aide d'une logique conditionnelle.

Elles servent généralement à créer des catégories ou des groupements de données. Par exemple, pour regrouper certaines valeurs de pays dans une dimension Région de vente, vous pourriez créer une instruction CASE de ce type :

CASE 
    WHEN Pays IN ("États-Unis","Canada","Mexique") THEN "Amérique du Nord" 
    WHEN Pays IN ("Angleterre","France") THEN "Europe" 
    ELSE "Autre" 
END
Au sommaire de cet article :

Créer une instruction CASE

Dans une source de données :

  1. Ouvrez la source de données.
  2. En haut à droite, cliquez sur + AJOUTER UN CHAMP.

Dans un rapport ou une exploration :

  1. Ouvrez le rapport ou l'exploration.
  2. Sélectionnez un graphique.
  3. Dans le panneau des propriétés à droite, cliquez sur + Ajouter une dimension ou + Ajouter une statistique.
  4. Cliquez sur + CRÉER UN CHAMP.

Ensuite :

  1. Attribuez un nom au nouveau champ.
  2. Dans la zone Formule, saisissez l'instruction CASE.
    Dans une source de données, cliquez sur METTRE EN FORME LA FORMULE pour que votre formule soit automatiquement mise en forme et donc plus lisible.
  3. Cliquez sur ENREGISTRER ou APPLIQUER.

Syntaxe de CASE

CASE
    WHEN condition THEN résultat
    [WHEN condition THEN résultat]
    [...]
    [ELSE résultat]
END

Une instruction CASE commence par le mot clé CASE et se termine par le mot clé END. Entre les deux se trouvent plusieurs sections ou "clauses" :

  • WHEN : condition logique que vous souhaitez évaluer. Une instruction CASE peut contenir plusieurs clauses WHEN.
  • THEN : résultat à renvoyer si la condition de la clause WHEN est vraie. Une instruction CASE doit contenir une clause THEN pour chaque clause WHEN.
  • ELSE : clause facultative. Si aucune des conditions de la clause WHEN n'est vraie, CASE renvoie la valeur de la clause ELSE ou la valeur NULL si aucune clause ELSE n'est spécifiée.

Conditions WHEN

Les conditions WHEN évaluent vos données et renvoient la valeur vrai si la condition spécifiée est remplie ou faux si ce n'est pas le cas. Lorsqu'elles sont valides, les conditions WHEN permettent d'effectuer les actions suivantes :

Limites des conditions WHEN

Avec la condition WHEN, la comparaison doit porter sur une valeur littérale ou une fonction compatible.

Vous ne pouvez pas comparer deux dimensions ni deux statistiques. Dans les exemples ci-dessous, les deux premières instructions sont des conditions WHEN valides, tandis que les deux dernières ne sont PAS valides :

CASE WHEN Pays = "Angleterre" ...  // formule valide
CASE WHEN Conversions > 100 ...  // formule valide

CASE WHEN Dimension1 = Dimension2 ... // formule non valide
CASE WHEN Statistique1 > Statistique2 ... // formule non valide
Fonctions compatibles

Les conditions WHEN peuvent inclure une ou plusieurs fonctions de comparaison compatibles. Voir ci-dessous

Les conditions WHEN ne peuvent pas contenir à la fois des dimensions et des statistiques.

La ligne suivante, par exemple, n'est pas autorisée :

CASE WHEN Pays = "Angleterre" AND Conversions > 100 THEN ... // formule non valide

Les conditions WHEN doivent contenir soit une dimension, soit une statistique.

Les conditions WHEN ne peuvent pas être exclusivement littérales. La ligne suivante, par exemple, n'est pas autorisée :

CASE WHEN 1 THEN ... // formule non valide

Les conditions WHEN ne peuvent pas effectuer de calculs.

Vous ne pouvez pas effectuer des opérations ni utiliser des fonctions de champ calculé dans une condition WHEN. La ligne suivante, par exemple, n'est pas autorisée :

CASE WHEN statistique1 + statistique2 > 4 THEN ...// formule non valide

Pour contourner le problème, vous pouvez commencer par créer un champ calculé avec la formule souhaitée. Vous utiliserez ensuite ce champ dans l'instruction CASE. Par exemple :

1) Créez un champ calculé (MonChamp) avec la formule suivante :

statistique1 + statistique2

2) Utilisez MonChamp dans CASE :

CASE WHEN MonChamp > 4 THEN ...

Résultats THEN

Chaque condition WHEN doit contenir une clause THEN correspondante, qui indique les résultats si la condition est vraie. En présence de plusieurs conditions WHEN, l'instruction CASE renvoie le résultat de la première condition vraie.

Les clauses THEN peuvent renvoyer les éléments suivants :

  • Dimensions
  • Statistiques
  • Champs calculés
  • Valeurs littérales
  • NULL

Limites des résultats THEN

Les clauses THEN ne peuvent pas renvoyer une expression ni une formule.

La ligne suivante, par exemple, n'est pas autorisée :

CASE WHEN Pays = "Angleterre" THEN statistique1 + statistique2 END // formule non valide

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.

Résultats ELSE

La clause facultative ELSE spécifie un résultat par défaut. Cette valeur est renvoyée si aucune des clauses WHEN n'est vraie. Si une instruction CASE ne comporte aucune clause ELSE et qu'aucune des clauses WHEN n'est vraie, l'instruction renvoie la valeur NULL. Une instruction CASE ne peut contenir qu'une seule clause ELSE.

La clause ELSE peut renvoyer les éléments suivants :

  • Dimensions
  • Statistiques
  • Champs calculés
  • Valeurs littérales
  • NULL

Informations supplémentaires sur la valeur NULL

La valeur NULL est différente de la chaîne vide (""). Alors que l'utilisation de la chaîne vide en arithmétique entraîne généralement une erreur, l'utilisation de la valeur NULL renvoie une valeur nulle :

1+NULL = NULL

1*NULL = NULL

1/NULL = NULL

etc.

En revanche, alors que vous pouvez concaténer des valeurs avec la chaîne vide, la concaténation de n'importe quelle valeur avec la valeur NULL renvoie une valeur nulle :

CONCAT("A", "", "B") = "AB"

CONCAT("A", NULL, "B") = nul

Opérateurs de comparaison

Vous pouvez utiliser les opérateurs suivants dans les clauses WHEN :

  • =
  • !=
  • >
  • >=
  • <
  • <=

Les opérandes de part et d'autre des opérateurs de comparaison doivent être du même type : texte, nombre ou booléen. Un opérande au moins doit être un champ. L'autre peut être une valeur de type texte, nombre ou booléen.

Exemples

CASE WHEN Support != "cpc" THEN "gratuit" ELSE "payant" END

CASE WHEN Temps passé sur la page <= 90 THEN 1 ELSE 0 END

Opérateurs logiques

Vous pouvez ajouter des conditions AND et OR à des conditions WHEN. Utilisez des parenthèses pour regrouper les conditions et définir l'ordre de priorité.

Exemples

CASE WHEN Code pays ISO = "US"  AND Support = "cpc" THEN "US - Payant" ELSE "autre" END

CASE WHEN REGEXP_MATCH(Titre vidéo, ".*Google Analytics*")  AND en_direct = TRUE OR Durée de la vidéo > 120 THEN "GA - DIRECT ou LONG" END

Fonctions compatibles

Vous pouvez utiliser les fonctions ci-dessous dans les conditions WHEN.

Pourquoi ne puis-je pas utiliser d'autres fonctions dans CASE ?

Les conditions WHEN doivent être une expression booléenne. À l'exception de REGEXP_MATCH, les fonctions de champ calculé renvoient des résultats non booléens (c'est-à-dire des nombres, du texte, des dates, des codes géographiques).

IS NULL

Renvoie vrai si le champ de saisie est vide ou contient une valeur nulle.

Cette fonction n'est disponible que dans l'instruction CASE. Vous ne pouvez pas utiliser IS NULL dans les champs calculés indépendants.

Syntaxe

champ IS NULL

Paramètres

field : dimension ou statistique à évaluer.

Exemples

Contenu du champ Formule Résultats
a Champ IS NULL faux
  Champ IS NULL vrai

IN

Renvoie vrai si la valeur saisie contient l'une des valeurs spécifiées dans la liste. La valeur du champ et celles de la liste doivent être du même type. La fonction IN recherche les correspondances complètes. Elle est sensible à la casse. Pour les correspondances partielles ou non sensibles à la casse, utilisez REGEXP_MATCH.

Cette fonction n'est disponible que dans l'instruction CASE. Vous ne pouvez pas l'utiliser dans les champs calculés indépendants.

Syntaxe

champ IN (valeur1, valeur2, ... valeurN)

Paramètres

field : dimension ou statistique à évaluer.
valeur1,valeur2,...valeurN – les valeurs à rechercher.
 

Exemples

Contenu du champ Type de champ Formule Résultats
Bernard Texte Champ IN ('Bernard', 'Alice') vrai
Alice Texte Champ IN ('Bernard', 'Alice') vrai
Jorge Texte Champ IN ('Bernard', 'Alice') faux
20 Nombre Champ IN (10, 20) vrai
10 Nombre Champ IN (10, 20) vrai
100 Nombre Champ IN (10, 20) faux
Bernard Texte Champ IN ('Bernard', 20) erreur (Champ est un texte, mais 20 est un nombre. Pour corriger le problème, placez "20" entre guillemets.)

NOT IN

Renvoie vrai si la valeur saisie ne contient pas l'une des valeurs spécifiées dans la liste. La valeur du champ et celles de la liste doivent être du même type. La fonction IN recherche les correspondances complètes. Elle est sensible à la casse. Pour les correspondances partielles ou non sensibles à la casse, utilisez REGEXP_MATCH.

Cette fonction n'est disponible que dans l'instruction CASE. Vous ne pouvez pas l'utiliser dans les champs calculés indépendants.

Syntaxe

champ NOT IN (valeur1, valeur2, ...valeurN)

Paramètres

field : dimension ou statistique à évaluer.
valeur1,valeur2,...valeurN – les valeurs à rechercher.

Exemples

Contenu du champ Type de champ Formule Résultats
Jorge Texte Champ NOT IN ('Bernard', 'Alice') vrai
Alice Texte Champ NOT IN ('Bernard', 'Alicia','Hiroshi') vrai
Bernard Texte Champ NOT IN ('Bernard', 'Alice') faux
20 Nombre Champ NOT IN (10, 20) faux
10 Nombre Champ NOT IN (10, 20) faux
100 Nombre Champ NOT IN (10, 20) vrai
Bernard Texte Champ NOT IN ('Bernard', 20) erreur*

Champ est de type texte, mais 20 est un nombre. Cela fonctionnerait si "20" était entre guillemets.

REGEXP_MATCH

Renvoie vrai si la valeur saisie correspond à l'expression régulière. Cette fonction ne se limite pas aux instructions CASE. Elle peut être utilisée dans d'autres types de champs calculés.

En savoir plus sur REGEXP_MATCH

Ces informations vous-ont elles été utiles ?
Comment pouvons-nous l'améliorer ?