Créer des Tables Calculées en DAX : Dimensions et Scénarios What-If

@joekakone

Joseph Konka @joekakone

03/03/2026 · 7 min

Maîtrisez la création de tables calculées en langage DAX : dimensions à rôles multiples (Role-Playing Dimensions), tables de paramètres de simulation What-If et extraction de dimensions avec DISTINCT et SUMMARIZE.

Dans Power BI, la majorité de vos tables proviennent de sources externes nettoyées dans Power Query. Cependant, le langage DAX possède une capacité souvent sous-estimée : celle de générer de toutes pièces de nouvelles tables calculées directement en mémoire vive.

Dans cette leçon, nous découvrons les cas d'usage stratégiques où une table calculée DAX s'impose comme la solution la plus élégante.


🧭 Qu'est-ce qu'une Table Calculée ?#

Une table calculée est une table dont la structure et les lignes sont déterminées par une expression DAX qui renvoie une table (au lieu d'une valeur scalaire unique).

Elle est calculée une fois pour toutes lors du chargement ou du rafraîchissement des données, puis stockée directement dans le moteur VertiPaq en mémoire.

Pour créer une table calculée : 1. Rendez-vous dans la vue Modèle ou la vue Données. 2. Dans le ruban supérieur, onglet Outils de table, cliquez sur Nouvelle table. 3. Renseignez votre formule DAX dans la barre de formules.

Ruban Outils de table dans Power BI

🎯 Les 3 Grands Cas d'Usage Métier#

Cas n°1 : La Dimension à Rôles Multiples (Role-Playing Dimension)#

C'est le cas d'école le plus fréquent en entreprise. Votre table de faits Fact_Ventes comporte deux colonnes de dates distinctes : - DateCommande : Le jour où le client a validé son achat. - DateExpedition : Le jour où le colis a quitté l'entrepôt logistique.

Si vous reliez ces deux colonnes à votre unique table Dim_Calendrier, Power BI va rendre la seconde relation inactive (en pointillés), car deux chemins actifs directs sont interdits.

Pour permettre aux directeurs logistiques d'analyser les expéditions sur leur propre calendrier sans forcer l'écriture de formules DAX complexes avec USERELATIONSHIP, la solution consiste à cloner le calendrier :

Duplication instantanée de la table de dates
Dim_Calendrier_Expedition = Dim_Calendrier

Vous reliez ensuite Fact_Ventes[DateExpedition] à cette nouvelle table. Vos utilisateurs disposent de deux trancheuses temporelles indépendantes sur leurs rapports !


Cas n°2 : Les Tables de Paramètres pour Scénarios de Simulation (What-If)#

Vous souhaitez permettre aux directeurs financiers de tester l'impact d'une hausse des prix ou d'une remise commerciale variant de 0 % à 25 % avec un pas de 1 % ?

Utilisez la fonction DAX GENERATESERIES() pour créer une table déconnectée :

Génération d'une table de paramètres de simulation
Param_TauxRemise = 
GENERATESERIES(0.0, 0.25, 0.01)

Ensuite, vous créez une mesure qui capture la valeur sélectionnée par l'utilisateur sur le curseur graphique du rapport :

Mesure de capture du paramètre What-If
Taux Remise Sélectionné = SELECTEDVALUE(Param_TauxRemise[Value], 0.0)

Cas n°3 : Extraire une Dimension Propre à partir d'une Table Plate#

Si vous avez importé un extrait de données transactionnelles volumineux sans référentiel clients ou produits séparé, vous pouvez isoler vos dimensions en DAX grâce aux fonctions DISTINCT() ou SUMMARIZECOLUMNS() :

Extraction d'une dimension clients sans doublons
Dim_Clients = 
SUMMARIZECOLUMNS(
    Orders[Customer ID],
    "Nom Client", FIRSTNONBLANK(Orders[Customer Name], 1),
    "Segment", FIRSTNONBLANK(Orders[Segment], 1)
)
Extraction d'une liste unique de catégories
Dim_Categories = DISTINCT(Orders[ProductCategory])

⚖️ Bonnes Pratiques : DAX vs Power Query#

[!WARNING] Ne tombez pas dans le piège du "Tout DAX" !
Les tables calculées en DAX ne bénéficient pas de certaines optimisations avancées de compression de Power Query et ralentissent l'ouverture de votre fichier .pbix lorsqu'elles sont trop volumineuses.

La règle d'architecture :
- Si une table peut être créée ou fusionnée en amont dans Power Query (ou dans la base SQL), faites-le dans Power Query ! - Réservez les tables calculées DAX aux calendriers, aux scénarios What-If et aux dimensions clonées qui dépendent directement de la dynamique du modèle en mémoire.


Vous savez désormais quand et comment concevoir des tables calculées. Dans la prochaine leçon, nous allons nous intéresser à une question fondamentale : quand doit-on créer une colonne calculée, et pourquoi les mesures sont presque toujours préférables ?

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue