Les groupes de calcul (calculation groups), gagnez du temps sur Power BI !

11 mars 2025

Lorsque l'on met en place un rapport pour suivre son activité sur Power BI, on est souvent amené à devoir créer des mesures, beaucoup de mesures et souvent trop de mesures ! Il existe une solution à ce problème : les groupes de calcul.

Effectivement, je veux mon chiffre d'affaires (CA) et mon nombre de produits vendus en Month-to-date (MTD), Quarter-to-date (QTD), Year-to-date (YTD)... Je peux aussi souhaiter faire de la time intelligence et chercher à comparer mon CA avec celui du mois dernier, trimestre dernier ou même de l'année dernière. Je peux aussi vouloir mes résultats en livres sterling, dollars ou tout simplement en euros. Rien que dans cet exemple, il me faudrait 2 (mesures de base : CA et unités vendues) x 6 (périodes) x3 (devises) mesures soit 36 mesures, soit des heures et des heures : un cauchemar ! Cela peut paraître trop beau pour être vrai mais on peut faire tout ça avec seulement 2 groupes de calculs et 2 mesures basiques !

Quand vous aurez lu cet article, vous serez en mesure de répondre à ces questions : Qu'est-ce qu'un groupe de calcul ? A quoi servent les groupes de calculs ? Quand faut-il les utiliser ? Comment bien les utiliser ? Qu'est-ce qu'on peut retenir comme avantages et quels sont leurs points faibles ?

 

Qu'est-ce qu'un groupe de calcul ?

Un groupe de calcul est une fonctionnalité assez récente de Power BI permettant de minimiser le nombre de mesures à créer.

Par exemple, je peux créer un groupe de calcul "Devises" et puis l'appliquer à mon CA, mon objectif, mes dépenses. Sans le groupe de calcul, il faudrait que je fasse au minimum deux fois plus de mesures si je n'avais que 2 devises (euro et dollar par exemple). Si on les veut en MTD, QTD, YTD... ça devient beaucoup plus compliqué.  Avec 2 groupes de calcul, on verra qu'on peut couvrir une bonne partie des analyses sans avoir à créer 50 mesures !

 

Pourquoi et quand utiliser les groupes de calcul ?

Une image vaut mille mots. Ici, on a un échantillon d'une vingtaine de mesures d'un rapport RH et ce n'est que la partie émergée de l'iceberg. On aurait pu éviter d'en créer une bonne partie avec les groupes de calcul. Pourquoi utiliser les groupes de calcul ? Pour réduire le nombre de mesures et gagner du temps !

Cas d'usage

  • Vous voulez faire des statistiques basiques pour chaque mesure, le minimum, le maximum, la moyenne et la somme ? Le groupe de calculs vous permet de faire ça sans avoir à créer 10000 mesures !
  • Vous voulez faire une analyse temporelle, de time intelligence sans avoir à faire trop de mesures ? YTD, QTD, MTD, évolution par rapport aux années, mois, trimestres précédents... il faudrait multiplier votre nombre de mesures au minimum par 5 dans cet exemple ! D'où la nécessité d'un groupe de calculs.
  • Vous voulez afficher vos données en fonction de chaque devise (€, $, £...) ? Utilisez les groupes de calcul. Faites de même pour les conversion d'unité en général.
  • Vous voulez jouer avec les relations actives et inactives, le fameux cas des deux dates avec date de livraison et date de commande ? Là encore,  le groupe de calcul peut aider.
  • Vous voulez faire apparaître des étiquettes de données ou les masquer ? Le groupe de calcul représente une solution pour faire ça.
  • Vous voulez mettre en valeur le minimum et le maximum dans un graphique ? Le groupe de calcul est un moyen d'y parvenir.

Comment fonctionnent les groupes de calcul ?

 

Méthodologie globale

Quelques définitions utiles avant de parler de la méthode.

  • Groupe de calcul : fonctionnalité de Power BI qui va appliquer des éléments de calcul aux mesures présentes dans les visuels du rapport, par le biais d'un segment, du volet filtre ou encore en étant dans les colonnes d'une matrice. Il faudra glisser la colonne de calcul dans le segment, matrice... Le groupe de calcul contient une colonne de calcul avec des éléments de calcul en guise de valeurs.
  • Colonne de calcul : colonne qui contient les éléments de calcul. C'est cette colonne qu'on utilise pour filtre sur YTD ou MTD par exemple.
  • Elément de calcul : valeur de la colonne de calcul. Il se base sur la fonction DAX SELECTEDMEASURE() et CALCULATE() notamment. SELECTEDMEASURE() va renvoyer la mesure utilisée dans le visuel. Ensuite, on a juste à préciser l'élément de calcul, je veux la valeur en YTD ? Je prends SELECTEDMEASURE(), je la mets dans un CALCULATE() combiné à un DATESYTD() et c'est fini ! On verra cet exemple concrètement plus loin dans l'article.

Passons à la méthode !

  • Aller dans la vue Modèle
  • Créer un nouveau groupe de calcul dans l'onglet Modèle à droite de l'onglet Tableaux dans le volet Données
  • Créer et renommer le groupe de calcul
  • Renommer la colonne du groupe de calcul
  • Renommer le premier élément de calcul
  • Créer d'autres éléments de calcul (exemple : MTD, QTD, YTD, …)
  • Vérifier les formats/ formats dynamiques pour chaque élément de calcul
  • Créer un segment ou une matrice, et mettre la colonne du groupe de calcul à l’intérieur

Nota bene : les mesures implicites deviennent impossibles après la création d'un groupe de calcul (on ne pourra plus glisser les champ sans créer de mesure directement).

Exemples et explications

 

Le cas des statistiques basiques (Somme, Moyenne, Min, Max)

On veut obtenir la moyenne, la somme, le minimum et le maximum de nos mesures, lesdites mesures étant notre CA et notre objectif de CA dans cet exemple.

Pour cela, on applique la méthode citée plus haut.

1. On va sur la vue Modèle (là où on fait les relations entre les tables) et on clique sur l'onglet Modèle dans le volet Données.

2. On clique sur les 3 petits points au niveau de Groupes de calcul (0) et on créée un nouveau groupe de calcul.

3. On renomme le groupe de calcul et la colonne du groupe de calcul. Comme ça on sait sur quoi on travaille.

4. Maintenant, on attaque les éléments de calcul.

On renomme et on change la formule comme pour une mesure classique...

Ici, faire directement la somme ne fonctionne pas car SELECTEDMEASURE() renvoie la mesure. Il faut appliquer un SUMX() pour l'itération sur chaque valeur de notre table de fait.

Somme =
SUMX ( Fact_Infomax, SELECTEDMEASURE () )

On va faire de même pour la moyenne, le min et le max. Je vous mets directement les formules ci-dessous.

Moyenne = 
AVERAGEX ( Fact_Infomax, SELECTEDMEASURE () )
Minimum = 
MINX ( Fact_Infomax, SELECTEDMEASURE () )
Maximum = 
MAXX ( Fact_Infomax, SELECTEDMEASURE () )

Remarque :  pour changer l'ordre d'affichage des éléments de calcul, c'est par ici.

5. On fait un segment et on glisse la colonne du groupe de calcul dans celui-ci.

 

Ici, on prend la colonne Agrégation du groupe de calcul Stats générales.

On peut aussi utiliser le volet filtre.

Exemple avec une matrice.

 

Voilà pour les stats générales. On passe maintenant à l'utilisation des groupes de calcul pour la Time Intelligence.

Le cas de la Time Intelligence (MTD, QTD, YTD, comparaisons temporelles...)

Pour ce cas, on va créer les éléments de calcul suivants : Actuel, MTD, QTD, YTD, MTD du mois précédent (MTD-1), variation MTD vs MTD-1 en pourcentage.

Les étapes sont toujours les mêmes : on va sur la vue modèle, on créée un nouveau groupe de calcul que l'on renomme Time Intelligence, puis on renomme la colonne de calcul en Période et on travaille sur nos éléments de calcul.

Expliquons chaque élément de calcul.

Actuel : c'est la ou les mesures utilisées dans nos visuels. Ici, on s'intéressera seulement au CA.

Formule :

Actuel = 
SELECTEDMEASURE ()

Explication : SELECTEDMEASURE() renvoie le CA dans notre exemple tout simplement.

MTD : c'est le CA cumulé pour chaque mois, le CA mensuel en somme.

Formule :

MTD = 
CALCULATE ( SELECTEDMEASURE (), DATESMTD ( Dim_Date[Date] ) )

Explication : c'est la formule classique pour obtenir un MTD sauf qu'à la place on à SELECTEDMEASURE() comme premier argument du CALCULATE(). On vous recommande cet article sur CALCULATE(). DATESMTD() permet d'obtenir le CA MTD en le combinant au CALCULATE().

QTD : même chose que MTD sauf que c'est pour les cumuls trimestriels.

Formule :

QTD = 
CALCULATE ( SELECTEDMEASURE (), DATESQTD ( Dim_Date[Date] ) )

YTD : Cumul du CA de tous les mois depuis le début de l'année. On utilise la fonction très populaire DATESYTD()

Formule :

YTD = 
CALCULATE ( SELECTEDMEASURE (), DATESYTD ( Dim_Date[Date] ) )

MTD-1 : C'est le CA du mois dernier. On utilise DATEADD().

Formule :

MTD-1 = 
CALCULATE (
    SELECTEDMEASURE (),
    'Time Intelligence'[Période] = "MTD",
    DATEADD ( Dim_Date[Date], -1, MONTH )
)

Variation MTD-1 (%) : Evolution du CA en pourcentage par rapport au mois dernier.

Formule :
Variation MTD-1 (%) = 
DIVIDE (
    CALCULATE ( SELECTEDMEASURE (), 'Time Intelligence'[Période] = "MTD" )
        - CALCULATE ( SELECTEDMEASURE (), 'Time Intelligence'[Période] = "MTD-1" ),
    CALCULATE ( SELECTEDMEASURE (), 'Time Intelligence'[Période] = "MTD-1" ),
    "NA"
)

