A3iformations · Power BI Desktop · Module 4

Colonnes calculées et mesures DAX

Passer des données brutes aux indicateurs : comprendre la différence entre colonne et mesure, lire et écrire une formule DAX, puis utiliser les fonctions qui servent tous les jours.

Durée : 7 hNiveau : opérationnelPréparation TOSA Power BI

⬇Fichier d’exemple Excel

Ce module reprend le modèle construit au module 3 Modéliser les données. Importez les quatre tableaux T_Ventes, T_Clients, T_Produits et T_Calendrier, puis créez les relations 1:* avant de commencer.

XLSX

A3I_PowerBI_Modele_Ventes.xlsx

280 ventes de formations en 2025, 20 clients, 12 formations, calendrier complet. Tous les exemples et les résultats attendus de cette page sont calculés sur ce fichier.

Télécharger le fichier

4.1Définir mesures et colonnes

Les deux s’écrivent en DAX, mais elles ne calculent pas au même moment ni au même endroit.

Objectifs
  • Choisir entre colonne calculée et mesure
  • Créer l’une et l’autre dans Power BI Desktop
  • Ranger ses mesures dans une table dédiée
Colonne calculéeMesure
CalculéeUne fois, à l’actualisation, ligne par ligneÀ chaque affichage, selon les filtres du visuel
StockéeOui, elle alourdit le fichierNon, seule la formule est enregistrée
ContexteContexte de ligne : elle « voit » la ligne en coursContexte de filtre : elle « voit » ce que le visuel filtre
Usage typiqueClasser, regrouper, filtrer, axe de graphiqueTotaux, ratios, moyennes, comparaisons
ExempleDélai = DATEDIFF(Ventes[DateCommande], Ventes[DateLivraison], DAY)CA = SUM(Ventes[Montant])

Créer une colonne calculée

  1. Dans le volet Données, sélectionnez la table Ventes
  2. Outils de table › Nouvelle colonne
  3. Saisissez Délai = DATEDIFF(Ventes[DateCommande], Ventes[DateLivraison], DAY) puis Entrée
  4. Vérifiez dans la Vue Table : chaque ligne a sa valeur

Créer une mesure

  1. Sélectionnez la table qui accueillera la mesure
  2. Accueil › Nouvelle mesure
  3. Saisissez CA = SUM(Ventes[Montant]) puis Entrée
  4. Dans Outils de mesure, choisissez le format Devise € et 0 décimale
Astuce : une table de mesures

Accueil › Entrer des données, nommez la table _Mesures et chargez-la vide. Déplacez-y vos mesures (Outils de mesure › Table principale). Elles restent groupées en haut du volet Données.

Attention

Une colonne calculée qui fait un total ne réagit pas aux segments. Si le résultat doit changer quand on filtre, c’est une mesure.

4.2Introduction au langage DAX

DAX (Data Analysis Expressions) est le langage de formules de Power BI, de Power Pivot et d’Analysis Services. Sa syntaxe ressemble à celle d’Excel, mais il travaille sur des tables et des colonnes, jamais sur des cellules.

Les règles d’écriture

ÉlémentÉcritureExemple
Colonne'Table'[Colonne] (apostrophes si espace)Ventes[Montant]
Mesure[Mesure], sans nom de table[CA]
TexteEntre guillemets doubles"Data"
Concaténation&Clients[IdClient] & " – " & Clients[Ville]
Et / Ou&& et ||Ventes[Quantite] >= 2 && Ventes[PrixUnitaire] > 1000
Liste de valeursIN { }Produits[Categorie] IN {"Data", "PAO"}
Commentaire// en fin de ligne// CA hors orphelins

Variables : VAR et RETURN

Une variable stocke un résultat intermédiaire. La formule devient lisible et le calcul n’est fait qu’une fois.

Part du CA =
VAR CaVisuel = [CA]
VAR CaTotal  = CALCULATE([CA], ALL(Produits))
RETURN
    DIVIDE(CaVisuel, CaTotal)
Bon à savoir

Maj + Entrée passe à la ligne dans la barre de formule. Ctrl + molette zoome. Une formule sur plusieurs lignes, une idée par ligne, se relit et se corrige bien plus vite.

4.3Les éléments clés d’une fonction

Toute formule DAX suit le même schéma. Savoir le lire permet de comprendre l’aide en ligne et les messages d’erreur.

Panier moyen = DIVIDE([CA], [Nb ventes], 0) ① Nom de la mesure ② Fonction ③ Arguments obligatoires ④ Argument facultatif
Le résultat d’une division par zéro est remplacé par 0 au lieu d’une erreur.
ÉlémentRôle
① NomCe qui apparaît dans le volet Données. Il doit être unique dans le modèle
② FonctionEn majuscules par convention. L’IntelliSense propose la liste dès la première lettre
③ Arguments obligatoiresSéparés par des virgules, dans l’ordre attendu par la fonction
④ Argument facultatifNoté entre crochets dans l’aide : DIVIDE(numérateur, dénominateur [, autreRésultat])

Fonctions d’agrégation et itérateurs « X »

SUM(Ventes[Montant]) additionne une colonne existante. SUMX(Ventes, Ventes[Quantite] * Ventes[PrixUnitaire]) parcourt la table ligne par ligne, calcule l’expression, puis additionne. Avec un itérateur, la colonne Montant n’est plus nécessaire.

Attention

Le premier argument d’un itérateur est une table, pas une colonne. SUMX(Ventes[Montant], …) renvoie une erreur.

4.4Maîtriser les principales fonctions DAX

Cinq familles couvrent l’essentiel des besoins. Chaque exemple fonctionne sur le fichier du module.

Agrégation

FonctionExempleRésultat sur le fichier
SUMCA = SUM(Ventes[Montant])588 160 €
COUNTROWSNb ventes = COUNTROWS(Ventes)280
DISTINCTCOUNTNb clients = DISTINCTCOUNT(Ventes[IdClient])21 (dont C999)
AVERAGE / AVERAGEXDélai moyen = AVERAGE(Ventes[Délai])20,1 jours
SUMXCA bis = SUMX(Ventes, Ventes[Quantite] * Ventes[PrixUnitaire])588 160 €

Logiques

Taille vente =          // colonne calculée dans Ventes
SWITCH(
    TRUE(),
    Ventes[Montant] >= 3000, "Grosse",
    Ventes[Montant] >= 1000, "Moyenne",
    "Petite"
)

IF(condition, si_vrai, si_faux) pour un test simple, SWITCH(TRUE(), …) dès qu’il y a plus de deux cas. Résultat attendu : 57 grosses, 157 moyennes, 66 petites ventes. Autres fonctions utiles : AND, OR, NOT, ISBLANK, IFERROR.

Texte

FonctionExemple (colonne calculée)Résultat
& / CONCATENATEClient = Clients[IdClient] & " – " & Clients[RaisonSociale]C001 – Boulangerie Delattre
UPPERVille MAJ = UPPER(Clients[Ville])HESDIN
LEFT / RIGHT / MIDLogiciel = LEFT(Produits[Formation], SEARCH(" ", Produits[Formation]) - 1)Excel
FORMATMois commande = FORMAT(Ventes[DateCommande], "mmmm yyyy")septembre 2025
LENLongueur = LEN(Clients[RaisonSociale])20
Attention

FORMAT renvoie du texte : une colonne « septembre 2025 » se trie par ordre alphabétique. Triez-la avec Outils de colonne › Trier par colonne sur Calendrier[AnneeMois].

Dates

FonctionExempleUsage
YEAR, MONTH, DAYMois = MONTH(Ventes[DateCommande])Extraire une partie de date
DATEDIFFDATEDIFF(Ventes[DateCommande], Ventes[DateLivraison], DAY)Écart entre deux dates
TODAY, EOMONTHFin de mois = EOMONTH(Ventes[DateCommande], 0)Dates de référence
TOTALYTDCA cumulé = TOTALYTD([CA], Calendrier[Date])Cumul depuis le 1er janvier
SAMEPERIODLASTYEARCA N-1 = CALCULATE([CA], SAMEPERIODLASTYEAR(Calendrier[Date]))Comparaison avec l’an passé
Bon à savoir

Les fonctions d’intelligence temporelle (TOTALYTD, DATEADD…) exigent une table de dates continue. Sélectionnez Calendrier puis Outils de table › Marquer comme table de dates, colonne Date. Résultat attendu : CA cumulé de 144 110 € fin mars et 292 270 € fin juin.

Filtrage

CA Data =
CALCULATE([CA], Produits[Categorie] = "Data")            // 98 630 €

% du CA =
DIVIDE([CA], CALCULATE([CA], ALL(Produits)))             // Data : 16,8 %

CA orphelins =
CALCULATE([CA], ISBLANK(Clients[RaisonSociale]))        // 10 510 €
FonctionCe qu’elle fait
CALCULATERecalcule une expression en ajoutant ou remplaçant des filtres. C’est la fonction la plus importante de DAX
FILTERRenvoie une table filtrée par une condition complexe : FILTER(Ventes, Ventes[Quantite] * Ventes[PrixUnitaire] > 3000)
ALL / REMOVEFILTERSIgnore les filtres d’une table ou d’une colonne, pour obtenir un total de référence
ALLEXCEPTIgnore tous les filtres sauf ceux des colonnes citées
USERELATIONSHIPActive une relation inactive le temps du calcul (voir module 3)
Astuce : DIVIDE plutôt que /

DIVIDE([CA], [Nb ventes]) renvoie une valeur vide au lieu d’une erreur quand le dénominateur vaut zéro. Les visuels restent propres.

✎Exercices

Fichier de travail : A3I_PowerBI_Modele_Ventes.xlsx. Les résultats attendus permettent de vous corriger seul.

Premières mesuresDécouverte

Créez la table _Mesures, puis CA, Nb ventes, Nb clients et Panier moyen avec DIVIDE. Affichez-les dans des cartes. Attendu : 588 160 €, 280, 21, 2 100,57 €.

Colonnes de classementApplication

Ajoutez dans Ventes les colonnes Délai et Taille vente. Construisez un histogramme du CA par Taille vente et une carte du délai moyen. Attendu : 57 / 157 / 66 ventes, 20,1 jours.

Analyse filtréeMaîtrise

Marquez Calendrier comme table de dates. Créez CA Data, % du CA, CA cumulé et CA orphelins. Placez-les dans une matrice par catégorie et par mois. Attendu : 98 630 €, 16,8 %, 292 270 € fin juin, 10 510 €.

✓Quiz de validation

Cliquez sur une réponse. Score : 0 / 5

A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA · Auxi-le-Château (62)