CASE

Renvoyer des dimensions et des statistiques en fonction d'expressions conditionnelles

Les instructions CASE vous permettent de créer des champs dont les valeurs sont déterminées selon une logique conditionnelle. Les instructions CASE 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 ("USA","Canada","Mexique)THEN "Amérique du Nord" 
    WHEN Pays IN ("Angleterre","France")THEN "Europe" 
    ELSE "Autre" 
END

Vous devez être en mesure de modifier une source de données pour créer des instructions CASE.

Au sommaire de cet article :

Créer une instruction CASE

Pour créer une instruction CASE :

  1. Modifiez votre source de données.
  2. Cliquez sur + pour créer un champ calculé.
  3. Saisissez le nom du nouveau champ.
  4. Dans le champ de la formule, saisissez l'instruction CASE.

Syntaxe de CASE

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

Paramètres :

  1. condition – expression qui renvoie une valeur booléenne (vrai ou faux). Les conditions peuvent inclure soit des dimensions, soit des statistiques.
  2. résultat – valeur à renvoyer. Il peut s'agir d'une dimension, d'une statistique ou d'une valeur littérale.
  3. ELSE résultat – (facultatif) valeur à renvoyer par défaut si aucune autre condition n'est remplie.

Une instruction CASE comprend une ou plusieurs conditions logiques (clause WHEN), suivies d'un résultat à renvoyer si la condition est vérifiée (clause THEN). Si aucune condition n'est vérifiée, CASE renvoie la valeur spécifiée dans la clause ELSE.

Conditions WHEN

Une condition WHEN évalue les données. Elle renvoie vrai si la condition est remplie, faux si elle ne l'est pas. Lorsqu'elles sont valides, les conditions WHEN permettent d'effectuer les actions suivantes :

Remarques

Vous ne pouvez pas comparer deux dimensions ni deux statistiques. La comparaison doit porter sur une valeur littérale.

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 Couleur favorite = "rouge" AND Code secret = 42 THEN ... // formule non valide

Les conditions WHEN doivent contenir soit une dimension, soit une statistique. Elles ne peuvent pas être exclusivement littérales. La ligne suivante, par exemple, n'est pas autorisée :

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

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 ... // erreur !

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. Exemple :

1) Créez un champ calculé, Mon champ, avec la formule suivante :

statistique1 + statistique2

2) Utilisez Mon champ dans CASE :

CASE
    WHEN Mon champ > 4 THEN ...

Résultats THEN

Chaque condition WHEN doit contenir une clause THEN correspondante, qui indique la valeur à renvoyer si la condition est vérifiée. En présence de plusieurs conditions WHEN, c'est le résultat de la première condition vérifiée qui est renvoyé.

Tous les résultats potentiels d'une instruction CASE doivent être de 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 ELSE vous permet de spécifier un résultat par défaut. C'est le résultat qui sera renvoyé si aucune clause WHEN n'est vérifiée. Une instruction CASE ne peut contenir qu'une clause ELSE.

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 des instructions CASE

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 la valeur du champ est vide ou de type null.

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 :

champ – la 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 :

champ – la dimension ou statistique à évaluer.

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 :

champ – la 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

Cet article vous a-t-il été utile ?
Comment pouvons-nous l'améliorer ?