Groupes de calcul dans Power BI : modèles DAX réutilisables
Considérons un modèle financier avec 40 mesures : chiffre d'affaires, bénéfice brut, EBITDA, bénéfice net et 36 autres. Désormais, l'entreprise souhaite que chaque mesure soit disponible pour la période en cours, la période précédente, la variation d'une période à l'autre, le cumul annuel, le cumul annuel précédent et la variation cumulée. Cela fait 240 mesures. Ensuite, ils veulent une conversion de devises – en trois devises. Cela fait 720 mesures.
Sans groupes de calcul, c'est un cauchemar de maintenance. Avec les groupes de calcul, la logique d'intelligence temporelle est écrite une fois, la logique de conversion monétaire est écrite une fois et elles s'appliquent automatiquement à chaque mesure de base. Les 40 mesures restent 40 mesures — les éléments de calcul font le reste.
Ce guide couvre les groupes de calcul depuis la base conceptuelle jusqu'à la mise en œuvre pratique, y compris les modèles avancés tels que les règles de préséance, les techniques SELECTEDMEASURE() et la combinaison de plusieurs groupes de calcul dans le même modèle.
Points clés à retenir
- Les groupes de calcul remplacent des centaines de mesures d'intelligence temporelle et de comparaison redondantes par quelques éléments de calcul
- SELECTEDMEASURE() fait référence à n'importe quelle mesure actuellement dans le contexte d'évaluation - la clé de la réutilisabilité
- La priorité contrôle quel groupe de calcul est prioritaire lorsque plusieurs groupes s'appliquent simultanément
- Les chaînes FORMAT() dans les éléments de calcul permettent le formatage des nombres en fonction des mesures
- Les groupes de calcul nécessitent la création de l'éditeur tabulaire (non disponible nativement dans l'interface utilisateur de Power BI Desktop)
- Plusieurs groupes de calcul peuvent interagir : un groupe d'intelligence temporelle + un groupe de devises + un groupe de scénarios travaillent ensemble
- Les groupes de calcul peuvent être utilisés pour mettre en œuvre des scénarios de simulation, le changement d'unité et la sélection de la devise d'affichage.
- Les mesures peuvent être exclues de groupes de calcul spécifiques à l'aide de ISSELECTEDMEASURE()
Le problème que les groupes de calcul résolvent
Avant les groupes de calcul, l’intelligence temporelle dans Power BI impliquait la création de mesures distinctes pour chaque combinaison de métrique de base et de calcul de temps :
Revenue = SUM(Sales[Amount])
Revenue PY = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
Revenue YTD = CALCULATE([Revenue], DATESYTD('Date'[Date]))
Revenue YTD PY = CALCULATE([Revenue], DATESYTD(SAMEPERIODLASTYEAR('Date'[Date])))
Revenue vs PY = [Revenue] - [Revenue PY]
Revenue vs PY % = DIVIDE([Revenue vs PY], [Revenue PY])
Cela fait 6 mesures pour les revenus. Répétez l'opération pour le bénéfice brut, l'EBITDA, les dépenses d'exploitation et 7 autres KPI : vous disposez soudainement de 66 mesures, toutes avec des formules presque identiques. Lorsque l'entreprise demande à modifier la logique d'intelligence temporelle (par exemple, en utilisant l'année fiscale au lieu de l'année civile), chaque mesure doit être mise à jour.
Les groupes de calcul résolvent ce problème en séparant le « que mesurons-nous » (mesures de base) du « comment le comparons-nous » (éléments de calcul). Un groupe de calcul avec 6 éléments remplace 5 mesures supplémentaires pour chaque mesure de base du modèle.
Concepts de base
Groupe de calcul : Un tableau spécial dans le modèle sémantique avec exactement une colonne. La colonne contient des « éléments de calcul » : chaque élément modifie la façon dont les mesures de base sont calculées lorsqu'elles sont sélectionnées dans un slicer ou utilisées dans une matrice/un graphique.
Élément de calcul : expression DAX nommée qui utilise SELECTEDMEASURE() pour référencer la mesure en cours d'évaluation. Chaque élément de calcul apparaît sous la forme d'une ligne dans le segment qui contrôle la période de temps ou le mode de comparaison affiché.
SELECTEDMEASURE() : fonction DAX qui renvoie la valeur de toute mesure actuellement évaluée dans le contexte du groupe de calcul. C'est ce qui rend les groupes de calcul réutilisables : la même formule d'élément s'applique à chaque mesure du modèle.
Précédence : lorsque plusieurs groupes de calcul sont actifs simultanément (par exemple, un utilisateur sélectionne « Année précédente » dans le trancheur d'intelligence temporelle ET « USD » dans le trancheur de devises), la priorité détermine quel élément de calcul du groupe est appliqué en premier.
Création de groupes de calcul avec l'éditeur tabulaire
Power BI Desktop ne dispose pas d'interface utilisateur native pour créer des groupes de calcul (début 2026). Ils doivent être créés à l'aide d'un outil externe : Tabular Editor 2 (gratuit) ou Tabular Editor 3 (commercial).
Configuration :
- Téléchargez Tabular Editor 2 depuis GitHub (gratuit, open source)
- Dans Power BI Desktop : Outils externes → Éditeur tabulaire
- L'éditeur tabulaire s'ouvre connecté au modèle Power BI ouvert
Création d'un groupe de calcul d'intelligence temporelle :
- Dans l'éditeur tabulaire, cliquez avec le bouton droit sur Tableaux → Créer nouveau → Groupe de calcul.
- Nommez-le
Time Intelligence - Le groupe crée automatiquement une colonne — renommez-la en
Time Calculation - Cliquez avec le bouton droit sur le groupe → Ajouter un élément de calcul → nommez chaque élément
Élément de calcul : période actuelle (la référence)
SELECTEDMEASURE()
Cet élément renvoie la mesure telle quelle, sans modification. Chaque mesure affiche sa valeur normale lorsque cet élément est sélectionné.
Élément de calcul : Année précédente
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR('Date'[Date])
)
Élément de calcul : Cumul de l'année
CALCULATE(
SELECTEDMEASURE(),
DATESYTD('Date'[Date])
)
Élément de calcul : Année précédente depuis le début de l'année
CALCULATE(
SELECTEDMEASURE(),
DATESYTD(SAMEPERIODLASTYEAR('Date'[Date]))
)
Élément de calcul : évolution annuelle
SELECTEDMEASURE() -
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR('Date'[Date])
)
Élément de calcul : % de variation sur l'année
DIVIDE(
SELECTEDMEASURE() -
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR('Date'[Date])
),
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR('Date'[Date])
),
BLANK()
)
Après avoir créé ces éléments, enregistrez-les dans l'éditeur tabulaire (Ctrl+S). Les modifications sont synchronisées avec Power BI Desktop.
Dans le rapport, ajoutez un slicer à l'aide de la colonne Time Calculation. Lorsque l'utilisateur sélectionne « Année précédente », chaque mesure d'une matrice ou d'un graphique affiche automatiquement sa valeur de l'année précédente.
La technique des chaînes FORMAT
Un problème survient avec l'élément YoY Change % : il renvoie une valeur décimale (0,15 pour une croissance de 15 %), mais la chaîne de format de la mesure de base est destinée à la devise (par exemple, "$#,0"). Le pourcentage s'affiche sous la forme « 0,15 $ » – format incorrect.
La solution consiste à définir une expression de chaîne de format sur l'élément de calcul. Dans l'éditeur tabulaire, chaque élément de calcul possède une propriété « Expression de chaîne de format » qui peut contenir une expression DAX renvoyant la chaîne de format à utiliser :
Formater l'expression de chaîne pour YoY Change % :
"0.0%"
Formater l'expression de chaîne pour les montants en devise :
"$#,0"
Chaîne de format dynamique basée sur la mesure sélectionnée :
IF(
ISSELECTEDMEASURE([Units Sold], [Order Count]),
"#,0",
"$#,0.00"
)
Les expressions de chaîne de format utilisent ISSELECTEDMEASURE() pour détecter quelle mesure de base est en contexte et renvoyer la chaîne de format appropriée. C'est ainsi qu'un seul élément de calcul « % de changement sur une base annuelle » peut être formaté en pourcentage pour les mesures de revenus et en tant que changement de nombre pour les mesures unitaires.
Groupe de calcul de conversion de devises
La conversion de devises est un autre cas d’utilisation classique d’un groupe de calcul. Sans groupes de calcul, un modèle avec 40 mesures en 3 devises nécessite 120 mesures. Avec un groupe de calcul, il nécessite les 40 éléments de calcul d'origine plus 3 éléments de calcul.
Configuration : le modèle doit avoir une table CurrencyRates avec les taux de change par devise et par date, ainsi qu'une table de dimensions Currency pour le slicer.
Élément de calcul : USD (devise de base)
SELECTEDMEASURE()
Élément de calcul : EUR
SUMX(
VALUES('Date'[Date]),
CALCULATE(SELECTEDMEASURE()) *
CALCULATE(
MAX(CurrencyRates[Rate]),
CurrencyRates[ToCurrency] = "EUR"
)
)
Élément de calcul : GBP
SUMX(
VALUES('Date'[Date]),
CALCULATE(SELECTEDMEASURE()) *
CALCULATE(
MAX(CurrencyRates[Rate]),
CurrencyRates[ToCurrency] = "GBP"
)
)
La boucle SUMX parcourt chaque date et applique le taux de change pour cette date, gérant correctement les devises même lorsque les trancheurs de dates s'étendent sur des périodes avec des taux de change différents. Définissez le Precedence du groupe de devises inférieur au groupe d'intelligence temporelle (nombre inférieur = priorité plus élevée dans la terminologie de l'éditeur tabulaire).
Règles de priorité entre plusieurs groupes de calcul
Lorsqu’un utilisateur sélectionne simultanément des éléments de deux groupes de calcul (par exemple, « Année précédente » dans Time Intelligence et « EUR » dans Devise), Power BI les évalue par ordre de priorité.
La priorité est définie sous forme d'entier sur chaque groupe de calcul — entier supérieur = évalué en premier (ou "externe").
Exemple :
- Time Intelligence : Précédence = 20 (évalué en interne)
- Conversion de devises : Priorité = 10 (externe évalué)
Avec cette configuration, l’élément de conversion de devise entoure l’élément Time Intelligence. La sélection de « EUR » + « Année précédente » calcule : convertit en EUR (le calcul externe) la valeur de l'année précédente (le calcul interne). L'ordre de priorité doit correspondre à l'intention sémantique des calculs.
La règle générale : le groupe de calcul qui modifie le contexte de date (intelligence temporelle) doit avoir une priorité plus élevée (numéro de priorité inférieur, évalué en interne/ultérieurement). Le groupe de calcul qui modifie la valeur après le calcul de la date (conversion de devise, conversion d'unités) doit avoir une priorité inférieure (évalué externe/premier).
Exclusion de mesures spécifiques des groupes de calcul
Toutes les mesures ne doivent pas répondre à tous les groupes de calcul. Une mesure « Date du rapport » qui renvoie la date actuelle du rapport ne doit pas être modifiée par Time Intelligence. Une mesure de « valeur cible » définie annuellement ne doit pas être convertie en année précédente.
Utilisez ISSELETECEDMEASURE() dans l'élément de calcul pour exclure des mesures spécifiques :
IF(
ISSELECTEDMEASURE([Report Date], [Target Value], [Budget]),
SELECTEDMEASURE(),
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR('Date'[Date])
)
)
Cela rend l'élément « Année précédente » inchangé pour [Date du rapport], [Valeur cible] et [Budget] — renvoyant leurs valeurs normales quelle que soit la sélection d'intelligence temporelle.
Analyse de scénarios de simulation avec des groupes de calcul
Les groupes de calcul permettent une analyse élégante de scénarios de simulation. Un groupe de calcul « Scénario » avec des éléments tels que « Scénario de base », « Optimiste » et « Pessimiste » peut appliquer des multiplicateurs de scénario aux mesures de revenus et de coûts sans créer de variantes de mesure spécifiques au scénario.
-- Base Case calculation item
SELECTEDMEASURE()
-- Optimistic calculation item
SWITCH(
TRUE(),
ISSELECTEDMEASURE([Revenue], [Gross Profit]), SELECTEDMEASURE() * 1.15,
ISSELECTEDMEASURE([Operating Expenses], [COGS]), SELECTEDMEASURE() * 0.95,
SELECTEDMEASURE()
)
-- Pessimistic calculation item
SWITCH(
TRUE(),
ISSELECTEDMEASURE([Revenue], [Gross Profit]), SELECTEDMEASURE() * 0.85,
ISSELECTEDMEASURE([Operating Expenses], [COGS]), SELECTEDMEASURE() * 1.10,
SELECTEDMEASURE()
)
Les utilisateurs sélectionnent un scénario dans un slicer ; chaque mesure financière est mise à jour pour refléter les hypothèses du scénario sélectionné. La combinaison de cela avec le groupe d'intelligence temporelle permet : "Montrez-moi les revenus du troisième trimestre dans le scénario optimiste par rapport à l'année précédente."
Questions fréquemment posées
Les groupes de calcul fonctionnent-ils dans Power BI Desktop sans Premium ?
Oui. Les groupes de calcul fonctionnent dans tous les niveaux de licence Power BI : il s’agit d’une fonctionnalité de modèle sémantique et non d’une fonctionnalité Premium. La seule exigence Premium est que l'éditeur tabulaire doit être utilisé pour les créer, car l'interface utilisateur native de Power BI Desktop ne prend pas en charge la création (mais elle les restitue et les évalue correctement). Une fois créés dans Tabular Editor, les groupes de calcul fonctionnent dans n'importe quel espace de travail, y compris gratuit et Pro.
Puis-je créer des groupes de calcul sans l'éditeur tabulaire ?
Dans l’interface utilisateur native de Power BI Desktop, les groupes de calcul ne peuvent pas être créés directement (à partir de début 2026). Tabular Editor 2 (gratuit) est l'outil standard. Alternativement, les outils de point de terminaison XMLA (SSMS, ALM Toolkit) peuvent créer des groupes de calcul via des scripts TMSL. Certains utilisateurs créent également des groupes de calcul via des appels d'API XMLA REST par programmation. Microsoft a indiqué son intention d'ajouter la création de groupes de calcul à Power BI Desktop de manière native dans les prochaines versions.
Quel est l'impact des groupes de calcul sur les performances ?
Les groupes de calcul ajoutent une surcharge minime par rapport à la création manuelle des mesures équivalentes. Chaque évaluation SELECTEDMEASURE() invoque le DAX de la mesure référencée — aucun coût supplémentaire au-delà de ce que des mesures explicites équivalentes entraîneraient. En fait, les groupes de calcul améliorent souvent les performances du modèle en remplaçant de nombreuses mesures explicites similaires (qui génèrent toutes des entrées de cache de requêtes) par moins d'éléments partageant les mêmes chemins d'évaluation.
Les groupes de calcul peuvent-ils être utilisés avec des mesures implicites provenant de colonnes générées automatiquement ?
Les groupes de calcul s'appliquent aux mesures DAX explicites définies dans le modèle. Ils ne s’appliquent pas aux agrégations de colonnes générées automatiquement par Power BI (comme la somme d’une colonne numérique sans mesure définie). La meilleure pratique consiste à définir des mesures explicites pour toutes les mesures commerciales et à utiliser des groupes de calcul sur ces mesures.
Comment les groupes de calcul interagissent-ils avec la sécurité au niveau des lignes ?
Les groupes de calcul et la sécurité au niveau des lignes sont orthogonaux : ils fonctionnent indépendamment. RLS filtre les lignes visibles par un utilisateur ; les groupes de calcul modifient la façon dont les mesures de ces lignes visibles sont calculées. La combinaison fonctionne correctement : RLS limite les données, puis l'élément du groupe de calcul transforme la logique de mesure. Il n’existe aucun conflit connu entre le RLS correctement implémenté et les groupes de calcul.
Quelle est la différence entre les groupes de calcul et les paramètres de champ ?
Les groupes de calcul modifient la façon dont les mesures sont calculées (application de décalages horaires, conversions de devises, ajustements de scénarios). Les paramètres de champ permettent aux utilisateurs de sélectionner la mesure ou la colonne qui apparaît dans une visualisation, en basculant par exemple entre les revenus, les bénéfices et les unités dans un graphique. Ils résolvent différents problèmes et peuvent être utilisés ensemble : paramètres de champ pour sélectionner la mesure de base, groupes de calcul pour choisir la comparaison temporelle pour cette mesure.
Prochaines étapes
Les groupes de calcul sont l’un des outils les plus puissants pour créer des modèles sémantiques Power BI maintenables et évolutifs. Mis en œuvre correctement, ils éliminent la duplication DAX, réduisent la complexité du modèle et rendent le modèle extensible : l'ajout d'une nouvelle période d'intelligence temporelle signifie l'ajout d'un élément de calcul, et non la réécriture de dizaines de mesures.
Les services de modélisation de données Power BI d'ECOSIRE incluent la conception et la mise en œuvre de groupes de calcul dans le cadre du développement de modèles sémantiques. Contactez-nous pour discuter de la manière dont les groupes de calcul peuvent simplifier votre modèle actuel ou améliorer votre prochaine implémentation.
Rédigé par
ECOSIRE Research and Development Team
Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.
Articles connexes
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
Case Study: Power BI Analytics for Multi-Location Retail
How a 14-location retail chain unified their reporting in Power BI connected to Odoo, replacing 40 spreadsheets with one dashboard and cutting reporting time by 78%.
GoHighLevel + Power BI: Advanced Reporting and Analytics
Connect GoHighLevel to Power BI for advanced marketing analytics. Build executive dashboards, track multi-channel ROI, and create automated reports that go beyond GHL's native reporting.