Votre site référence pour maîtriser Power BI proposé Morpheus Formation,
Maîtriser CALCULATE() DAX dans Power BI
Vous peinez à obtenir des calculs dynamiques précis dans Power BI ? La fonction CALCULATE() DAX est l’outil incontournable pour manipuler le contexte de filtre et exploiter toute la puissance de vos données.
Grâce à des exemples concrets (ratios, filtres multiples), découvrez comment transformer des rapports rigides en analyses interactives.
Maîtriser cette fonction vous permettra de créer des indicateurs stratégiques comme la comparaison des ventes avec l’année précédente, ou des segments personnalisés via TREATAS, tout en évitant les pièges des filtres contradictoires.
La fonction DAX CALCULATE() est l’indispensable outil pour maîtriser le contexte de filtre dans Power BI.
De la syntaxe basique à l’optimisation des performances, sa compréhension approfondie permet de structurer des rapports dynamiques et précis. Les modificateurs de filtre (KEEPFILTERS, REMOVEFILTERS) et fonctions associées (FILTER, TREATAS) offrent un contrôle total sur les données, un niveau de précision souvent recherché par un consultant Power BI.
Pour aller plus loin, explorez nos formations Morpheus Formation sur les bonnes pratiques de modélisation Power BI.
Qu’est-ce que la fonction CALCULATE() dans Power BI ?
La fonction CALCULATE() est l’une des fonctions les plus importantes du langage DAX dans Power BI.
Elle permet d’effectuer un calcul en modifiant le contexte de filtre, c’est-à-dire les données prises en compte dans le résultat. Elle est utile pour analyser les ventes, comparer des résultats ou calculer des indicateurs selon des critères précis.
Syntaxe et paramètres de la fonction CALCULATE()
La structure de base de la fonction CALCULATE() est :
CALCULATE (Expression, [Filtre 1], [Filtre 2]...)
Qu’est ce que ça veut dire ? Nous voyons 2 éléments qui ressortent :
- Expression : le calcul à effectuer, comme une somme (
SUM), une moyenne (AVERAGE) ou un comptage (COUNTROWS). Il peut également s’agir d’une mesure existante - Filtres (facultatifs) : ils permettent de modifier les données prises en compte dans le calcul. Il existe trois types de filtres :
- Filtres booléens : appliquent une condition précise, par exemple
'Product'[Color] = "Blue". - Filtres de table : utilisent une table pour filtrer les données, avec des fonctions comme
FILTER()ouTREATAS(). - Modificateurs de filtre : permettent de conserver, supprimer ou modifier les filtres existants, avec
KEEPFILTERS(),REMOVEFILTERS()ouUSERELATIONSHIP().
- Filtres booléens : appliquent une condition précise, par exemple
Vous souhaitez découvrir le langage DAX et les différentes fonctions de Power BI ? Découvrez notre guide sur le langage DAX
Comprendre le contexte de ligne et le contexte de filtre
Le contexte de ligne correspond à la ligne actuellement évaluée, notamment dans une colonne calculée ou une fonction d’itération comme SUMX().
Le contexte de filtre correspond aux données sélectionnées par les filtres du rapport, les segments, les visuels ou les expressions DAX.
La transition de contexte permet à CALCULATE() de transformer les valeurs de la ligne courante en filtres pour évaluer une expression. Cette distinction est essentielle pour comprendre les résultats de certaines formules avancées.
C’est également dans un contexte de ligne que la fonction RELATED en DAX peut être utilisée pour récupérer une information depuis une table liée.
Exemples pratiques de filtrage
La fonction CALCULATE() peut répondre à différents besoins d’analyse dans Power BI.
1. Appliquer plusieurs filtres
Vous souhaitez calculer uniquement les ventes de produits bleus réalisées en 2020 ?
Blue Revenue 2020 =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue",
'Date'[Year] = 2020
)
Cette formule additionne les ventes correspondant aux deux conditions : produits bleus ET année 2020. Les conditions sont combinées avec une logique ET, ce qui permet d’affiner les résultats.
Testez votre Niveau sur Power BI 🎓
Avant de se lancer, pourquoi ne pas tester votre niveau ? Avec notre test de 30 questions, vous évaluez rapidement vos compétences sur Power BI.
2. Activer une relation inactive avec USERELATIONSHIP()
Dans Power BI, plusieurs relations peuvent exister entre deux tables, mais une seule peut généralement être active à la fois.
La fonction USERELATIONSHIP() permet d’utiliser temporairement une relation inactive lors d’un calcul.
Sales by Order Date =
CALCULATE(
SUM(Sales[Sales Amount]),
USERELATIONSHIP(
Sales[OrderDateKey],
'Date'[DateKey]
)
)
Cette formule utilise la relation indiquée entre la date de commande et la table Date pour calculer les ventes.
Attention : cet exemple suppose qu’une relation existe déjà entre ces deux colonnes dans le modèle de données.
3. Supprimer des filtres avec REMOVEFILTERS()
La fonction REMOVEFILTERS() permet d’ignorer certains filtres pour effectuer des comparaisons, notamment pour calculer un pourcentage du total.
Revenue % Total =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS(Sales)
)
)
Dans cet exemple :
SUM()calcule les ventes dans le contexte actuel.REMOVEFILTERS()supprime les filtres de la table Sales et, dans ce cas, de sa table étendue.DIVIDE()calcule le rapport entre les ventes filtrées et les ventes du contexte modifié.
Le résultat permet d’obtenir la part des ventes par rapport à un total de référence. Ce total dépend des autres filtres du modèle qui restent actifs.En maîtrisant la fonction CALCULATE vous avez accéder à une utilisation très avancée de Power BI. Pour aller plus loin, découvrez notre formation Power BI avancé CPF
Quelles fonctions DAX utiliser avec CALCULATE() ?
Il existe de nombreuses fonctions DAX dans Power BI qui peuvent être utilisées pour effectuer différents calculs.
Quelle différence entre CALCULATE() et CALCULATETABLE() ?
Les fonctions CALCULATE() et CALCULATETABLE() permettent toutes deux de modifier le contexte de filtre. Leur principale différence concerne le résultat retourné.
| Fonction | Valeur de retour | Utilisation |
|---|---|---|
| CALCULATE() | Valeur scalaire (résultat unique) | Calculer un chiffre d’affaires, une moyenne ou un indicateur. |
| CALCULATETABLE() | Table | Retourner un ensemble de données filtrées. |
Par exemple, pour calculer les ventes d’une catégorie :
Total Sales =
CALCULATE(
SUM(Sales[Amount]),
'Product'[Category] = "Electronics"
)
Pour retourner une table contenant uniquement les produits de cette catégorie :
Electronics Products =
CALCULATETABLE(
'Product',
'Product'[Category] = "Electronics"
)
À retenir : CALCULATE() retourne un résultat unique, tandis que CALCULATETABLE() retourne une table de données.
Erreurs fréquentes et bonnes pratiques avec CALCULATE()
Pour utiliser efficacement CALCULATE(), certaines erreurs sont à éviter.
Les erreurs les plus courantes
- Confondre contexte de ligne et contexte de filtre, ce qui peut produire des résultats inattendus.
- Appliquer des filtres contradictoires sans comprendre leur remplacement ou leur combinaison.
- Utiliser CALCULATE() dans une colonne calculée ou une règle RLS en mode DirectQuery, ce qui n’est pas pris en charge.
Comment optimiser vos formules ?
- Privilégiez les filtres simples lorsque cela est possible, plutôt que des expressions
FILTER()complexes. - Utilisez REMOVEFILTERS() lorsque votre objectif est simplement de supprimer des filtres.
- Limitez les transitions de contexte inutiles, particulièrement dans les calculs répétés sur de grandes tables.
Envie d’aller plus loin ?
Vous connaissez maintenant l’essentiel de la fonction CALCULATE() dans Power BI. Et si vous alliez encore plus loin dans votre maîtrise du DAX ?
Bonne nouvelle ! Nous avons exactement ce qu’il vous faut !
Chez Morpheus Formation, nous proposons des formations Power BI complètes et sur mesure, adaptées à votre niveau, votre métier et vos objectifs. L’objectif ? Vous faire passer de débutant à expert sur Power BI
Vous souhaitez maîtriser un outil en particulier ou suivre une formation spécifique à votre métier ? C’est aussi possible ! Nos formations sont accessibles partout en France, à distance ou en présentiel, selon vos préférences. Nos formations peuvent également vous préparer à passer une certification Power BI afin de valoriser vos compétences.
Et pas besoin d’être expert pour commencer : nous adaptons le programme à vos connaissances et à votre rythme.
Découvrir nos autres formations :
- Formation Power BI Bordeaux sur mesure pour les entreprises
- Maîtriser Power BI à Paris pour les professionnels
FAQ : Fonction DAX CALCULATE()
CALCULATE s’utilise lorsqu’il est nécessaire de modifier le contexte de filtrage d’un calcul afin d’obtenir des résultats dynamiques et ciblés. Elle est particulièrement utile pour appliquer des conditions supplémentaires à une mesure, réaliser des agrégations spécifiques ou comparer des périodes dans des analyses temporelles. CALCULATE permet ainsi de contrôler avec précision la manière dont une mesure est évaluée.
CALCULATE() évalue une expression dans un contexte filtré que l’on peut redéfinir au moment de l’appel. Concrètement, elle commence par appliquer ou remplacer les filtres indiqués dans ses arguments, puis elle calcule l’expression dans ce nouveau contexte. Cette capacité à altérer le contexte d’évaluation est au cœur de la puissance de DAX pour les analyses avancées.
CALCULATE renvoie une valeur scalaire, c’est-à-dire un résultat unique issu d’une mesure ou d’une expression agrégée.
CALCULATETABLE, quant à elle, renvoie une table filtrée selon les conditions spécifiées. Elle est utilisée lorsque l’on souhaite manipuler ou explorer des ensembles de données plutôt qu’obtenir une seule valeur. En résumé, CALCULATE sert aux calculs de mesures, tandis que CALCULATETABLE sert à produire des tables modifiées par des filtres.
CALCULATE(<expression>, <filtre1>, <filtre2>, …)
DAX et Excel répondent à des besoins différents et sont souvent complémentaires. Excel est idéal pour des analyses ponctuelles, des simulations ou des tableaux interactifs simples. DAX, intégré à Power BI, est conçu pour gérer des volumes de données importants et effectuer des calculs dynamiques dans des modèles relationnels. DAX surpasse Excel lorsqu’il s’agit d’analyses complexes, de modélisation et d’automatisation à grande échelle.



