Dans un tableau de bord décisionnel, le temps n'est pas une simple information parmi d'autres : c'est l'axe transversal de quasiment toutes les analyses. Qu'il s'agisse de comparer un chiffre d'affaires au mois précédent, de calculer un cumul annuel à date (YTD) ou d'observer une moyenne glissante sur 12 mois, tout repose sur la présence d'une table de dates irréprochable.
Dans cette leçon, nous découvrons pourquoi et comment concevoir un calendrier DAX sur-mesure conforme aux règles de l'art.
⚠️ Le Piège n°1 : L'Option "Date/Heure automatique" de Power BI#
Par défaut, lorsque vous importez une table contenant des dates, Power BI active un mécanisme nommé Auto Date/Time.
En apparence, cela semble pratique : Power BI génère automatiquement une hiérarchie Année > Trimestre > Mois > Jour. Mais en coulisses, ce mécanisme est un désastre d'ingénierie :
- Power BI génère une table cachée distincte en mémoire vive pour chaque colonne de date de votre modèle.
- Si vous avez 6 colonnes de dates réparties sur 3 tables, vous avez 6 tables cachées en doublon qui gonflent la taille de votre fichier .pbix de 50 à 300 % !
- Vous ne pouvez pas croiser des dates de commandes et des dates d'expéditions sur un même axe temporel unifié.
La Première Action du Professionnel : Désactiver l'Auto Date/Time#
- Cliquez sur le menu Fichier en haut à gauche :
- Sélectionnez Options et paramètres :
- Cliquez sur Options :
- Dans la colonne de gauche, sous Fichier actuel > Chargement des données, décochez l'option Date/Heure automatique.
📜 Les 5 Règles d'Or d'une Table de Dates Valide#
Pour que les puissantes fonctions de Time Intelligence de Power BI fonctionnent sans fausse note, votre table de dates doit respecter 5 critères stricts :
- Continuité absolue : Elle ne doit comporter aucun trou de date (les week-ends et jours fériés doivent être présents).
- Couverture annuelle complète : Elle doit débuter le 1er janvier de l'année la plus ancienne de vos données et se terminer le 31 décembre de l'année la plus récente.
- Typage strict : Elle doit comporter au moins une colonne de type Date (sans composante horaire
00:00:00). - Unicité : Chaque date doit apparaître une et une seule fois (clé primaire unique).
- Marquage officiel : Elle doit être désignée comme Table de dates dans Power BI Desktop.
🛠️ Créer la Table de Dates en Langage DAX#
Dans la vue Données ou la vue Modèle, rendez-vous dans l'onglet Outils de table du ruban et cliquez sur Nouvelle table.
Voici la formule DAX complète et prête pour la production :
Dim_Calendrier =
VAR MinAnnee = YEAR(MIN(Fact_Ventes[OrderDate]))
VAR MaxAnnee = YEAR(MAX(Fact_Ventes[OrderDate]))
VAR DateDebut = DATE(MinAnnee, 1, 1)
VAR DateFin = DATE(MaxAnnee, 12, 31)
RETURN
ADDCOLUMNS(
CALENDAR(DateDebut, DateFin),
"Année", YEAR([Date]),
"N° Mois", MONTH([Date]),
"Mois Nom", FORMAT([Date], "MMMM"),
"Mois Court", FORMAT([Date], "MMM"),
"Année - Mois", FORMAT([Date], "yyyy-MM"),
"N° Trimestre", QUARTER([Date]),
"Trimestre", "T" & FORMAT(QUARTER([Date]), "0"),
"Année - Trimestre", YEAR([Date]) & "-T" & QUARTER([Date]),
"N° Semaine", WEEKNUM([Date], 21), -- Norme ISO 8601 (semaine commençant le lundi)
"N° Jour Semaine", WEEKDAY([Date], 2), -- 1 pour Lundi, 7 pour Dimanche
"Jour Semaine", FORMAT([Date], "dddd"),
"Est Week-end", IF(WEEKDAY([Date], 2) >= 6, "Oui", "Non")
)
🔄 Le Piège Classique : Trier le Nom du Mois par son Numéro#
Si vous insérez la colonne Mois Nom dans un graphique en barres, vous constaterez un comportement déconcertant : Power BI trie les mois par ordre alphabétique (Août, Avril, Décembre, Février...) !
Pour corriger cela en deux clics :
1. Dans la liste des champs, sélectionnez la colonne Mois Nom.
2. Dans le ruban supérieur, onglet Outils de colonne, cliquez sur Trier par colonne.
3. Choisissez N° Mois.
Désormais, vos visuels afficheront toujours vos mois dans l'ordre chronologique naturel (Janvier, Février, Mars...).
🏷️ Marquer comme Table de Dates (Mark as Date Table)#
La touche finale indispensable :
1. Sélectionnez votre table Dim_Calendrier.
2. Dans l'onglet Outils de table, cliquez sur Marquer comme table de dates > Marquer comme table de dates.
3. Dans le menu déroulant, sélectionnez la colonne principale Date et validez.
┌────────────────────────────────────────────────────────┐
│ BÉNÉFICES DU MARQUAGE OFFICIEL : │
│ 1. Suppression garantie de toutes les tables cachées │
│ 2. Validation de la continuité temporelle par Power BI │
│ 3. Déblocage du filtrage temporel dans CALCULATE │
└────────────────────────────────────────────────────────┘
🔗 Établir la Relation avec la Table de Faits#
Rendez-vous dans la vue Modèle :
- Glissez-déposez le champ Date de Dim_Calendrier vers le champ OrderDate de votre table Fact_Ventes.
- Une relation *1 à plusieurs (1:) avec direction de filtre Unique est créée automatiquement.
[!TIP] Bonne pratique d'ergonomie :
Une fois la relation établie, faites un clic droit sur la colonneOrderDatede votre table de faitsFact_Venteset cliquez sur Masquer dans la vue rapport. Ainsi, les utilisateurs seront obligés d'utiliser les champs propres de votre calendrier pour découper leurs analyses temporelles.
Votre calendrier d'entreprise est prêt et opérationnel. Dans la prochaine leçon, nous allons découvrir comment générer d'autres tables calculées en DAX pour gérer des dimensions à rôles multiples et des scénarios What-If !
Commentaires