top of page
Rechercher

SWITCH dans Power BI : remplacer les IF imbriqués

Groupe Kronoscope
1 sept.
5 min de lecture

SWITCH est une fonction DAX qui permet de tester plusieurs cas dans une seule formule.


Elle compare une expression à une liste de valeurs et renvoie le résultat correspondant au premier cas qui correspond.


Elle permet notamment de remplacer des IF imbriqués, qui deviennent rapidement difficiles à lire lorsque les conditions se multiplient.


SWITCH propose deux formes principales : la forme standard, qui compare une expression à différentes valeurs, et la forme TRUE, qui permet d'évaluer plusieurs conditions.





La syntaxe de la fonction SWITCH

Syntaxe

SWITCH ( <expression>, <valeur>, <résultat> [, <valeur>, <résultat>] … [, <défaut>] )

La fonction attend une expression, puis des paires, puis un résultat par défaut.

  • expression : la colonne ou la mesure à évaluer.

  • valeur : une valeur constante comparée à l'expression.

  • résultat : ce que renvoie la fonction en cas de correspondance.

  • défaut : ce que renvoie la fonction si aucune valeur ne correspond.

Les paires valeur / résultat se suivent, sans limite de nombre.

Le dernier argument isolé est la valeur par défaut.

Les arguments se séparent par une virgule, jamais par un point-virgule.


Sans valeur par défaut, SWITCH renvoie BLANK

Ce dernier argument est facultatif. Omettez-le, et une valeur non prévue renvoie BLANK.

BLANK n'est ni zéro, ni une chaîne vide.

Or un visuel masque les lignes sans valeur.

La note 5 de notre exemple disparaîtrait donc du tableau.

Renseignez toujours ce dernier argument quand la ligne doit rester visible.


Où la fonction est utilisable

La documentation Microsoft précise son périmètre exact.

SWITCH fonctionne dans une mesure, une colonne calculée, une table calculée et un calcul visuel.



SWITCH Power BI : deux formes d'écriture

SWITCH classique ou SWITCH ( TRUE () )

C'est la distinction que presque personne n'explique, et elle bloque tout le monde.

La forme classique compare une égalité stricte. Rien d'autre.

L'écriture SWITCH ( Enquete[Note], 1, … ) teste si la note vaut exactement 1.

Impossible d'écrire « supérieur à » dans cette forme.


TRUE () libère les comparaisons

Placez TRUE () en premier argument.

Chaque « valeur » devient alors une condition complète.

La fonction renvoie le résultat de la première condition vraie.

Segment =

SWITCH (

TRUE (),

[CA] >= 50000, "Objectif dépassé",

[CA] >= 30000, "Objectif proche",

"Objectif manqué"

)

Les opérateurs && et || fonctionnent dans ces conditions.

Le premier signifie ET, le second signifie OU.


La même règle écrite avec IF

Segment =

IF (

[CA] >= 50000, "Objectif dépassé",

IF ( [CA] >= 30000, "Objectif proche", "Objectif manqué" )

)

Deux catégories de plus ajouteraient deux IF supplémentaires.

La version SWITCH, elle, reste plate et lisible.



Le sélecteur de mesure

C'est le cas d'usage professionnel numéro un de SWITCH.

Un utilisateur veut choisir lui-même l'indicateur affiché dans un graphique.

Le principe tient en deux temps.


Créer une table déconnectée

Créez une table à une colonne, sans aucune relation avec le modèle.

Elle contient simplement les libellés proposés à l'utilisateur.

Selecteur =
DATATABLE (
    "Indicateur", STRING,
    { { "Chiffre d'affaires" }, { "Marge" }, { "Quantité" } }
)

Posez ensuite cette colonne dans un segment.


Brancher SWITCH sur la sélection

SELECTEDVALUE lit le choix de l'utilisateur.

SWITCH renvoie ensuite la mesure correspondante.

Indicateur sélectionné =
VAR Choix = SELECTEDVALUE ( Selecteur[Indicateur] )
RETURN
    SWITCH (
        Choix,
        "Chiffre d'affaires", [CA],
        "Marge", [Marge],
        "Quantité", [Quantité],
        BLANK ()
    )

Placez cette mesure unique dans votre graphique.

