Groupes de calcul
En bref
- Objectifs : expliquer l'intérêt d'un groupe de calcul ; créer un groupe Time intelligence dans Power BI Desktop ; appliquer une chaîne de format dynamique à un élément de calcul ; utiliser un élément de calcul dans un visuel et dans une mesure.
- Prérequis : mesures explicites, CALCULATE et notions de time intelligence (sous-partie Calculer avec DAX) ; une table de dates marquée.
- Niveau : avancé.
Pourquoi ?
Un groupe de calcul réduit le nombre de mesures d'un modèle. Pour le montant des ventes, on crée souvent quatre mesures :
- l'année en cours (CY) ;
- l'année précédente (LY) ;
- l'évolution d'une année sur l'autre (YoY) ;
- cette évolution en pourcentage (% YoY).
Il faut les répéter pour chaque indicateur : quantités, nombre de ventes, marge, achats. Avec quatre indicateurs, on obtient seize mesures. Un groupe de calcul définit ces quatre calculs une seule fois, sans préciser la mesure à laquelle ils s'appliquent, grâce à la fonction SELECTEDMEASURE. Dans le visuel, vous combinez ensuite les éléments de calcul avec n'importe quelle mesure.

Notions clés
- Un groupe de calcul apparaît comme une table avec une colonne (le nom du groupe de calcul) dont chaque valeur est un élément de calcul.
- Chaque élément de calcul est une expression DAX dans laquelle SELECTEDMEASURE() est remplacée par la mesure placée dans le visuel.
- Les éléments de calcul ne s'appliquent qu'aux mesures explicites. À la création du premier groupe, Power BI demande d'activer la propriété Décourager les mesures implicites du modèle.
- Chaque élément peut avoir sa propre chaîne de format dynamique (pourcentage pour % YoY).
- Si plusieurs groupes de calcul s'appliquent à la même mesure, la propriété Priorité fixe leur ordre d'application.
Pas à pas
1. Dans la vue Modèle, cliquez sur Groupe de calcul dans le ruban. Vous pouvez aussi, dans l'onglet Modèle du volet Données, faire un clic droit sur Groupes de calcul > Nouveau groupe de calcul.
2. Si Power BI le propose, acceptez d'activer Décourager les mesures implicites.
3. Renommez le groupe en Time intelligence et sa colonne en Calcul.
[Capture : onglet Modèle du volet Données, groupe de calcul Time intelligence développé avec sa colonne Calcul et ses éléments de calcul]
4. Le premier élément de calcul contient SELECTEDMEASURE(). Renommez-le CY (année en cours) : il renvoie la mesure telle quelle.
5. Clic droit sur Éléments de calcul > Nouvel élément de calcul, puis créez les trois autres éléments :
LY =
CALCULATE ( SELECTEDMEASURE (), DATEADD ( 'Date'[Date], -1, YEAR ) )YoY =
VAR varC = SELECTEDMEASURE ()
VAR varL = CALCULATE ( SELECTEDMEASURE (), DATEADD ( 'Date'[Date], -1, YEAR ) )
RETURN
varC - varL% YoY =
VAR varC = SELECTEDMEASURE ()
VAR varL = CALCULATE ( SELECTEDMEASURE (), DATEADD ( 'Date'[Date], -1, YEAR ) )
RETURN
DIVIDE ( varC - varL, varL )6. Sélectionnez l'élément % YoY, activez Chaîne de format dynamique dans le volet Propriétés, puis saisissez le format "0.0%".
[Capture : volet Propriétés de l'élément de calcul % YoY, option Chaîne de format dynamique activée et expression "0.0%" dans la barre de formule]
7. Dans la vue Rapport, créez une matrice : un champ d'année en lignes (ici Calendar Year), une mesure en valeurs (ici Sales Amount) et la colonne Calcul du groupe Time intelligence en colonnes.


Un segment sur la colonne Calcul applique l'élément choisi à toutes les mesures de la page.
Exemple
Appeler un élément de calcul dans une mesure
Un élément de calcul peut servir de filtre dans CALCULATE :
CA % YoY =
CALCULATE ( [CA HT], 'Time intelligence'[Calcul] = "% YoY" )Créer le groupe dans la vue TMDL
Le même groupe peut être écrit, copié d'un fichier à l'autre ou corrigé dans la vue TMDL (page Vue TMDL). La structure générée par Power BI Desktop est la suivante :
createOrReplace
table 'Time intelligence'
calculationGroup
precedence: 1
calculationItem CY = SELECTEDMEASURE()
column Calcul
dataType: string
summarizeBy: none
sourceColumn: Name
sortByColumn: Ordinal
column Ordinal
dataType: int64
formatString: 0
summarizeBy: sum
sourceColumn: OrdinalUne astuce à éviter : l'expression de lignes de détail comme « variable de table »
Une ancienne page du support détournait la propriété expression de lignes de détail d'une mesure (créée avec Tabular Editor) pour stocker une table filtrée et la réutiliser dans plusieurs mesures avec DETAILROWS. Cet usage n'est pas documenté par Microsoft : l'expression de lignes de détail sert à définir le détail renvoyé par Excel ou par DETAILROWS (voir Vue TMDL). Pour réutiliser une logique de filtre, utilisez plutôt des variables, une mesure, un élément de calcul ou une fonction DAX définie par l'utilisateur (sous-partie Calculer avec DAX).
Pièges et bonnes pratiques
- Dès qu'un groupe de calcul existe, les mesures du modèle utilisent le type de données variant : une mesure de texte (titre dynamique) peut provoquer une erreur si un élément applique une opération mathématique. Protégez l'élément avec
IF ( ISNUMERIC ( SELECTEDMEASURE () ), ... ). - Les mesures implicites (glisser une colonne numérique dans un visuel) ne sont plus utilisables : créez des mesures explicites pour tous les indicateurs.
- Définissez des expressions de sélection pour contrôler le résultat quand l'utilisateur sélectionne plusieurs éléments, ou aucun.
- Les calculs visuels (sous-partie DAX) répondent à certains besoins proches, mais au niveau d'un seul visuel.
À retenir
- Un groupe de calcul factorise un calcul applicable à toutes les mesures grâce à SELECTEDMEASURE.
- Il se crée dans la vue Modèle de Power BI Desktop, sans outil externe.
- Il impose des mesures explicites.
- Chaque élément peut avoir son propre format dynamique.