Remarque : On réutilise les éléments de calcul pour ces 2 derniers calculs. Effectivement, CALCULATE (SELECTEDMEASURE(), colonne de calcul = "l'élément de calcul souhaité")  renvoie l'élément de calcul !

Remarque 2 : On peut réutiliser les éléments de calcul pour faire des mesures. Il suffira de faire comme dans la formule ci-dessus mais avec notre mesure à la place.

Exemple pour le CA du mois précédent : CA MTD-1 = CALCULATE([CA],'Time Intelligence'[Période] = "MTD-1")

Regardons maintenant ce que l'on obtient après avoir créé nos groupes de calcul !

On voit bien que ça fonctionne à un détail près... Que s'est-il passé avec notre évolution du CA par rapport au mois précédent ? Exactement, c'est un problème de format !

Remarque 3 : Il ne faut pas oublier de bien gérer les formats de nos éléments de calcul. Heureusement pour nous, il y a une option appelée "Format dynamique" qui va simplifier les choses !

On retourne dans notre vue de modèle et on clique sur l'élément de calcul à reformater. On active l'option "Chaîne de format dynamique" et on tape "0.00%" dans la barre de formule pour appliquer le format de pourcentage à notre élément de calcul.

 

On retourne dans la vue de rapport pour constater les changements.

Le problème est résolu ! Passons au stade supérieur avec le cas des devises !

Le cas des devises

L'objectif est de convertir nos données en dollars et en livres sterling avec un groupe de calcul.

Pour cet exemple, on a utilisé les données de ce site ( connecteur web pour les récupérer ;)) : https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html.

On applique les mêmes étapes que pour les stats basiques et la Time Intelligence : on créée le groupe de calcul, on renomme le groupe et la colonne de calcul.

Ensuite, on fait nos éléments de calcul.

Expliquons chaque élément de calcul.

€ : On est déjà en euros, donc on peut juste utiliser SELECTEDMEASURE().

€ = SELECTEDMEASURE()

$ : On convertit notre mesure en $.

$ = 
SELECTEDMEASURE ()
    * CALCULATE ( MAX ( Dim_Devise[Valeur _Devise] ), Dim_Devise[Devise] = "USD" )

£ : On convertit notre mesure en £.

£ = 
SELECTEDMEASURE ()
    * CALCULATE ( MAX ( Dim_Devise[Valeur _Devise] ), Dim_Devise[Devise] = "GBP" )

On applique un CALCULATE(), pour préciser la devise en se basant sur notre dimension contenant les devises et leur taux de change par rapport à l'euro.

Ensuite, on réordonne les éléments de calcul pour l'affichage.

Il ne faut pas oublier de modifier les formats selon les devises. On écrit "0,0 $" pour le format dollar (la virgule sert à mettre un séparateur de millier).

On n'a plus qu'à vérifier les résultats.

On constate que ça marche sauf pour la variation mensuelle !

On change la "précédence" (l'ordre) des groupes de calcul pour régler les problèmes de priorité de format. Le pourcentage de variation mensuelle ne devrait plus être converti en devise étrangère.

Et voilà, notre problème de format est maintenant résolu !

 

Avantages et inconvénients des groupes de calcul

 

Avantages

  • Ils sont pratiques pour réduire le nombre de mesures.
  • Ils peuvent nous faire gagner un temps non négligeable
  • Ils facilitent la maintenance, on gère plusieurs mesures au même endroit, pratique pour leur mise à jour.

Inconvénients

  • Durs à mettre en place : il faut être fort en DAX, comprendre son fonctionnement en profondeur pour être prêt à appréhender les subtilités des groupes de calcul ! Il y a donc une barrière technique. On a eu un aperçu des difficultés potentielles liées aux groupes de calcul dans cet article.
  • Attention, la performance peut être affectée si on abuse de cette fonctionnalité.
  • Cette fonctionnalité est très proche du paramètre de champ. Le paramètre de champ permet aussi de faire les fameux segments permettant de changer l'axe d'analyse ou la mesure d'un visuel en 1 seul clic.

 

Conclusion

Les groupes de calculs sont une fonctionnalité pratique pour réduire le nombre de mesures et gagner du temps en théorie. Cependant, ils peuvent se montrer compliqués à créer et combiner. On se retrouve avec un casse-tête pour combiner les groupes de calcul. Effectivement, les subtilités de format, d'ordre de priorité et de calcul nous poussent à nous interroger en ce qui concerne leur mise en place pour des mesures pas si nombreuses et plus complexes. A vous de voir s'ils sont nécessaires dans vos projets !

En attendant, si vous voulez aller plus loin, notre équipe d'experts passionnés est prête à vous accompagner dans vos projets et dans votre prise en main de Power BI, que vous soyez débutant ou à un niveau plus avancé !

Articles en relation

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram