On va présenter cette fois la fonction Dax de Power Bi "IF.EAGER". C’est une fonction est développé par Microsoft et c’est une alternative des fonctions "IF" et "SWITCH".

On commence par une introduction de cette fonction suivi des cas pratique pour visualiser la différence entre elle et la fonction "IF".

IF.EAGER : Vérifie si une condition est accomplie, et retourne une valeur si TRUE, et une autre valeur si FALSE. Utilise un plan d’exécution rapide.

Syntaxe :

Après avoir donné un aperçu de la fonction de Power BI, on passe maintenant à la réalisation pour la mieux comprendre.

On commence par la création d’une mesure avec la fonction "IF" pour comparer les ventes de cette année avec ceux de l’année dernière, la fonction est comme suit :

Dans cette expression tout est correct à part la partie relié à la performance. Si on a un grand modèle, cette fonction peut ne pas bien fonctionner, c’est quelque chose que vous savez d’avant si vous travaillez déjà avec les variables.

Ce qui se passe dans cette fonction est que la mesure "Total sales" a été évalué  3 fois.

Dans ce cas, il est recommandé d’utiliser la fonction de Power Bi "IF.EAGER". On va donner plus de détails en créant une nouvelle mesure avec cette fonction :

On peut remarquer qu’on a aucune différence entre les fonctions de Power Bi "IF" et "IF.EAGER" coté syntaxe, alors c’est quoi la différence entre eux ?

Je vais vous montrez ce que cette fonction DAX fait en arrière-plan :

On va créer deux variable une qui représente les ventes courantes "CYSales" et l’autre qui représente les ventes de l’année dernière "PYSales" :

On a créé deux variables et Power Bi exécute ces deux variables en premier et quand elles sont exécutées on passe à l’évaluation de la fonction "IF, ELSE", donc il scanne la table une seule fois à la place de la refaire plusieurs fois dans chaque ligne du code comme dans le premier exemple.

C’est la grande différence entre la représentation de la même fonction de deux manières différentes.

Alors, au lieu d’utiliser les variables à chaque fois on peut tout simplement utiliser la fonction "IF.EAGER". Alors cette fonction est utilisée pour les problèmes de performances, autrement on peut simplement utiliser les deux fonctions "IF" ou "SWITCH".