DAX – IF()


La fonction IF() est bien connue des utilisateurs d’Excel.

Elle permet de tester une condition et de retourner une valeur, dans le cas ou la condition est remplie, ou une autre valeur, dans le cas contraire.

 

Anatomie de la fonction :

IF(Test logique,valeur si Vrai,valeur si Faux)

 

Avec DAX il faut envisager deux emplois de la fonction IF() :

 

Emploi de IF()) dans une colonne calculée

C’est le cas le plus simple, car alors IF() fonctionne exactement comme dans Excel.

A titre d’exemple créons une nouvelle colonne calculée dans notre Table ‘Gd livre’

Test = IF([Solde]>200;1;0)

Deuxième cas : Emploi de IF() dans une mesure.

 

Si nous créons une nouvelle mesure et y collons cette formule, nous recevrons un message d’erreur.

Ce message est le résultat de la violation d’une règle sacrée du langage DAX :

« Pas de colonnes NUES dans une mesure ».

 

Le seul moyen d’utiliser IF() dans une mesure est de le coupler avec la fonction VALUES().

 

Le meilleur moyen de comprendre ce que retourne VALUES() est  encore de créer une nouvelle Table.

Comme on peut le constater, VALUES() retourne une table reprenant l’ensemble des soldes de ‘Gd livre’.

 

Nous pouvons donc écrire la mesure suivante :

Test1 = IF(VALUES(‘Gd livre'[Solde])>200;1;0)

 

Cette mesure est valide en tant que telle, mais dans le cas d’espèce, comme il y a plusieurs soldes supérieurs à 200, l’utilisation de la mesure dans un Tableau ou graphique générera une erreur.

C’est parfaitement logique, car VALUES() retourne ici une table de plusieurs valeurs et les compare à UNE seule valeur.

 

Values() ne fonctionnera  dans ce cas, que lorsqu’elle retournera une seule valeur.

Il est d’usage d’imbriquer VALUES()  dans une une autre fonction HASONEVALUE().

 

Test1 = IF(

                 HASONEVALUE(

                    VALUES(‘Gd livre'[Solde])>200

                 );1;0

              )

 

 

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *