Maîtriser CALCULATE() DAX dans Power BI

Nous suivre sur Google

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.

En bref

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 :

  1. Expression : le calcul à effectuer, comme une somme (SUM), une moyenne (AVERAGE) ou un comptage (COUNTROWS). Il peut également s’agir d’une mesure existante
  2. 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() ou TREATAS().
    • Modificateurs de filtre : permettent de conserver, supprimer ou modifier les filtres existants, avec KEEPFILTERS(), REMOVEFILTERS() ou USERELATIONSHIP().

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 🎓

Tester votre niveau 🦾

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.

Fonction Utilité
KEEPFILTERS() Combine les nouveaux filtres avec ceux déjà appliqués sur les mêmes colonnes.
REMOVEFILTERS() Supprime les filtres d’une table ou de certaines colonnes.
ALL() Peut supprimer des filtres ou retourner une table selon son utilisation.
ALLEXCEPT() Supprime les filtres d’une table, sauf ceux des colonnes indiquées.
USERELATIONSHIP() Active une relation existante pour un calcul.
CROSSFILTER() Modifie temporairement la direction de propagation des filtres d’une relation.
TREATAS() Applique les valeurs d’une table comme filtres sur les colonnes d’une autre table.

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é.

FonctionValeur de retourUtilisation
CALCULATE()Valeur scalaire (résultat unique)Calculer un chiffre d’affaires, une moyenne ou un indicateur.
CALCULATETABLE()TableRetourner 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 ?

  1. Privilégiez les filtres simples lorsque cela est possible, plutôt que des expressions FILTER() complexes.
  2. Utilisez REMOVEFILTERS() lorsque votre objectif est simplement de supprimer des filtres.
  3. 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 :

FAQ : Fonction DAX CALCULATE()

Quand utiliser CALCULATE dans DAX ?

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.

Comment fonctionne CALCULATE() ?

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.

Quelle est la différence entre les fonctions CALCULATE et CALCULATETABLE dans DAX ?

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.

Quelle est la syntaxe de la fonction CALCULATE () en DAX ?

CALCULATE(<expression>, <filtre1>, <filtre2>, …)

DAX est-il meilleur qu’Excel ?

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.

Laissez-nous votre avis : post
Benjamin PARENT - Formateur Power BI

Benjamin Parent

Allier la puissance de Power BI à une vraie démarche data-driven, c’est ce qui guide mon approche en formation.

Formateur chez Morpheus Formation, je m’appuie sur mon parcours en data science, notamment en modélisation, Machine Learning et Python, pour vous aider à structurer vos analyses et à créer des tableaux de bord vraiment utiles.

Je me suis également spécialisé dans des environnements complémentaires autour de la data, du cloud et de l’intelligence artificielle, avec des compétences sur AWS, Dataiku, Claude et Claude Code.

Mon objectif : vous aider à passer d’Excel à Power BI sans perdre en maîtrise, tout en vous donnant les bons réflexes pour automatiser, explorer, analyser et visualiser vos données.

Articles: 13

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Guide rapide et pratique pour maîtriser Power BI
Entrez votre adresse e-mail et nous vous enverrons notre support 100 % gratuit.
Dernière chance d’en profiter !
FORMATION POWER BI CPF
Vous avez des objectifs précis ? Un formateur vous accompagne pour les atteindre. Notre formation Power BI sur mesure se déroule à distance, en tête-à-tête avec un formateur.D’une durée de 18 à 24 heures, elle est organisée en séances courtes, pour un apprentissage progressif et efficace.
Increase your Online Store's Revenue by 300%