Tuto Tableau #4 : Comparer deux périodes : méthode simple et efficace

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

  1. Pour le début de la période P1 - start
Image without caption
En utilisant Last week start dans la valeur à l’ouverture du classeur
  1. Pour la fin de la période P1 - end
Image without caption
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
sql
DATE([Date]) >= [P1 - start] AND DATE([Date]) <= [P1 - end]
Is in P1?
Ensuite, pour extraire la métrique dans cette période :
sql
IF [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

  1. Pour le début de la période P2 - start
Image without caption
En utilisant Last week last year start dans la valeur à l’ouverture du classeur
  1. Pour la fin de la période P2 - end
Image without caption
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
sql
DATE([Date]) >= [P2 - start] AND DATE([Date]) <= [P2 - end]
Is in P2?
Ensuite, pour extraire la métrique dans cette période :
sql
IF [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

sql
SUM([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.
sql
IF [Sales P1 vs. P2 (v)] >= 0 THEN [Sales P1 vs. P2 (v)] ELSE 0 END
Sales P1 vs. P2 (v+)
sql
IF [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)
Clique droit sur le champ dans la barre Données > Propriétés par défaut > Format de nombre
Clique droit sur le champ dans la barre Données > Propriétés par défaut > Format de nombre

📈 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 :
sql
IF [Sales P1 vs. P2 (%)] >= 0 THEN [Sales P1 vs. P2 (%)] ELSE 0 END
Sales P1 vs. P2 (%+)
sql
IF [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
SALES

1,6M

▲ +12% (+369K) against LW LY
Icon
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
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 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