Le visuel change d'indicateur au clic sur le segment.

Une seule page remplace alors trois pages quasi identiques.


Bon à savoir

Le format d'affichage est celui de la mesure SWITCH, pas celui des mesures appelées. Un montant et une quantité dans le même sélecteur partageront donc le même format.



Les trois pièges de SWITCH

Le premier piège concerne le contexte d'une mesure.

Dans une mesure, chaque condition doit porter sur une agrégation.

L'écriture [Montant] >= 1000 échoue si plusieurs lignes sont visibles.

Power BI ne sait pas quel montant tester.

Remplacez-la par SUM ( Ventes[Montant] ) >= 1000.


L'ordre des conditions décide du résultat

SWITCH s'arrête à la première condition vraie.

Les conditions suivantes ne sont jamais évaluées.

SWITCH (
    TRUE (),
    [Cout] < 100, "A",
    [Cout] < 10,  "B",
    "C"
)

Un coût de 5 est déjà inférieur à 100.

La ligne « B » ne sort donc jamais.

Microsoft documente précisément ce cas.

Classez les conditions de la plus restrictive à la plus large.




Tous les résultats doivent partager le même type

Microsoft l'impose : tous les résultats et le défaut ont le même type de données.

SWITCH (
    Produits[Classe],
    "L", "Large",
    "H", 0.1
)

Cette formule renvoie une erreur.

Un texte et un nombre décimal ne cohabitent pas.

Pour un cas sans valeur, renvoyez BLANK () plutôt qu'une chaîne vide.



SWITCH n'existe pas dans Power Query

Beaucoup cherchent SWITCH dans l'éditeur Power Query.

La fonction n'y existe pas. SWITCH appartient au DAX, pas au langage M.

Trois solutions équivalentes existent côté Power Query.

  • La colonne conditionnelle, depuis le ruban Ajouter une colonne.

  • Les mots-clés if, then et else, écrits en minuscules.

  • Une table de correspondance fusionnée à vos données.

if [Note] = 1 then "Insatisfait"
else if [Note] = 2 then "Neutre"
else if [Note] = 3 then "Satisfait"
else "Hors barème"

Le langage M distingue les majuscules des minuscules.

Un If écrit avec une majuscule déclenche une erreur.

Au-delà de cinq cas, préférez une table de correspondance.



IF, SWITCH ou une autre fonction

Le choix dépend du nombre de cas et de la nature du test.

  • IF : une condition, deux résultats possibles.

  • SWITCH : trois cas ou plus, ou un sélecteur de mesure.

  • COALESCE : renvoyer la première valeur non vide.

  • IFERROR : intercepter une erreur de calcul.

  • DIVIDE : gérer proprement la division par zéro.

Règle simple : deux résultats appellent IF, trois ou plus appellent SWITCH.

Pour compter des valeurs distinctes dans ces mêmes formules, voyez notre article sur la fonction DISTINCTCOUNT.



Questions fréquentes sur SWITCH

SWITCH accepte-t-il des opérateurs de comparaison ?

Oui, à condition de placer TRUE () en premier argument. La forme classique ne teste que l'égalité.


Faut-il toujours écrire une valeur par défaut ?

Ce n'est pas obligatoire. Sans elle, la fonction renvoie BLANK et la ligne peut disparaître du visuel.


SWITCH est-il plus rapide que des IF imbriqués ?

Le moteur traite les deux écritures de façon comparable. Le gain porte sur la lisibilité et la maintenance.


Peut-on imbriquer un SWITCH dans un autre SWITCH ?

Oui. Au-delà de deux niveaux, une table de correspondance dans le modèle reste préférable.


SWITCH fonctionne-t-il dans une colonne calculée ?

Oui, en colonne calculée comme en mesure. Le choix dépend du besoin, pas de la fonction.



À retenir

SWITCH compare une égalité. SWITCH ( TRUE () ) évalue des conditions. Classez-les toujours de la plus restrictive à la plus large.


Envie de pratiquer sur un cas complet ? Téléchargez nos exercices Power BI corrigés.

Vos mesures conditionnelles renvoient des résultats incohérents ? Échangeons lors d'un rendez-vous offert.

 
 
bottom of page