BANg & changement de périodicité

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).
Image without caption
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.
Image without caption

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.
less
DATE( 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.
Image without caption
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).
Image without caption

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 - KPI
Image without caption
is Current Period - BANG & is Previous Period - BANG
Ici, remplacez les occurrences de week par le Param Date Setup
less
DATETRUNC([Param Date Setup], [Date]) = DATEADD([Param Date Setup], -1, DATETRUNC([Param Date Setup], [Max date - BANG] + 1))
is Current Period - BANG
less
DATETRUNC([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.
less
CASE [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 - EVOL
Image without caption
x 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.
less
CASE [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
less
DATEDIFF([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 :
less
CASE [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 :
less
DATEDIFF([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
Image without caption
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