Créer des Colonnes Calculées en DAX : Bonnes Pratiques et Pièges de Performance

@joekakone

Joseph Konka @joekakone

03/03/2026 · 7 min

Comprenez la différence fondamentale entre colonnes calculées et mesures DAX : découvrez la mécanique du contexte de ligne, l'impact sur la mémoire VertiPaq et maîtrisez RELATED et SWITCH(TRUE()).

Lorsque l'on débute sur Power BI après des années de pratique sur Microsoft Excel, on a naturellement tendance à reproduire ses anciens réflexes : ajouter une nouvelle colonne à chaque fois que l'on a besoin d'un calcul.

Pourtant, en modélisation décisionnelle, créer une colonne calculée doit être l'exception, et non la règle.

Dans cette leçon, nous découvrons le fonctionnement intime d'une colonne calculée, pourquoi son utilisation excessive peut asphyxier votre rapport, et quelles sont les fonctions clés pour les exploiter à bon escient.


📚 Ne confondez pas : Colonne Calculée vs Mesure DAX#

C'est la distinction cardinale que tout analyste préparant l'examen PL-300 doit maîtriser sur le bout des doigts :

┌─────────────────────────────────┐     ┌─────────────────────────────────┐
│        COLONNE CALCULÉE         │     │           MESURE DAX            │
├─────────────────────────────────┤     ├─────────────────────────────────┤
│ • Calculée LIGNE PAR LIGNE      │     │ • Calculée DYNAMIQUEMENT        │
│ • Évaluée lors du rafraîchissement│   │ • Évaluée à la volée selon les  │
│   (au chargement des données)   │     │   filtres actifs sur le visuel  │
│ • Stockée physiquement en RAM   │     │ • 0 octet consommé sur disque   │
│ • Contexte d'évaluation :       │     │ • Contexte d'évaluation :       │
│   Contexte de ligne (Row Context)│    │   Contexte de filtre (Filter)   │
│ • Utilisable en filtre/axe      │     │ • Utilisable en valeur agrégée  │
└─────────────────────────────────┘     └─────────────────────────────────┘

[!WARNING] La règle d'or de performance :
Ne créez JAMAIS une colonne calculée pour calculer un total ou un ratio numérique (par exemple : ne créez pas de colonne Prix Vente * Quantite sur une table de 10 millions de lignes). Utilisez toujours une Mesure explicite avec un itérateur comme SUMX(Fact_Ventes, [Quantite] * [PrixUnitaire]). Vous économiserez des centaines de mégaoctets de mémoire vive !


🎯 Quand Créer Légitimement une Colonne Calculée ?#

Il existe seulement 3 situations où une colonne calculée est pleinement justifiée :

  1. Pour alimenter les axes d'un graphique : Vous souhaitez regrouper vos clients par tranches d'âge (Moins de 25 ans, 25-50 ans, Plus de 50 ans) pour les afficher sur l'axe X d'un histogramme.
  2. Pour créer une trancheuse de filtre (Slicer) : Vous avez besoin d'un bouton de filtre permettant aux managers de filtrer par Statut de commande (Livrée, En cours, Annulée).
  3. Pour créer une clé de jointure composite : Lorsque deux tables doivent être reliées sur une concaténation de deux champs (CodeMagasin & "-" & CodeRayon).

🛠️ Les Fonctions DAX Incontournables pour vos Colonnes#

1. La segmentation propre avec SWITCH(TRUE(), ...)#

Oubliez les instructions IF imbriquées illisibles à 4 niveaux de parenthèses. Le pattern idiomatique en DAX est l'utilisation de SWITCH(TRUE(), ...) :

Création de cohortes de rentabilité client
Segment Rentabilité = 
SWITCH(
    TRUE(),
    Fact_Ventes[MargeCommerciale] < 0, "Déficitaire",
    Fact_Ventes[MargeCommerciale] < 500, "Marge Faible",
    Fact_Ventes[MargeCommerciale] < 2000, "Marge Standard",
    "Grand Compte Stratégique"
)

Lorsque deux tables sont reliées par une relation 1:N, vous pouvez faire redescendre une information de la table de dimension parente (côté 1) vers la table de faits enfant (côté N) grâce à RELATED() :

Rapatrier le nom de la catégorie dans la table des commandes
Categorie Produit = RELATED(Dim_Produits[NomCategorie])

3. Extraire des informations d'une table enfant avec RELATEDTABLE()#

À l'inverse, si vous êtes sur une table de dimension (ex: Dim_Clients) et souhaitez savoir si ce client a déjà renvoyé un article en consultant la table enfant Returns :

Détecter les clients ayant déjà fait un retour
A Déjà Fait Un Retour = 
IF(
    COUNTROWS(RELATEDTABLE(Returns)) > 0,
    "Oui",
    "Non"
)

🚀 Comment Créer une Colonne dans l'Interface#

  1. Dans la liste des tables à droite, sélectionnez la table souhaitée.
  2. Dans le ruban Outils de table ou Outils de colonne, cliquez sur Nouvelle colonne :
Barre de formule pour créer une nouvelle colonne
  1. Saisissez votre expression DAX et validez avec la touche Entrée.

Vous maîtrisez désormais les cas d'usage stricts des colonnes calculées. Dans la prochaine leçon, nous allons aborder l'architecture maîtresse de Power BI : comment concevoir des relations saines et optimiser son schéma en étoile !

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue