Support formation Rapports Power BI

Time intelligence

En bref

  • Objectifs : préparer le modèle pour la time intelligence ; calculer un cumul annuel, une comparaison N-1 ou M-1 et une période glissante ; choisir la bonne fonction selon le niveau de détail du visuel.
  • Prérequis : « Table de dates » (partie 3), « CALCULATE et transition de contexte ».
  • Niveau : intermédiaire.

Pourquoi ?

Les questions de pilotage sont presque toujours temporelles : où en sommes-nous depuis le 1er janvier, combien avions-nous vendu à la même période l'an dernier, quelle est la tendance sur trois mois ? Les fonctions de time intelligence répondent à ces questions en modifiant les dates du contexte de filtre : elles s'utilisent comme arguments de filtre de CALCULATE.

Notions clés

Préparer le modèle

Power BI propose trois approches :

ApprocheMise en placeSouplesseRemarque
Date/heure automatiqueAucuneFaibleCrée une table de dates masquée par colonne de date, ce qui alourdit le modèle ; déconseillée pour les modèles importants
Time intelligence classiqueMoyenneFaibleExige une table de dates marquée ; prévue pour le calendrier grégorien (ou décalé, exercice fiscal)
Time intelligence fondée sur un calendrier (préversion)Plus importanteÉlevéeCalendriers personnalisés (4-4-5, 13 mois...), calculs à la semaine, meilleures performances

Pour la time intelligence classique, utilisée dans cette page :

  • le modèle contient une table de dates dédiée, marquée comme table de dates (Outils de table > Marquer comme table de dates) ;
  • sa colonne de dates est continue : aucun jour ne manque entre la première et la dernière date, sinon une erreur est renvoyée ;
  • la table couvre des années complètes et elle est reliée à la colonne de date de la table de faits ;
  • l'option Date/heure automatique est désactivée (Fichier > Options et paramètres > Options, rubrique Chargement des données du fichier actif, et rubrique globale pour les nouveaux fichiers).

Pour la time intelligence fondée sur un calendrier, activez la fonctionnalité en préversion Enhanced DAX Time Intelligence (Options > Fonctionnalités en préversion), puis définissez le calendrier par clic droit sur la table de dates > Options de calendrier. Les fonctions reçoivent alors le nom du calendrier au lieu de la colonne de dates :

TOTALYTD ( [Sales], 'Fiscal Calendar' )

Les calendriers ne peuvent pas encore être créés dans le service Power BI, ni utilisés avec un modèle en connexion dynamique ou composite.

Les fonctions du PBIP FonctionsDate

FonctionRôle
TOTALYTDCumul depuis le début de l'année
DATESYTDDates du début d'année à la dernière date du contexte
SAMEPERIODLASTYEARMême période, un an plus tôt
DATEADDDécale la période d'un nombre de jours, mois, trimestres ou années
PARALLELPERIODPériode complète décalée
PREVIOUSMONTHMois qui précède la première date du contexte
DATESINPERIODPériode glissante de N jours, mois...
DATESBETWEENDates entre deux bornes

Exemple

Le PBIP FonctionsDate consacre une page de rapport à chaque fonction. Modèle : Ventes (400 lignes, 2024 et 2025, date de commande et date de livraison), Produit, Geographie et Calendrier (table de dates marquée). Ouvrez les matrices avec « Développer tout » pour voir les mois.

Cumul annuel : TOTALYTD et DATESYTD

Cumul annuel = TOTALYTD ( [Montant vente], Calendrier[Date] )

Cumul annuel (DATESYTD) = CALCULATE ( [Montant vente], DATESYTD ( Calendrier[Date] ) )

Cumul annuel N-1 = CALCULATE ( [Montant vente], DATESYTD ( SAMEPERIODLASTYEAR ( Calendrier[Date] ) ) )
  • Sur la ligne mars 2025, le cumul additionne janvier, février et mars 2025 ; il repart à zéro au 1er janvier. Sur la ligne d'une année, il renvoie le total de l'année.
  • TOTALYTD accepte un 3e argument facultatif (un filtre) et un 4e qui indique une autre fin d'exercice, par exemple "30/06".
  • DATESYTD donne le même résultat dans CALCULATE, mais se combine avec d'autres fonctions, comme ici le cumul de l'année précédente. TOTALQTD et TOTALMTD ont leurs équivalents DATESQTD et DATESMTD.

[Capture : PBIP FonctionsDate, page TOTALYTD, matrice Année > Mois avec Montant vente et Cumul annuel, développée sur 2025]

Comparer à l'an dernier : SAMEPERIODLASTYEAR

Montant N-1 = CALCULATE ( [Montant vente], SAMEPERIODLASTYEAR ( Calendrier[Date] ) )

% évolution N-1 = DIVIDE ( [Montant vente] - [Montant N-1], [Montant N-1] )

Sur la ligne mars 2025, Montant N-1 renvoie les ventes de mars 2024. En 2024, il est vide (le modèle commence en janvier 2024) et DIVIDE laisse le pourcentage vide. SAMEPERIODLASTYEAR est un raccourci de DATEADD ( Calendrier[Date], -1, YEAR ).

Décaler la période : DATEADD et PARALLELPERIOD

Montant M-1 = CALCULATE ( [Montant vente], DATEADD ( Calendrier[Date], -1, MONTH ) )

