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 colonnePrix Vente * Quantitesur une table de 10 millions de lignes). Utilisez toujours une Mesure explicite avec un itérateur commeSUMX(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 :
- 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. - 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). - 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(), ...) :
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"
)
2. Récupérer des attributs liés avec RELATED()#
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() :
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 :
A Déjà Fait Un Retour =
IF(
COUNTROWS(RELATEDTABLE(Returns)) > 0,
"Oui",
"Non"
)
🚀 Comment Créer une Colonne dans l'Interface#
- Dans la liste des tables à droite, sélectionnez la table souhaitée.
- Dans le ruban Outils de table ou Outils de colonne, cliquez sur Nouvelle colonne :
- 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