BANg, qu’est-ce-que c’est ?Ajouter un paramètre pour changer la périodicité1. Créer le paramètre de sélection de période2. Créer le champ calculé de date dynamique3. Générer les BANs4. Modifications des champs calculés
BANg, qu’est-ce-que c’est ?
Déjà, BANg, qu’est-ce-que ça veut dire ? Big Aggregated Numbers generator.
C’est un outil qui a été créé par Tristan Guillevin, alias ladataviz. Si vous voulez y faire un tour, c’est par ici.
BANg, c’est un générateur de BANs. En d’autres termes, ça sert à rendre la création de KPIs dans Tableau bien moins fastidieuse. La gestion des dates et la comparaison dans Tableau, ça peut vite se transformer en enfer composé de dizaines de champs calculés. Le but de Tristan ici, c’est de nous proposer directement dans notre navigateur de choisir les métriques qu’on veut visualiser, et sur quelle périodicité. Les calculs sont ensuite générés automatiquement.
On choisit le workbook dans lequel on veut ajouter nos BANs, et ensuite on sélectionne les métriques et on fait le set up directement dans notre navigateur. Pas d’inquiétude quant à la sécurité car les fichiers ne sont téléchargés ou stockés nulle part. Il est même possible d’utiliser l’outil offline, une fois qu’on s’y est connecté sur son navigateur. On peut customiser la largeur du dashboard, et ajouter autant de métriques que l’on souhaite. Le set up que l’on fait sur une des score cards est répliqué à la suivante, ce qui peut aussi nous faire gagner du temps. Quand tout est prêt, il n’y a plus qu’à cliquer sur
Generate BANs
, et un nouveau workbook sera téléchargé contenant tout ce qu’il y avait sur l’original, plus les nouveaux BANs. Les champs calculés ou paramètres ajoutés sont facilement identifiables car ils contiennent BANg
dans leurs noms.À quoi ça ressemble ?
Par exemple avec la datasource Superstore, on peut choisir de voir la somme du Discount par mois en fonction de la date de commande, et de comparer le mois le plus récent à celui de l’année dernière.
On choisit tout : les couleurs, le graph (bar, line, area), et le nombre de périodes graphées (d’années à jours).
Pour plus de détails sur comment ça fonctionne, je vous invite à aller voir la vidéo de présentation de ladataviz ⬇️
Ajouter un paramètre pour changer la périodicité
BANg c’est donc top pour créer des BANs rapidement car ça nous épargne tous les calculs rébarbatifs. Par contre, il y a quelque chose qui manque (pour le moment) pour répondre aux cas d’usage les plus fréquents. Souvent, les utilisateurs ont envie de pouvoir changer de vue entre jour/semaine/mois/trimestre/année. Pour le moment, BANg ne propose pas de le faire à notre place. Par contre, il est possible de faire quelques petits changements dans les champs calculés générés automatiquement pour rendre tout ça possible.
Ici je vais vous présenter les modifications à apporter pour ajouter un paramètre de changement de périodicité dans les BANs.
Tout d’abord on ouvre un nouveau workbook Tableau où on connecte la source de données sur laquelle on souhaite travailler (ici ça sera Sample - Superstore).
1.
Créer le paramètre de sélection de période
Créez un nouveau paramètre
Param Date Setup
qui prend les valeur day, week, month, quarter, et year (ou bien les périodicités dont vous avez besoin).🔎 Il est important de respecter la casse et l’orthographe de ces mots (en anglais 🎩) car ce sont des mots clés Tableau que l’on va réutiliser dans les champs calculés plus tard. Préférez adapter la partie
Afficher en tant que
pour correspondre à ce que vous souhaitez afficher sur l’écran final.2.
Créer le champ calculé de date dynamique
Créez un champs calculé qui sera votre champ
Date
sur lequel se basera vos BANs. Ici on souhaite se référer à la date de commande. Utilisez votre paramètre pour préciser quelle partie de la date prendre en fonction de la sélection.🔎 N’oubliez pas de wrapper votre calcul par la fonction
DATE()
car pour que BANg propose ce champ à la sélection, il faut qu’il soit de type date.lessDATE( CASE [Param Date Setup] WHEN 'day' THEN [Date de commande] WHEN 'week' THEN DATETRUNC('week', [Date de commande], 'monday') WHEN 'month' THEN DATETRUNC('month', [Date de commande]) WHEN 'quarter' THEN DATETRUNC('quarter', [Date de commande]) WHEN 'year' THEN DATETRUNC('year', [Date de commande]) END )
3.
Générer les BANs
Une fois votre workbook enregistré, rendez vous sur BANg dans votre navigateur et sélectionnez le workbook sur lequel vous êtes entrain de travailler.
Assurez vous que vous êtes sur la bonne source de données, et sélectionnez la customisation qui vous intéresse.
La seule chose qui est importante est que vous utilisiez le champs
Date
que vous avez créé juste avant pour tous les drop downs liés.Ensuite téléchargez le workbook, ouvrez le, vous devriez avoir ceci ➡️
🔎 Faites attention à ce que votre paramètre
Param Date Setup
soit de la même “unité” que ce que vous avez configurez dans BANg (pour moi, ça serait week).4.
Modifications des champs calculés
Malgré le fait qu’il y a certain endroits où les changements de date se font dynamiquement grâce au champ
Date
, il y en a d’autre où l’agrégation de date entrée dans BANg (pour moi, c’est week) est écrite dans le dur. On va changer ça.4.1.
BANG - KPIis Current Period - BANG
& is Previous Period - BANG
Ici, remplacez les occurrences de week par le
Param Date Setup
lessDATETRUNC([Param Date Setup], [Date]) = DATEADD([Param Date Setup], -1, DATETRUNC([Param Date Setup], [Max date - BANG] + 1))
is Current Period - BANG
lessDATETRUNC([Param Date Setup], [Date]) = DATEADD([Param Date Setup],-1, DATEADD([Param Date Setup], -1, DATETRUNC([Param Date Setup], [Max date - BANG] + 1)))
is Previous Period - BANG
Maintenant, lorsque vous changez la sélection de Semaine à Année par exemple, les chiffres en 1 et 2 font la somme sur l’année, et plus seulement sur la semaine. Cela fonctionne car dans le paramètre nous avons bien renseigné les valeurs en day/week/month/quarter/year, qui sont des valeurs acceptées dans les fonctions
DATETRUNC()
et DATEADD()
.Légende
Pour finir sur cette partie, il faut mettre en place une légende dynamique pour que le
vs Previous Week
en 3 corresponde à ce que l’on a choisi dans le paramètre. Pour cela rien de plus simple, il suffit de créer un champ calculé Date Period Label
.less'vs Previous ' + STR([Param Date Setup]) + ':'
Et de le mettre sur la feuille de calcul dans la partie texte.
Il faut aussi changer
17 décembre 2023
pour que la période étudiée soit explicite pour l’utilisateur. Pour ça, vous pouvez faire le champs Date Label et le mettre sur la feuille de calcul dans la partie texte.lessCASE [Param Date Setup] WHEN 'day' THEN STR(DAY([Current Date - BANG])) + ' ' + STR(DATENAME('month', [Current Date - BANG])) + ' ' + STR(YEAR([Current Date - BANG])) WHEN 'week' THEN 'W' + STR(WEEK([Current Date - BANG])) + ' (' + STR(DATE([Current Date - BANG])) + ')' WHEN 'month' THEN DATENAME('month', [Current Date - BANG]) + " " + DATENAME('year', [Current Date - BANG]) WHEN 'quarter' THEN "Q" + DATENAME('quarter', [Current Date - BANG]) + ' ' + STR(YEAR([Current Date - BANG])) WHEN 'year' THEN DATENAME('year', [Current Date - BANG]) END
4.2.
BANG - EVOLx axis
Pour que l’axe des abscisses corresponde à la sélection, on doit créer un nouveau champ calculé qui va spécifier quoi afficher en fonction de s’il on est en jour, semaine, mois, trimestre, ou année. Vous pouvez l’appeler
Date Axis Label
.lessCASE [Param Date Setup] WHEN 'day' THEN DATENAME('day', [Date]) + "/" + STR(DATEPART('month', [Date])) WHEN 'week' THEN 'W' + STR(WEEK([Date])) WHEN 'month' THEN STR(DATEPART('month', [Date])) + "/" + DATENAME('year', [Date]) WHEN 'quarter' THEN "Q" + DATENAME('quarter', [Date]) + ' ' + STR(YEAR([Date])) WHEN 'year' THEN DATENAME('year', [Date]) END
On aurait aussi pu prendre le champ
Date
créé plus tôt, mais l’affichage ne correspond pas nécessairement à ce que l’on souhaite voir sur l’axe (e.g. W1 pour la semaine 1 au lieu de 01/01/2022).Remplacer le champs en colonne par
Date Axis Label
pour avoir un axe des abscisses dynamique. Date to show - BANG
Comme plus haut, remplacez les occurrences de week par le
Param Date Setup
lessDATEDIFF([Param Date Setup],DATETRUNC([Param Date Setup], [Date]), DATETRUNC([Param Date Setup], [Max date - BANG])) < 12 AND DATEDIFF('week',DATETRUNC([Param Date Setup], [Date]), DATETRUNC([Param Date Setup], [Max date - BANG])) >=0
Pour aller plus loin, vous pouvez remplacer 12 (qui indique le nombre de période passées montrées sur le graph, par un champ calculé dynamique
Number Of Days
qui pourrait ressembler à ça :lessCASE [Param Date Setup] WHEN 'day' THEN 30 WHEN 'week' THEN 12 WHEN 'month' THEN 12 WHEN 'quarter' THEN 8 WHEN 'year' THEN 4 END
Avec celle modification,
Date to show - BANG
deviendrait :lessDATEDIFF([Param Date Setup],DATETRUNC([Param Date Setup], [Date]), DATETRUNC([Param Date Setup], [Max date - BANG])) < [Number Of Days] AND DATEDIFF('week',DATETRUNC([Param Date Setup], [Date]), DATETRUNC([Param Date Setup], [Max date - BANG])) >=0
Voilà, C’est déjà prêt ! En quelques petits changements rapides, vous avez améliorés les BANs générés par BANg en y incorporant une sélection de période personnalisée.
L’auteure : Eva Despesse
BI Engineer chez UnNest, Eva est en charge des sujets de modélisation de la donnée et du dashboarding, notamment sur Tableau.
Ayant commencé dans une start-up, j’ai pu toucher aux flux de données de bout en bout. J’apprécie particulièrement faire les modélisations en bout de chaine avec le dashboarding pour suivre toute la chaine de transformation de données en information.
✉️ Me contacter : eva.despesse@unnest.co