Power BI · Cours interactif
Compétence · DAX avancé

Time Intelligence & fonctions avancées

Le niveau analyste : comparer des périodes, cumuler, classer, isoler une donnée, créer des tables avec SUMMARIZE, manier les variables et calculer des moyennes mobiles.

🎚️ Avancé 📁 02 - base-DAX2.xlsx
Ta progression
0% 0 / 10 modules
Quel outil utilises-tu ?
Les instructions s'adaptent à ton choix (mémorisé).
🍎 Parcours web (Mac)

Toutes les fonctions DAX de ce cours (SAMEPERIODLASTYEAR, RANKX, SUMMARIZE, variables…) sont identiques sur le web : copie-colle les formules telles quelles. Crée les mesures via Nouvelle mesure dans la modélisation web (« Ouvrir le modèle de données ») ou en éditant un rapport. La mesure rapide (module 10) existe aussi en ligne.

📁 À importer pour tout le cours : 02 - base-DAX2.xlsx — table BaseVente (tous les modules utilisent cette base).

Fichier à télécharger : 02 - base-DAX2.xlsx. On y retrouve la table BaseVente avec une colonne Date de vente.

📗 Tu connais Excel ? Voici l'équivalent des fonctions DAX de ce cours
En DAX (Power BI)≈ En ExcelL'idée
SAMEPERIODLASTYEAR()(pas de fonction : on décale d'un an)Comparer à l'année précédente (N-1)
TOTALYTD / MTD / QTD()Somme cumulée (YTD)Cumul depuis le début de l'année / mois / trimestre
PREVIOUSMONTH()Pointer le mois précédent (décalage)Les données du mois d'avant
RANKX()RANG() / RANG.EQ()Classer (1er, 2e, 3e…)
KEEPFILTERS()(pas d'équivalent direct)Cibler une valeur sans écraser les filtres
SUMMARIZE()Tableau croisé dynamiqueRegrouper et résumer dans une table
FILTER()FILTRE() / critères de SOMME.SI.ENSNe garder que les lignes voulues
VAR … RETURNLET()Nommer une valeur pour la réutiliser
SELECTEDVALUE()Lire la valeur choisie (liste/segment)Réagir à la sélection de l'utilisateur
AVERAGE() / AVERAGEX()MOYENNE() / moyenne par groupeMoyenne simple / moyenne d'un calcul
MONTH() · DATE() · FORMAT()MOIS() · DATE() · TEXTE()Extraire / construire / formater une date

⚠️ Analogies pour visualiser : le DAX réagit au contexte des visuels, ce qu'Excel ne fait pas. Mais l'intuition Excel aide énormément à démarrer.

Pré-requis indispensable : les fonctions de Time Intelligence (modules 1 à 3) ont besoin d'une colonne de date continue (sans trous). Active la hiérarchie de dates automatique (Fichier › Options › Chargement des données) ou crée une vraie table de dates. On réutilise la mesure CA total de la compétence DAX.

1

SAMEPERIODLASTYEAR() — comparer à N-1

Mesurer l'évolution par rapport à l'année précédente
✓ Terminé

Comparer les ventes à la même période de l'année précédente (N-1).

DAX — CA année précédente
CA N-1 =
CALCULATE (
    SUM ( BaseVente[Chiffre d'affaires] ) ,
    SAMEPERIODLASTYEAR ( BaseVente[Date de vente] )
)

Et l'évolution en % :

DAX — Évolution vs N-1
Évolution % =
DIVIDE ( [CA total] - [CA N-1] , [CA N-1] )

≈ En Excel : il n'y a pas de fonction dédiée — tu irais chercher « à la main » la même période un an plus tôt (décalage de cellules). DAX le fait automatiquement en une formule.

SAMEPERIODLASTYEAR décale le contexte de date d'exactement un an. Place ces mesures dans une matrice avec l'année en lignes pour voir la comparaison.

Histogramme comparant le CA et le CA de la période précédente par année, trimestre et mois
Visuel comparant le CA et le CA de la période précédente (par année / trimestre / mois).
✅ À toi de jouer
2

TOTALMTD / TOTALQTD / TOTALYTD — cumuls

Cumuler depuis le début du mois, trimestre ou année
✓ Terminé

Cumuler les ventes par période : MTD (Month-To-Date), QTD (Quarter-To-Date), YTD (Year-To-Date).

DAX — Cumul du mois
CA cumul mois = TOTALMTD ( SUM ( BaseVente[Chiffre d'affaires] ) , BaseVente[Date de vente] )
DAX — Cumul trimestre & année
CA cumul trimestre = TOTALQTD ( SUM ( BaseVente[Chiffre d'affaires] ) , BaseVente[Date de vente] )
CA cumul année     = TOTALYTD ( SUM ( BaseVente[Chiffre d'affaires] ) , BaseVente[Date de vente] )

≈ En Excel : c'est la somme cumulée (Year-To-Date) que tu construirais avec une plage qui s'agrandit, ex. =SOMME($B$2:B2) recopiée vers le bas.

Place « CA cumul année » dans une courbe avec les mois en axe : tu obtiens la courbe en escalier classique d'un cumul annuel qui repart à zéro chaque 1ᵉʳ janvier.

3

PREVIOUSMONTH() — le mois précédent

Afficher les données du mois d'avant
✓ Terminé

Afficher le CA du mois précédent pour le comparer au mois courant.

DAX — CA du mois précédent
CA mois précédent =
CALCULATE (
    SUM ( BaseVente[Chiffre d'affaires] ) ,
    PREVIOUSMONTH ( BaseVente[Date de vente] )
)

≈ En Excel : revient à pointer la cellule du mois précédent (un décalage d'une ligne dans un tableau mensuel).

Même logique que SAMEPERIODLASTYEAR, mais le décalage est d'un mois. Famille proche : PREVIOUSDAY, PREVIOUSQUARTER, PREVIOUSYEAR.

4

RANKX() — classer les produits

Établir un classement par chiffre d'affaires
✓ Terminé

Classer les produits par chiffre d'affaires (1 = meilleur). Le classement doit se mettre à jour automatiquement quand on filtre par ville.

DAX — Classement des produits
Rang produit =
RANKX (
    ALL ( BaseVente[Produit] ) ,   -- l'ensemble des produits à classer
    [CA total] ,                  -- le critère de classement
    , DESC                       -- du plus grand au plus petit
)

Pourquoi ALL() ? Sans lui, chaque ligne ne « verrait » que son propre produit et serait classée 1ᵉ. ALL(BaseVente[Produit]) dit à RANKX de comparer tous les produits entre eux.

≈ En Excel : c'est la fonction RANG() (ou RANG.EQ()). La différence : RANKX reclasse automatiquement quand on filtre (par ville, par date…).

Ajoute une Ville dans un segment : le contexte de filtre change, et le classement des produits se recalcule par ville automatiquement.

✅ À toi de jouer
5

KEEPFILTERS() — cibler sans tout écraser

Isoler un produit en respectant les autres filtres
✓ Terminé

Isoler le CA du produit JEAN, mais sans écraser les autres filtres du visuel (date, ville…).

DAX — CA Jean avec KEEPFILTERS
CA Jean ciblé =
CALCULATE (
    [CA total] ,
    KEEPFILTERS ( BaseVente[Produit] = "Jean" )
)

≈ En Excel : pas d'équivalent direct — c'est une notion propre au moteur de filtres de Power BI. Retiens l'idée : « cibler en plus des filtres déjà là », pas « à la place ».

La différence subtile : un filtre normal dans CALCULATE remplace le filtre existant sur la colonne. KEEPFILTERS s'ajoute aux filtres déjà présents (intersection). Résultat : si l'utilisateur a déjà sélectionné « Pull » dans un segment, la mesure renverra un blanc (Jean ∩ Pull = ∅) au lieu de forcer Jean.

6

SUMMARIZE() — créer une table de synthèse

Extraire un résumé (quantité max par produit) puis le cumuler
✓ Terminé

Trouver la quantité maximale vendue, puis la cumuler par contexte de filtre (département ou ville).

SUMMARIZE crée une table résumée : on choisit une colonne de regroupement et on ajoute des colonnes calculées.

DAX — Quantité max par produit (table)
SUMMARIZE (
    BaseVente ,
    BaseVente[Produit] ,           -- regroupement
    "Q max" , MAX ( BaseVente[Quantité] )   -- colonne ajoutée
)

Pour obtenir le cumul de ces quantités max par filtre, on enveloppe le tout dans SUMX :

DAX — Cumul des quantités max
Cumul Q max =
SUMX (
    SUMMARIZE (
        BaseVente ,
        BaseVente[Produit] ,
        "Q max" , MAX ( BaseVente[Quantité] )
    ) ,
    [Q max]
)

≈ En Excel : c'est exactement un tableau croisé dynamique — regrouper par produit et résumer (ici le max par produit), mais sous forme de table réutilisable dans une formule.

Schéma mental : SUMMARIZE fabrique une mini-table (Produit + Q max), puis SUMX parcourt cette mini-table et additionne la colonne « Q max ». Le résultat s'adapte au filtre (département/ville) du visuel.

7

FILTER() & les variables (VAR / RETURN)

Croiser plusieurs critères et rendre le code lisible
✓ Terminé

Calculer un critère précis : le CA des « Jean » au mois de juin.

FILTER permet d'exprimer plusieurs conditions combinées avec && (ET) ou || (OU) :

DAX — CA Jean en juin
CA Jean juin =
CALCULATE (
    SUM ( BaseVente[Chiffre d'affaires] ) ,
    FILTER (
        BaseVente ,
        BaseVente[Produit] = "Jean" && MONTH ( BaseVente[Date de vente] ) = 6
    )
)

Avec une variable (VAR / RETURN)

Les variables rendent le code lisible et facile à modifier : on déclare une valeur une fois, on la réutilise.

DAX — version avec variable
CA Jean juin =
VAR Produit = "Jean"
RETURN
    CALCULATE (
        SUM ( BaseVente[Chiffre d'affaires] ) ,
        FILTER (
            BaseVente ,
            BaseVente[Produit] = Produit && MONTH ( BaseVente[Date de vente] ) = 6
        )
    )

VAR / RETURN : on déclare des variables après VAR, puis on écrit le résultat après RETURN. Pour changer de produit, il suffit de modifier une seule ligne.

≈ En Excel : FILTER() ≈ la fonction FILTRE() (ou les critères de SOMME.SI.ENS). Et VAR … RETURN ≈ la fonction LET() d'Excel, qui nomme une valeur pour la réutiliser.

✅ À toi de jouer
8

SELECTEDVALUE() — cumuler jusqu'au mois choisi

Réagir à la sélection de l'utilisateur dans un segment
✓ Terminé

Objectif 1 : créer une table « Liste mois ». Objectif 2 : une mesure qui cumule le CA jusqu'au mois sélectionné.

A. Préparer les colonnes & la table des mois

DAX — Colonnes Num Mois & Mois
Num Mois = MONTH ( BaseVente[Date de vente] )
Mois     = FORMAT ( DATE ( 2020 , BaseVente[Num Mois] , 1 ) , "mmmm" )
DAX — Nouvelle table « Liste mois »
Liste mois = SUMMARIZE ( BaseVente , BaseVente[Num Mois] , BaseVente[Mois] )

B. La mesure de cumul

DAX — CA cumulé jusqu'au mois sélectionné
CA cumulé mois sélectionné =
VAR ms = SELECTEDVALUE ( 'Liste mois'[Num Mois] , 12 )
RETURN
    CALCULATE (
        SUM ( BaseVente[Chiffre d'affaires] ) ,
        FILTER ( BaseVente , BaseVente[Num Mois] <= ms )
    )

≈ En Excel : comme lire la valeur choisie dans une liste déroulante, puis l'utiliser dans une formule. Ici, le segment « mois » joue le rôle de la liste déroulante.

SELECTEDVALUE renvoie la valeur si une seule est sélectionnée dans le segment, sinon la valeur par défaut (ici 12 = décembre, donc l'année entière). On cumule ensuite tous les mois ≤ mois choisi.

✅ À toi de jouer
9

AVERAGE() & AVERAGEX()

Moyenne d'une colonne vs moyenne par critère
✓ Terminé

Calculer la moyenne d'une vente, puis la moyenne du CA par mois.

DAX — Moyenne d'une vente
CA moyen d'une vente = AVERAGE ( BaseVente[Chiffre d'affaires] )
DAX — Moyenne par mois (AVERAGEX)
CA moyen par mois =
AVERAGEX (
    VALUES ( BaseVente[Date de vente].[Mois] ) ,
    [CA total]
)

≈ En Excel : AVERAGEMOYENNE(). AVERAGEX ≈ faire la moyenne d'un calcul effectué par groupe (comme une moyenne des sous-totaux d'un TCD).

AVERAGE moyenne une colonne (ligne par ligne). AVERAGEX moyenne une expression évaluée par groupe : ici, il calcule le CA total de chaque mois, puis fait la moyenne de ces 12 totaux. Ce n'est pas du tout la même chose !

10

Moyenne mobile (mesure rapide)

Lisser une courbe sur les 3 derniers mois
✓ Terminé

Créer une moyenne mobile du CA total sur les 3 derniers mois pour lisser les variations.

La méthode simple — Mesure rapide

  1. Clic droit sur la table → Nouvelle mesure rapide.
  2. Calcul : Moyenne mobile. Champ de base = CA total, période = 3 mois.
  3. Power BI génère automatiquement la formule DAX complète.

La formule produite par Power BI ressemble à ceci (à connaître, pas à taper à la main) :

DAX généré — Moyenne mobile 3 mois
Moyenne mobile CA TOTAL =
IF (
    ISFILTERED ( BaseVente[Date de vente] ) ,
    ERROR ( "Les mesures de Time Intelligence doivent être filtrées par une colonne de dates." ) ,
    VAR __LAST_DATE = ENDOFMONTH ( BaseVente[Date de vente].[Date] )
    VAR __DATE_PERIOD =
        DATESBETWEEN (
            BaseVente[Date de vente].[Date] ,
            STARTOFMONTH ( DATEADD ( __LAST_DATE , -3 , MONTH ) ) ,
            __LAST_DATE
        )
    RETURN
        AVERAGEX (
            CALCULATETABLE (
                SUMMARIZE (
                    VALUES ( BaseVente ) ,
                    BaseVente[Date de vente].[Année] ,
                    BaseVente[Date de vente].[Trimestre] ,
                    BaseVente[Date de vente].[Mois]
                ) ,
                __DATE_PERIOD
            ) ,
            CALCULATE ( [CA total] , ALL ( BaseVente[Date de vente].[Jour] ) )
        )
)

≈ En Excel : la moyenne mobile que tu calculerais avec MOYENNE() sur une fenêtre glissante (ex. les 3 derniers mois). Power BI génère la formule à ta place.

Tu reconnais maintenant presque toutes les briques : VAR/RETURN, AVERAGEX, SUMMARIZE, CALCULATE, ALL… Les mesures rapides sont un excellent moyen d'apprendre en lisant le DAX qu'elles génèrent.

✅ À toi de jouer

🏆 Félicitations ! Tu as terminé les 4 compétences. Tu sais transformer, modéliser et analyser des données avec Power BI, du nettoyage Power Query jusqu'au DAX avancé. Prochaine étape : publier ton rapport sur le service Power BI et le partager !