<< Back

Comment manipuler les totaux dans Tableau ?

Il arrive fréquemment que Tableau n’affiche pas le résultat que l’on souhaiterait dans les totaux ou bien que l’on souhaiterait y mettre une information différente, et détourner son usage. Et bien nous avons la solution !

 

Partons d’un exemple concret que j’ai rencontré cette semaine chez un client. Nous voulions connaitre le nombre de régions françaises et européennes, où nous faisions des ventes pour nos sous-catégories de produits.

Pour ce faire nous avons créé un calcul de niveau de détail (level of details – LOD) ( { FIXED [Catégorie], [Sous-catégorie]: COUNTD([Région])}) pour voir le niveau européen mais nous arrivions au résultat suivant:

 

Mais le résultat en orange est Faux.

Le nombre total de régions en Europe est de 127 dans le jeu de données.

 

En effet lorsqu’on utilise un compte distinct directement avec les totaux, Tableau Desktop comprend que le résultat du total est lui même un compte distinct. Par contre, lorsqu’on l’utilise en conjonction avec un calcul de niveau de détail qui fait appel à un compte distinct, Tableau Desktop se contente de sommer les résultats générés pour chaque ligne dans le total.

Pour contrer cet effet  il est possible de manipuler le résultat de la ligne « Total général » avec la formule suivante :

if  min([Sous-catégorie])=max([Sous-catégorie])

then sum({ FIXED [Catégorie],[Sous-catégorie]: COUNTD([Région])})

else sum({ FIXED : COUNTD([Région])}) end

 

Comment lire cette formule ?

min([Sous-catégorie])=max([Sous-catégorie]) :

Cette partie de l’expression renvoie à chaque lignes de la colonne Sous-Catégories mis à part la ligne « Total général ». En effet par exemple, le min et le max de la sous catégorie « Art » est lui-même « Art ».

Par contre si min([Sous-catégorie])!=max([Sous-catégorie]) alors l’expression renvoie à la ligne Total général. (!= veut dire « différent de »)

 

Donc :

IF (si) min([Sous-catégorie])=max([Sous-catégorie]) (quand les lignes de sous-catégories sont renseignées)

THEN (alors) sum({ FIXED [Catégorie],[Sous-catégorie]: COUNTD([Région])}) (on fait le compte distinct par catégorie et sous catégorie quelque soit le pays)

ELSE (sinon quand la sous catégorie n’est pas renseignée, soit la ligne Total général) sum({ FIXED : COUNTD([Région])}) (on fait le compte distinct de toutes les régions qui existent dans jeu de données)

END

 

On arrive alors au résultat attendu :

 

 

Vous me direz quid des sous-taux si l’on souhaite également avoir le sous-total de chaque catégorie de produits, et bien nous allons utiliser la même logique:

if  min([Sous-catégorie])=max([Sous-catégorie]) then sum({ FIXED [Catégorie],[Sous-catégorie] : COUNTD([Région])})

elseif min([Catégorie])=max([Catégorie]) then sum({ FIXED [Catégorie] : COUNTD([Région])})

else sum({ FIXED : COUNTD([Région])}) end

 

Vous pouvez retrouver le workbook sur Tableau Public.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.