Ces derniers temps je travaille beaucoup avec des financiers, et une question revient fréquemment: Comment faire un diagramme en cascade ? ou un Bridge ? ou un Build-up ? Toutes ces expressions reviennent sensiblement à la même chose dans Tableau, et nous allons explorer ensemble comment s'y prendre pour le réaliser.Dans un premier temps, nous allons voir comment réaliser un diagramme en cascade simple, puis dans un deuxième temps, nous mixerons cette technique avec la
manipulation des totaux qui a été vue précédent dans un autre post pour la réalisation d'un bridge financier typique.
Technique simple de diagramme en cascade
Pour réaliser cette recette, vous aurez besoin d'une mesure et d'une dimension et d'un soupçon de doigté. Pour commencer il est nécessaire de construire une vue de base avec la dimension et la mesure choisie. Dans notre exemple nous allons utiliser les sous-catégories et les bénéfices du fichier 'Exemple - Hypermarché' qui est installé de base avec Tableau.
Une fois que l'on a construit cette vue, il est nécessaire de cliquer sur la mesure SOMME(Bénéfice) et choisir un total cumulé dans les 'Calcul de table rapide' et de choisir 'Barres de Gantt' dans la fiche des repères pour le type de graphique.
Une fois cette étape faite, on viendra créer un champ qui sera l'inverse de la mesure avec laquelle on travaille, et on va placer ce nouveau champ calculé sur la Taille dans la fiche des repères. Pourquoi ? Parce que l'on souhaite avoir une barre qui parte du dessous du trait du diagramme de Gantt et non au-dessus. (N'hésitez pas à essayer avec la mesure initiale pour voir la différence ;-) )Dans notre exemple, cela nous donne la formule suivante: -
[Bénéfice]Il ne reste plus qu'à rajouter la mesure Bénéfice sur la couleur et de rajouter les Totaux généraux des lignes, afin d'obtenir le résultat suivant. On trouvera d'ailleurs le classeur sur
Tableau Public.
Maintenant croisons cette technique avec le post sur la
manipulation des totaux.
Le bridge financier pour les années N et N-1 par sous-catégories
La technique de base s'applique, les deux changements majeurs sont deux champs calculés: l'un pour créer la dimension nécessaire pour la partionnement de la donnée et l'autre pour la couleur. Nous allons créer cet exemple avec des données 2016-2017.Commençons par le partionnement. Il faut comprendre que Tableau a besoin d'une dimension sur laquelle appliquer le total cumulé du champ Bénéfice. On a besoin de pouvoir séparer d'un coté la totalité des Bénéfices de l'année 2016 et mais également afficher les bénéfices 2017 de chaque sous-catégorie. Pour ce faire nous allons utiliser le calcul suivant :Nom du champ :
sous catégorie N et N-1IF
YEAR(
[Date de commande])=2016 then '2016'ELSE
[Sous-catégorie] END
Comment lire cette formule?
Lorsque les lignes de la base de données font référence à l'année 2016 alors nous les isolons dans un bloc unique appelé '2016', et tout le reste de la donnée sera subdivisée par sous-catégorie.Le bridge doit porter uniquement sur 2016 et 2017, il est donc nécessaire d'appliquer un filtre sur le champ Date de commande pour les années 2016 ET 2017. En effet la requête envoyée par Tableau à la base de données concernant le filtre s'applique avant notre calcul, c'est la raison pour laquelle il faut inclure 2016. (Voir l'aide en ligne sur l'
ordre des opérations)
Maintenant ce qui est interessant c'est de pouvoir assigner automatiquement 4 couleurs différentes: une pour les bénéfices 2016, une pour les bénéfices totaux de 2016 et 2017, une pour les gains et une dernière pour les pertes de chaque sous-catégories.C'est à ce moment là qu'intervient la technique de
manipulation des totaux. Voici la formule que l'on va construire dans Tableau :Nom du champ :
CouleurIF
MIN(
[sous catégorie N et N-1])=
MAX(
[sous catégorie N et N-1]) then(IF
MIN(
[sous catégorie N et N-1])=
'2016' then
'Bénéfices 2016'ELSEIF
SUM(
[Bénéfice])>0 then
'Gain' else
'Perte' END)ELSE
'Bénéfices 2016 et 2017' END
Comment lire cette formule ?
IF
MIN(
[sous catégorie N et N-1])=
MAX(
[sous catégorie N et N-1]) then **Lorsque le partionnement que l'on a construit est visible dans les colonnes alors on applique le calcul suivant**(IF
MIN(
[sous catégorie N et N-1])=
'2016' then
'Bénéfices 2016' **Lorsque l'on est sur les données de l'entête 2016 alors on assigne la valeur 'Bénéfices 2016'ELSEIF
SUM(
[Bénéfice])>0 then
'Gain' else
'Perte' END)
**Lorsque la somme des bénéfices d'une catégorie est supérieure à zéro alors nous assignons la valeur 'Gains' sinon 'Pertes'**Attention: Vous remarquerez que nous avons été obligé de rajouter la fonction
MIN() sur la ligne des Bénéfices 2016, la raison est parce que Tableau ne mélange pas dans un même champ calculé des fonctions agrégation et de non-agrégation, or comme nous devons utiliser
SUM(
[Bénéfice]) et
MIN(
[sous catégorie N et N-1])=
MAX(
[sous catégorie N et N-1]) alors on applique une agrégation de complaisance sur IF
MIN(
[sous catégorie N et N-1])=
'2016' then
'Bénéfices 2016'. En effet le minimum de la valeur textuelle 2016 est lui-même, soit 2016. (Nous aurions aussi pu utiliser MAX() ou ATTR()). Voici un article interessant à lire sur le sujet.ELSE
'Bénéfices 2016 et 2017' END **Lorsque le Total Général apparait on assigne la valeur 'Bénéfices 2016 et 217'**Une fois appliquée, et que l'on a changé le nom Total Général dans le formatage, on obtient le résultat suivant :
Vous pouvez récupérer le classeur avec l'exemple sur
Tableau Public.Amusez-vous bien !