Power BI – Power Pivot : La fonction SUMX en renfort đź’Ş (erreur courante chez les dĂ©butants)

Publié le 16 mai 2019
par Sophie Marchand M.Sc.
Mal de tĂŞte

RĂ©cemment sur le forum, quelqu’un a posĂ© une question en rĂ©pĂ©tant Ă  deux reprises qu’Excel perdait la tĂŞte. Loin de moi l’idĂ©e d’intimider qui que ce soit, mais il est tout de mĂŞme assez rare qu’Excel perde la tĂŞte! Bien sĂ»r, il y a parfois certains bogues dans Excel, comme dans tout programme informatique. La plupart du temps, ces bogues sont documentĂ©s. Donc, Ă  moins de bogue majeur, vous ne devriez pas conclure qu’Excel fait des erreurs de calcul. Vous devriez plutĂ´t vous demander qu’est-ce qui explique, dans votre dĂ©marche, le rĂ©sultat fourni par Excel. Dans le cas qui nous concerne ici, on fait rĂ©fĂ©rence Ă  l’usage d’une fonction en langage DAX, dans Power Pivot, qui ne retourne pas de total. Nous allons examiner pourquoi et nous allons suggĂ©rer d’utiliser la fonction SUMX pour rĂ©gler la situation.

 

Données de départ pour illustrer la fonction SUMX

De façon simpliste, on part avec une liste qui indique les prĂ©sences d’Ă©tudiants en AM et en PM (1 indique que l’Ă©tudiant est prĂ©sent et 0 qu’il est absent).

DAX - Données départ

 

Résultat recherché par notre fonction SUMX

On souhaite présenter dans un tableau croisé dynamique, la liste des étudiants présents toute la journée et le grand total en bas du tableau. Donc, selon les données présentées ci-dessus, on cherche un total de 6 apprenants.

 

DĂ©marche problĂ©matique utilisĂ©e par l’usager

L’usager mentionne avoir utilisĂ© la fonction DAX suivante:

Erreur DAX

 

Cet usager prĂ©cise que [MesureAM] et [MesurePM] sont en effet des mesures. On peut donc penser qu’elles ont Ă©tĂ© calculĂ©es par le biais d’une somme de la colonne AM et une somme de la colonne PM (cette portion n’est pas dĂ©finie par l’usager).

Vous avez des sources de données volumineuses à rassembler et analyser dans Excel ? Apprenez à automatiser tout le processus d’importation, de transformation et de modélisation  des données avec nos formations sur Power Query et Power Pivot dans Excel.

Démarche suggérée par le CFO masqué avec la fonction SUMX

Nous avons plutĂ´t proposĂ© Ă  l’usager d’utiliser la formule suivante:

Solution DAX

 

Comparaison des résultats

On peut très bien constater, dans le tableau croisĂ© dynamique ci-dessous, que notre solution montre un total de 6 Ă©tudiants alors que la solution de l’usager ne montre aucun total. Mais est-ce vraiment Excel qui perd la tĂŞte?

Langage DAX

 

Explications des fonctions DAX utilisées

Dans la solution proposĂ©e par l’usager, on fait la somme des 1 dans la colonne AM pour dĂ©terminer le nombre d’individus prĂ©sents en AM et la somme des 1 de la colonne PM pour dĂ©terminer le nombre d’individus prĂ©sents en PM. Ensuite, on imbrique ces 2 mesures dans une fonction IF. Le problème est le suivant. Pour chaque ligne qui prĂ©sente l’information d’un Ă©tudiant, la mesure va fonctionner, puisqu’on dit, si la somme des 1 en AM pour cet individu est Ă©gal Ă  1 et si la somme des 1 en PM pour cet individu est Ă©gal Ă  1, renvoie 1, sinon, ne renvoie rien (voir image ci-dessous). Le problème survient après. D’abord, il faut bien comprendre que dans un tableau croisĂ© dynamique, la ligne de total rĂ©pond aussi au contexte d’Ă©valuation, plus prĂ©cisĂ©ment au contexte de filtres. Ce faisant, Excel se pose la mĂŞme question, est-ce que la somme des 1 en AM, i.e. 9 et Ă©gal Ă  la somme des 1 en PM, i.e. 10. La rĂ©ponse est non et donc Excel ne renvoie aucun rĂ©sultat… Ă€ noter que si nous avions ajoutĂ© un troisième paramètre dans la fonction IF, pour indiquer Ă  Excel de retourner une valeur quelconque lorsque la condition n’est pas satisfaite, cette valeur serait apparue dans la ligne de total du tableau croisĂ© dynamique.

Explication de la problématique DAX

 

Encore une fois, nous sommes dans une situation oĂą l’usager ne maĂ®trise pas bien les contextes d’Ă©valuation. Il s’agit de la notion la plus importante rattachĂ©e au langage DAX. Sans maĂ®triser les contextes d’Ă©valuation, les usagers du langage DAX, se buteront toujours sur ce type de problĂ©matiques. Vous n’avez qu’Ă  visiter notre forum pour vous en convaincre. Voici d’ailleurs une liste d’articles similaires, qui rĂ©pondent Ă  des questions semblables posĂ©es sur le forum:

 

Dans la solution que nous proposons, nous utilisons une fonction itĂ©rative SUMX. Dans cette fonction, Excel Ă©value ligne par ligne si le rĂ©sultat doit ĂŞtre 1 ou rien. Imaginez ici qu’Excel crĂ©erait une colonne temporaire (invisible) et inscrirait un Ă  un les rĂ©sultat dans cette colonne.

SUMX colonne temporaire

 

Et une fois qu’Excel a crĂ©Ă© cette colonne temporaire invisible, il en fait la somme. Dans ce cas-ci, on obtient donc 6.

 

Conclusion

Quand vient le temps d’apprendre le langage DAX, il faut prendre le temps de bien comprendre et Ă©tudier les contextes d’Ă©valuation.


Fichier d’accompagnement VIP Ă  tĂ©lĂ©charger

Pour télécharger le fichier utilisé dans ce tutoriel, devenez membre VIP du CFO masqué.

Formation complémentaire

Nous traitons du langage DAX et des contextes d’Ă©valuation en profondeur dans notre formation Introduction au langage DAX (Power BI et Power Pivot).

Voici quelques commentaires d’apprenants ayant suivi cette formation :

Introduction au langage DAX (Power BI et Power Pivot)
CFO-Masque_Formations-en-ligne_FBLa mission du CFO masqué est de développer les compétences techniques des analystes et des contrôleurs de gestion en informatique décisionnelle avec Excel et Power BI et favoriser l’atteinte de leur plein potentiel, en stimulant leur autonomie, leur curiosité, leur raisonnement logique, leur esprit critique et leur créativité.

Laisser un commentaire

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

Retour en haut