Montant année précédente complète = CALCULATE ( [Montant vente], PARALLELPERIOD ( Calendrier[Date], -1, YEAR ) )
  • DATEADD décale les dates de N intervalles (DAY, MONTH, QUARTER, YEAR) ; la période garde sa forme. Sur la ligne avril 2025, Montant M-1 renvoie mars 2025 ; sur la ligne d'une année, toutes les dates reculent d'un mois (décembre N-1 à novembre N).
  • PARALLELPERIOD décale puis étend à l'intervalle complet : sur chaque mois de 2025, la mesure renvoie le total de 2024 entier.

[Capture : PBIP FonctionsDate, page DATEADD, matrice Année > Mois avec Montant vente, Montant M-1 et % évolution M-1]

Le mois précédent : PREVIOUSMONTH

Montant mois précédent = CALCULATE ( [Montant vente], PREVIOUSMONTH ( Calendrier[Date] ) )

Sur un mois, le résultat est identique à DATEADD -1 MONTH. Sur la ligne 2025, PREVIOUSMONTH renvoie seulement décembre 2024, alors que DATEADD renvoie décembre 2024 à novembre 2025. Choisissez la fonction selon le niveau de détail affiché. Fonctions voisines : PREVIOUSDAY, PREVIOUSQUARTER, PREVIOUSYEAR, NEXTMONTH.

Période glissante : DATESINPERIOD

Montant 3 derniers mois =
CALCULATE ( [Montant vente], DATESINPERIOD ( Calendrier[Date], MAX ( Calendrier[Date] ), -3, MONTH ) )

Moyenne mobile 3 mois = DIVIDE ( [Montant 3 derniers mois], 3 )

Sur la ligne juin 2025, la mesure additionne avril, mai et juin 2025. La période traverse les années : janvier 2025 inclut novembre et décembre 2024.

[Capture : PBIP FonctionsDate, page DATESINPERIOD, matrice Année > Mois avec Montant vente, Montant 3 derniers mois et Moyenne mobile 3 mois]

Entre deux dates : DATESBETWEEN

Cumul depuis l'origine =
CALCULATE ( [Montant vente], DATESBETWEEN ( Calendrier[Date], BLANK (), MAX ( Calendrier[Date] ) ) )

Montant été 2025 =
CALCULATE ( [Montant vente], DATESBETWEEN ( Calendrier[Date], DATE ( 2025, 6, 1 ), DATE ( 2025, 8, 31 ) ) )

Une borne à BLANK () signifie « depuis la première date » (ou « jusqu'à la dernière »). Le cumul depuis l'origine ne repart pas à zéro en janvier ; Montant été 2025, avec deux dates fixes, a la même valeur sur toutes les lignes de mois.

Sans fonction de time intelligence

Quand le calendrier n'est pas standard, le mois précédent peut se calculer à partir d'un numéro de mois continu (année x 12 + mois), sans fonction de time intelligence. Cet exemple suppose une colonne Calendrier[AnneeMois] de ce type, absente des PBIP de démonstration :

Montant M-1 (sans TI) =
VAR moisCourant = MAX ( Calendrier[AnneeMois] )
RETURN
    CALCULATE ( [Montant vente], REMOVEFILTERS ( Calendrier ), Calendrier[AnneeMois] = moisCourant - 1 )

Pièges et bonnes pratiques

  • Table de dates non marquée ou incomplète : les fonctions renvoient des résultats faux ou une erreur. Vérifiez que le calendrier couvre toutes les dates des faits, sans trou.
  • Mauvaise colonne de date : passez toujours la colonne de la table de dates (Calendrier[Date]), jamais celle de la table de faits (Ventes[Date]).
  • Données incomplètes : la première année n'a pas de N-1 ; la dernière peut être partielle. Une comparaison N / N-1 sur une année en cours compare une année partielle à une année complète, sauf si vous limitez les dates (par exemple avec DATESYTD).
  • Niveau du visuel : PREVIOUSMONTH, DATEADD et PARALLELPERIOD donnent le même résultat sur un mois, mais pas sur un trimestre ou une année.
  • Réutilisation : écrivez une mesure de base, puis ses variantes temporelles. Pour éviter de dupliquer N-1, cumul, évolution pour chaque mesure, utilisez un groupe de calculs (page « Groupes de calculs », partie 3) ; pour un calcul propre à un visuel (écart au mois précédent, moyenne mobile), un calcul visuel suffit (page « Calculs visuels »).

À retenir

  • La time intelligence classique exige une table de dates continue, marquée, reliée aux faits ; désactivez Date/heure automatique.
  • Les fonctions de date renvoient des tables de dates, utilisées comme filtres dans CALCULATE.
  • TOTALYTD ou DATESYTD pour un cumul, SAMEPERIODLASTYEAR pour N-1, DATEADD pour un décalage, DATESINPERIOD pour une période glissante.
  • La time intelligence fondée sur un calendrier (préversion) ouvre les calendriers personnalisés et les calculs à la semaine.

Pour aller plus loin

  • Source (Microsoft Learn, time intelligence dans Power BI)
  • Source (Microsoft Learn, fonctions de time intelligence)
  • Source (Microsoft Learn, définir et utiliser des tables de dates)
  • Source (Microsoft Learn, aide à la création de tables de dates)
  • Source (SQLBI, comparer des périodes équivalentes)
  • Source (SQLBI, moyenne glissante sur 12 mois)

Exercice

Mise en pratique DAX, thème 2 | Comparaisons dans le temps (N-1, cumul, mois précédent, moyenne mobile, 12 mois glissants, meilleur mois) et thème 6 | Objectifs et budget, question 6.3 (objectif cumulé).