Dans beaucoup de tableaux de bord, une fonctionnalité revient souvent : comparer deux périodes pour suivre l’évolution d’une métrique (ventes, nombre de commandes, etc.).🤸♀️ Objectif :
- Pouvoir sélectionner une période principale (ex : la semaine dernière)
- Une période de comparaison (ex : la même semaine l’année précédente)
- Visualiser les variations absolues et en pourcentage
Voici une méthode simple pour le faire dans Tableau, basée sur l’utilisation de paramètres et de champs calculés dynamiques.
1.
Créer les champs de la période principale (P1)
🛠 Champs dynamiques : début et fin de période
À adapter à la vue par défaut que vous souhaitez afficher à l’ouverture du classeur.
sql// Début de la période principale (ici : le premier jour de la semaine dernière) DATE(DATEADD("week", -1, DATE(DATETRUNC("week", TODAY())))) // Fin de la période principale (ici : la fin de la semaine dernière) DATE(DATEADD("day", -1, DATETRUNC("week", TODAY())))
Last week start
et Last week end
Si vos données ne sont pas à jour tous les jours, vous pouvez remplacer
TODAY()
par MAX([Date])
ou TODAY()-1
.🛠 Paramètres : début et fin de période
- Pour le début de la période
P1 - start
En utilisant
Last week start
dans la valeur à l’ouverture du classeur- Pour la fin de la période
P1 - end
En utilisant
Last week end
dans la valeur à l’ouverture du classeur🛠 Identifier les lignes de la période principale
Créez un champ booléen
sqlDATE([Date]) >= [P1 - start] AND DATE([Date]) <= [P1 - end]
Is in P1?
Ensuite, pour extraire la métrique dans cette période :
sqlIF [Is in P1?] THEN [Sales] ELSE 0 END
Sales P1
2.
Créer les champs de la période de comparaison (P2)
🛠 Champs dynamiques basés sur un décalage temporel
Par exemple, pour comparer à la même semaine de l’année précédente :
sql// Début de la période de comparaison (ici : le premier jour de la même semaine, l'année dernière) DATE(DATEADD("day",-364,[Last week start])) // Fin de la période de comparaison (ici : le dernier jour de la même semaine, l'année dernière) DATE(DATEADD("day",-364,[Last week end]))
Last week last year start
et Last week last year end
🛠 Paramètres : début et fin de période
- Pour le début de la période
P2 - start
En utilisant
Last week last year start
dans la valeur à l’ouverture du classeur- Pour la fin de la période
P2 - end
En utilisant
Last week last year end
dans la valeur à l’ouverture du classeur🛠 Identifier les lignes de la période de comparaison
Ensuite, même logique que précédemment pour isoler les données :
Créez un champ booléen
sqlDATE([Date]) >= [P2 - start] AND DATE([Date]) <= [P2 - end]
Is in P2?
Ensuite, pour extraire la métrique dans cette période :
sqlIF [Is in P2?] THEN [Sales] ELSE 0 END
Sales P2
3.
Calculer les variations
Avoir deux périodes, c’est bien. Mais montrer la différence entre les deux, en valeur absolue ou en pourcentage, c’est mieux !
🔢 Variation en valeur
sqlSUM([Sales P1]) - SUM([Sales P2])
Sales P1 vs. P2 (v)
Le champ ci-dessous est suffisant, mais si l’on souhaite intégrer cette valeur avec un code couleur dans un texte (pour différencier le positif du négatif, par exemple), il nous faut des champs dédiés.
sqlIF [Sales P1 vs. P2 (v)] >= 0 THEN [Sales P1 vs. P2 (v)] ELSE 0 END
Sales P1 vs. P2 (v+)
sqlIF [Sales P1 vs. P2 (v)] < 0 THEN [Sales P1 vs. P2 (v)] ELSE 0 END
Sales P1 vs. P2 (v-)
Pour pouvoir n’avoir que le champ (v+) qui s’affiche quand la différence est positive et (v-) quand elle est négative, il faut :
- Ne pas oublier la clause
ELSE 0
- Formatter ces champs
Sales P1 vs. P2 (v+)
sql(+#,##.0);" ";" "
⬆️ Ici ça rendra quelque code comme (+2,5)
Sales P1 vs. P2 (v-)
sql" ";(-#,##0.0);" "
⬆️ Ici ça rendra quelque code comme (-1,3)
📈 Variation en pourcentage
On procède de la même manière que pour la variation en valeur.
sql([Sales P1] - [Sales P2]) / [Sales P2]
Sales P1 vs. P2 (%)
Pour les différences positives et négatives :
sqlIF [Sales P1 vs. P2 (%)] >= 0 THEN [Sales P1 vs. P2 (%)] ELSE 0 END
Sales P1 vs. P2 (%+)
sqlIF [Sales P1 vs. P2 (%)] < 0 THEN [Sales P1 vs. P2 (%)] ELSE 0 END
Sales P1 vs. P2 (%-)
Format personnalisé recommandé :
Sales P1 vs. P2 (%+)
sql▲ +0%;" ";" "
⬆️ Ici ça rendra quelque code comme ▲ +8%
Sales P1 vs. P2 (%-)
sql" ";▼ -0%;" "
⬆️ Ici ça rendra quelque code comme ▼ -6%
4.
Astuce bonus : personnaliser les titres et infobulles
Vous pouvez composer des phrases dynamiques dans vos titres ou infobulles, par exemple :
<Nom de la feuille><ATTR(Sales P1)>
<AGG(Sales P1 vs. P2 (%+)
)><AGG(Sales P1 vs. P2 (%-)
)> <ATTR(Sales P1 vs. P2 (v+)
)><ATTR(Sales P1 vs. P2 (v-)
)> against LW LY
En colorant ainsi les champs, vous pourrez obtenir des titres tels que
SALES1,6M
▲ +12% (+369K) against LW LY
Pour être utilisés, les champs doivent être présents dans la vue (en Détail si vous ne souhaitez pas les afficher directement).
💬 En résumé
Avec cette méthode, vous permettez à vos utilisateurs de :
- Comparer dynamiquement des périodes choisies,
- Visualiser les écarts de performance,
- Faciliter l’analyse de saisonnalité ou de progression annuelle.
Ce n’est qu’une méthode parmi d’autres, bien sûr, à adapter à vos besoins !
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 et Power BI.
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