Qu’est-ce qu'un groupe de calcul power bi ?

Les groupes de calcul ouvrent un large éventail de possibilités, il vous suffit de vous lancer.

Power bi groupe de calcul article biist image en vedette

Partagez l’article

Tout d’abord, pourquoi devrais-je lire cet article?

Lorsque nous parlons de groupes de calcul, nous parlons avant tout d’un cas d’utilisation qui permet de réduire le nombre de mesures dans un modèle, de centraliser la logique en un seul endroit au lieu de la reproduire dans de nombreuses mesures. Laissez-moi vous expliquer.

Pour analyser nos données, l’intelligence temporelle est un pilier important de la BI. Pour ce faire, nous partons généralement d’une mesure de base, puis générons d’autres mesures basées sur celle-ci, par exemple:

Ventas Año Anterior = CALCULATE([Ventas],SAMEPERIODLASTYEAR( 'Fecha'[Fecha]))

Si nous avons besoin du même calcul pour une autre mesure, nous devons générer une autre mesure avec la même expression, simplement avec cette autre mesure au lieu de [Ventas]. Si nous avons plusieurs mesures et plusieurs calculs d’intelligence temporelle (vous pouvez rapidement en avoir 7 ou 8) nous voyons que le nombre de mesures peut exploser et que leur gestion devient complexe. Le groupe de calcul Power BI vous permet de réduire le nombre de mesures en centralisant la partie qui est répétée dans toutes ces mesures. Mais commençons par le début…

Que sont les Power BI Calculation Group ?

La définition :

En réalité, peu de gens essaient de définir ce que sont les groupes de calcul Power BI et parlent directement de « fonctionnalité » sans essayer d’établir une définition en tant que telle de ce qu’ils sont. D’emblée, ils ne sont ni une colonne calculée ni une mesure !

En un mot, nous devrions considérer le groupe de calcul Power BI comme « un ensemble d’une ou plusieurs expressions DAX qui remplacent les mesures qui se trouvent dans leur contexte de filtre ».

Si nous voulons une définition plus complète, nous ajouterons que le groupe de calcul Power BI est affiché sous la forme d’une table supplémentaire dans notre modèle tabulaire, avec 2 colonnes : une avec le nom de chacune de ces expressions (appelées éléments de calcul) et une autre avec l’ordre attribué.

Cependant, à partir de décembre 2021, il n’est pas possible de voir ces expressions dont nous parlons à partir de Power BI Desktop, et encore moins d’en générer de nouvelles. Ce qui nous amène au point suivant…

Comment générer le groupe de calcul Power BI ?

À partir de Power BI Desktop, il n’est pas possible de générer des groupes de calcul. Nous devons recourir à des outils tiers, et parmi tous les outils les plus faciles à utiliser et qui vous servira ici et pour beaucoup d’autres choses on a Tabular Editor (C’est l’un des outils qui sont discutés dans cet article de blog)

Étape par étape

Télécharger Tabular Editor

Si nous n’avons pas l’application, nous devrons la télécharger. Il y a une version gratuite et une version payante (Tabular Editor 3, qui a évidemment plus de fonctionnalités) et les deux servent à faire des Calculation Group dans vos modèles. Si vous travaillez sérieusement dans Power BI, je vous recommande Tabular Editor 3, même s’il s’agit de la licence « Desktop ». Mais bon, je ne veux pas trop m’attarder sur ce point parce que l’article est déjà très long (Vous pouvez aller un peu plus loin avec cet autre article de blog). Sachez simplement que si quelqu’un n’a pas d’autorisations d’installation sur la machine, vous pouvez également l’utiliser avec la version portable des versions 2 et 3 (bien que ce ne soit pas quelque chose de « conforme », mais c’est un autre problème).

Connexion de l’éditeur tabulaire à notre modèle

Si nous avons pu l’installer, nous obtiendrons l’application dans notre onglet « Outils externes » et lorsque nous l’ouvrirons, nous aurons l’éditeur tabulaire connecté à notre modèle. Si nous utilisons la version portable, nous l’ouvrirons comme n’importe quelle autre application et la connecterons au modèle (« Ouvrir à partir de la base de données » ou ctrl + maj + O).

tabular editor pour créer des groupes de calculs

Nous savons que nous sommes connectés à notre modèle car nous pouvons voir les tableaux et d’autres détails tels que les relations, etc.

vue modele dans tabular editor external tool power bi

Création de notre premier groupe de calcul Power BI

Pour créer un groupe de calcul, il suffit de cliquer avec le bouton droit de la souris en haut du petit dossier « Tables » et de sélectionner l’option « Groupe de calcul »

creer calculation group dans tabular editor

Immédiatement une nouvelle table apparaît dans la liste des tables avec un nom par défaut que nous pouvons (et devons) changer

creer calculation item tabular editor

Pour continuer avec l’exemple, nous pouvons l’appeler « Time Intelligence ». Si nous affichons le groupe de calcul, nous verrons qu’il a 2 colonnes (l’une d’entre elles est masquée, appuyez sur Ctrl + 5 ou sur l’icône de la barre « afficher / masquer les objets cachés pour le voir) et quelque chose de similaire à un dossier où les éléments de calcul seront chacun des « lignes » que nous verrons dans le tableau dans Power BI Desktop. Avant d’entrer dans les éléments de calcul, je vous recommande de modifier le nom de la colonne « Nom » en quelque chose de plus descriptif. Normalement, je ne me complique pas la vie et je mets le même nom que le groupe de calcul Power BI.

calculation group tabular editor name

Ajout de notre premier élément de calcul

Eh bien, c’est parti, allons-y. Nous faisons un clic droit sur le « dossier » des éléments de calcul et sélectionnons « Nouvel élément de calcul »

new calculation item tabular editor

Et de la même manière que lorsque nous générons le groupe de calcul, il nous est suggéré un nom que nous ferions mieux de changer pour quelque chose de plus intuitif. Ce nom est celui qui apparaîtra dans le rapport si nous utilisons le groupe de calcul pour construire un visuel, cela vaut donc la peine d’y réfléchir un peu. Pour notre exemple, le premier calculatation item que nous générons ne fera rien, nous l’appellerons « Valeur actuelle ». Ensuite, nous en générerons un autre appelé « Valeur de l’année précédente »

Définition de l’expression de valeur

Chaque élément de calcul est en fait une paire d’expressions DAX, une expression de valeur et une chaîne de format ou formatstring. Par défaut, Tabular Editor nous permet de modifier l’expression de valeur dans le panneau de droite (dans Tabular Editor 3, elle est par défaut à gauche)

Maintenant, nous sélectionnons pour le moment le premier élément de calcul que nous avons généré, « Valeur actuelle ». Si on revient sur la définition que nous avons vue au début, l’expression que nous mettrons écrasera les mesures qui sont dans le contexte des filtres. Comment pouvons-nous faire pour que l’expression renvoie la valeur d’origine ?

Heureusement, dans les groupes de calcul Power BI, nous pouvons utiliser des fonctions DAX spéciales qui servent à interagir avec la mesure qui se trouve dans le contexte des filtres. La plus importanta est celle dont nous avons besoin maintenant:

SELECTEDMEASURE( )

Cette fonction renvoie la mesure qui se trouve dans le contexte. Si nous mettons [Ventas], ce sera comme si [Ventas] était dans l’expression DAX. Si nous ne mettons que SELECTEDMEASURE( ), cela ne semble pas très utile, mais avec le deuxième calculation item, nous allons voir qu’il y a du potentiel. Nous sélectionnons le deuxième calculation item que nous avons créé : « Valeur de l’année précédente ».

Pour l’expression de la valeur de ce calculation item, nous devons utiliser la même mesure de base, mais nous devons maintenant modifier le contexte du filtre afin qu’il le recule d’un an.

Comme je l’ai dit au début, lorsque nous faisons de l’intelligence temporelle avec des mesures, nous devons écrire:

CALCULATE([Ventas],SAMEPERIODLASTYEAR( 'Fecha'[Fecha]))

Cette expression renvoie la valeur correspondant au déplacement des dates contenues dans le contexte des filtres, il y a un an. Si nous filtrons sur 2021, il renverra la valeur de 2020. De la même manière, si nous filtrons sur décembre 2021, il retournera les valeurs de décembre 2020. Cette expression représente déjà 99% de ce dont nous avons besoin, nous allons simplement remplacer [Ventas] SELECTEDMEASURE() pour que ça fonctionne avec n’importe quelle mesure que nous utiliserons dans le contexte des filtres.

CALCULATE (
    SELECTEDMEASURE (),
    SAMEPERIODLASTYEAR ( 'Fecha'[Fecha] )
)

Il est important de noter que dans Tabular Editor, le nom des objets et l’expression DAX sont séparés, contrairement à Power BI Desktop où les deux sont définis en même temps dans la même expression.

Enregistrement des modifications apportées au modèle

Bien que dans Tabular Editor nous ayons créé un groupe de calcul, pour le moment PBI Desktop n’est pas « au courant ». L’une des vertus qui rendent Tabular Editor unique est qu’il ne se synchronise pas avec le modèle à chaque changement que nous apportons, ce qui évite de rendre le développement dans PBI Desktop si lent et désespérant parfois. Dans Tabular Editor, lorsque vous avez fini d’effectuer toutes les modifications que vous vouliez apporter, vous lui dites que vous voulez rendre les modifications effectives, et c’est à ce moment (et pas avant) que le modèle est mis à jour. Pour ce faire, vous devez cliquer sur le bouton de la disquette et le cube « Enregistrer les modifications apportées à la base de données connectée » ou appuyer sur Ctrl + S

tabular editor enregistrer les changements

Dans la plupart des cas, cela suffit, mais lorsque nous créons un groupe de calcul Power BI, cela nécessite une actualisation également du côté de Power BI Desktop.

calculation group power bi desktop refresh now

Une fois que nous avons effectué l’actualisation, nous pouvons voir notre nouveau groupe de calcul dans la liste des tables et dans la vue de la table.

power bi desktop calculation group

Utilisation d’un groupe de calcul Power BI

Un groupe de calcul est utilisé comme n’importe quel autre filtre dans Power BI et peut être utilisé dans le panneau de filtre, pour créer un visuel, ou même dans des expressions DAX. La seule chose à garder à l’esprit est que si deux calculation items ou plus sont actifs pour le même contexte de filtre, aucun des deux ne s’appliquera. Seulement un calculation item peut être actif par groupe de calcul.

Utilisation du groupe de calcul Power BI dans le volet de filtre

Pour utiliser un exemple simple, nous pouvons imaginer que nous voulons avoir deux cartes dans notre rapport, l’une avec les ventes de l’année sélectionnée et l’autre avec les ventes de l’année précédente.

On insert un slicer par années sous forme de liste (avec une valeur sélectionnée), et deux cartes. Nous faisons glisser la mesure des ventes vers les deux cartes et dans celle doit afficher la valeur de l’année précédente, nous faisons glisser la colonne de notre groupe de calcul dans les filtres d’objet visuel et on sélectionne « Valeur de l’année précédente »

calculation group filtres

Si nous changeons l’année, nous verrons effectivement le changement d’année et la valeur de l’année précédénte à celle sélectionnée.

Utilisation du groupe de calcul Power BI dans les visuels

Une autre possibilité que nous avons est d’utiliser la colonne du groupe de calcul dans les objets visuels. Si nous utilisons la colonne dans une matrice, nous pouvons visualiser la valeur de l’année en cours et de l’année précédente de plusieurs mesures, de manière très compacte et efficace puisqu’il s’agit d’un objet visuel unique. Pour que cela ressemble à l’image, vous devez activer l’option d’affichage des valeurs en lignes.

calculation group power bi visuels

Utilisation d’un groupe de calcul Power BI dans les expressions DAX

Cette option n’est peut-être pas si utile au début, mais il est bon de savoir qu’elle existe. Comme tout autre filtre, nous pouvons l’utiliser dans les expressions CALCULATE par exemple nous pouvons définir une mesure comme

Ventas Año Anterior =
CALCULATE (
    [Ventas],
    'Time Intelligence'[Time Intelligence] = "Valor Año Anterior"
)

Cette expression est équivalente à

Ventas Año Anterior (sin Calc Group) =
CALCULATE (
    [Ventas],
    SAMEPERIODLASTYEAR ( 'Fecha'[Fecha] )
)

A priori, il peut sembler étrange de créer des mesures à l’aide d’un groupe de calcul alors que l’un des avantages qu’ils offrent est de réduire le nombre de mesures, précisément. Cependant, cela peut parfois nous aider à éviter d’inclure le groupe de calcul dans les filtres qui sont transmis à l’info-bulle. Mais bon, comme je l’ai dit, parmis les trois façons d’utiliser les groupes de calcul, c’est celle qui est sûrement la moins utilisée et surtout au début.

Contrôle total du format numérique

Avec ce qu’on a vu jusqu’à présent, les groupes de calcul sont déjà très puissants, mais ce n’est pas tout! Pour chaque calculation item, nous pouvons définir une expression DAX qui définit le « formatstring » pour chaque contexte de filtre. C’est-à-dire qu’il n’est pas nécessaire que ce soit une expression constante. Mais bon, commençons par le début.

Pour le moment, nous n’avons fait qu’une transformation « facile » pour rendre la valeur de l’année précédente, mais nous pouvons la compliquer en fonction de ce qu’on veut montrer. Un classique serait de calculer le pourcentage d’augmentation par rapport à l’année précédente. L’expression DAX pour la valeur serait quelque chose comme

Cambio Porcentual sobre Año Anterior =
VAR valorActual =
    SELECTEDMEASURE ()
VAR valorAnyoAnterior =
    CALCULATE (
        SELECTEDMEASURE (),
        SAMEPERIODLASTYEAR ( 'Date'[Date] )
    )
VAR cambioPorcentual =
    IF (
        OR (
            ISBLANK ( valorActual ),
            ISBLANK ( valorAnyoAnterior )
        ),
        BLANK (),
        DIVIDE (
            valorActual,
            valorAnyoAnterior
        ) - 1
    )
RETURN
    cambioPorcentual

Nous stockons les valeurs de l’année en cours et de l’année précédente dans des variables, et si aucune d’entre elles n’est vide, nous les divisons et en soustrayons une. Cependant, lors de l’enregistrement des modifications (et de l’actualisation à partir de PBI Desktop), nous voyons que le format a besoin de quelque chose de plus.

format calculation group

Les mesures de base (à l’exception de la marge en pourcentage) ne sont pas de type pourcentage, nous ne pouvons donc pas modifier leur format. Que pouvons-nous faire? Nous devons définir l’expression DAX du format.

Nous revenons à Tabular Editor, sélectionnons l’élément de calcul et allons sur la partie qui permet de définir l’expression de format

calculation group format string expression

Dans ce cas, et pour l’instant, il suffit de dire que le format numérique lorsque ce calculation item est actif doit être de type pourcentage, nous allons donc simplement ajouter le formatstring à appliquer. C’est toujours une expression DAX, donc pour que ce soit du texte, nous devons la mettre entre guillemets. Dans notre cas, nous pouvons mettre « 0,00% »

Si nous enregistrons les modifications, nous voyons directement la modification dans PBI Desktop

calculation group de calcul format string expression

Ici, nous voyons que nous pouvons facilement avoir différents formats en fonction du calculation item.

Contrôle de la puissance des groupes de calcul Power BI

Il y a un sujet que je me dois d’aborder avant de terminer cet article : c’est l’importance de comprendre quelles mesures sont affectées par les calculation items. Pour mieux comprendre, nous allons faire un exemple. Nous avons créé une matrice de ventes segmentée par Fabricants et Continents. Pour le rendre le visuel plus beau, nous créons une mesure pour avoir un titre dynamique

Título Matriz = "Ventas " & SELECTEDVALUE ( 'Date'[Year] )

Nous avons mis en place le titre dynamique et il devrait ressembler à ceci

power bi calculation group matrice

Si nous appliquons maintenant nos calculation items à ce visuel, pour la valeur actuelle et la valeur de l’année précédente, tout se passe très bien (le titre est mis à jour), mais dès qu’on sélectionne le calculation item de variation en pourcentage, nous avons un problème

error calculation group couldn't load the data for this visual power bi

Le message d’erreur nous donne déjà un indice sur ce qui se passe. Le groupe de calcul est appliqué sur TOUTES les mesures dans le contexte, qui dans ce cas est l’ensemble du visuel, et dans cet objet il y a aussi la mesure du titre. Et bien sûr, en essayant de calculer le pourcentage de changement du titre, ça coince.

Que pouvons-nous faire? Eh bien, nous devons définir différentes logiques en fonction de la mesure en cours de calcul, et pour ce faire, nous allons utiliser d’autres fonctions spéciales des groupes de calcul:

ISSELECTEDMEASURE([Medida 1],[Medida 2],… [Mediada n])

renvoie TRUE si la mesure en cours de calcul est l’une de celles qui ont été placées dans la fonction, FALSE si ce n’est pas le cas.

Dans notre exemple, nous pouvons modifier les calculation items comme suit

Alternativement, nous avons également la possibilité d’utiliser

SELECTEDMEASURENAME() IN {« Mesure 1 », »Mesure 2 »… « Mesure N »}

Cette fonction renvoie le nom de la mesure en cours de calcul et à partir de là, nous pouvons définir la logique que nous voulons (ce qu’il y a écrit ci-dessus n’est qu’un exemple). Si à tout moment nous changeons le nom de la mesure, nous devrons corriger la logique car elle sera définie comme un texte, mais par contre, nous pouvons faire autre chose comme avoir la liste des mesures dans une table séparée et ainsi ajouter facilement des mesures affectées par le groupe de calcul.

SELECTEDMEASURENAME() IN VALUES(« Mesures Affectées»)[Nombre Medida]

Cambio Porcentual sobre Año Anterior =
IF (
    ISSELECTEDMEASURE (
        [Sales Amount],
        [Total Cost],
        [Margin],
        [Margin %]
    ),
    VAR valorActual =
        SELECTEDMEASURE ()
    VAR valorAnyoAnterior =
        CALCULATE (
            SELECTEDMEASURE (),
            SAMEPERIODLASTYEAR ( 'Date'[Date] )
        )
    VAR cambioPorcentual =
        IF (
            OR (
                ISBLANK ( valorActual ),
                ISBLANK ( valorAnyoAnterior )
            ),
            BLANK (),
            DIVIDE (
                valorActual,
                valorAnyoAnterior
            ) - 1
        )
    RETURN
        cambioPorcentual,
    SELECTEDMEASURE ()
)

Cela semble complexe, mais nous venons seulement d’ajouter une « protection ». Quelque chose comme « Si c’est l’une des mesures que nous voulons affecter, appliquez la logique, sinon, elle renvoie la valeur de la mesure sans aucune transformation »

Dans cet exemple, cela suffirait, mais on considère qu’il faut toujours mettre cette « protection », à la fois dans la valeur et dans l’expression du format, pour éviter des maux de tête plus tard. Pour l’expression de format, c’est très similaire, mais au lieu de SELECTEDMEASURE qui fait référence à la valeur, ce que vous devez renvoyer c’est SELECTEDMEASUREFORMATSTRING(), c’est-à-dire le format que la mesure avait déjà. En d’autres termes, ne modifiez pas la chaîne de format.

Dans notre cas, ce serait comme ça

Cambio Porcentual sobre Año Anterior (format string) =
IF (
    ISSELECTEDMEASURE (
        [Sales Amount],
        [Total Cost],
        [Margin],
        [Margin %]
    ),
    "0.00%",
    SELECTEDMEASUREFORMATSTRING ()
)

Si nous enregistrons les modifications, nous constatons que notre groupe de calcul fonctionne déjà correctement

selectedmeasureformatstring power bi calculation group

Pour compléter l’explication, je voudrais juste ajouter qu’il est également possible d’utiliser le nom de la mesure dans la logique, avec la fonction SELECTEDMEASURENAME(). La même « protection » pourrait être exprimée comme suit

Cambio Porcentual sobre Año Anterior =
IF (
    SELECTEDMEASURENAME ()
        IN {"Sales Amount","Total Cost",
            "Margin","Margin %" },
    VAR valorActual =
        SELECTEDMEASURE ()
    VAR valorAnyoAnterior =
        CALCULATE (
            SELECTEDMEASURE (),
            SAMEPERIODLASTYEAR ( 'Date'[Date] )
        )
    VAR cambioPorcentual =
        IF (
            OR (
                ISBLANK ( valorActual ),
                ISBLANK ( valorAnyoAnterior )
            ),
            BLANK (),
            DIVIDE (
                valorActual,
                valorAnyoAnterior
            ) - 1
        )
    RETURN
        cambioPorcentual,
    SELECTEDMEASURE ()
)

D’une part, le problème de changement de nom provoque la rupture de la logique, mais d’autre part, il permet par exemple de consolider tous les noms de mesure qui doivent être affectés dans une table déconnectée et de simplement vérifier si le nom de la mesure est contenu dans la table. Si, à tout moment, une mesure doit être ajoutée, elle est ajoutée en un seul endroit.

Conclusion

C’est beaucoup d’informations, mais en réalité, ce ne sont que les règles du jeu (et il en manque!) Dans cet article, nous n’avons pas détaillé ce qui se passe lorsqu’il y a plus d’un groupe de calcul actif à la fois. Nous n’avons pas non plus dit que lorsqu’il y a des groupes de calcul, vous ne pouvez plus faire glisser des colonnes numériques vers les visuels (cela ne devrait jamais être fait dans tous les cas).

Je vous invite à poursuivre l’étude des possibilités ouvertes par les groupes de calcul power bi. Mon blog est plein d’idées qui me sont venues à l’esprit en faisant la vaisselle ou pour résoudre des problèmes métiers dans mon quotidien ou dans les forums où je participe.

Merci de m’avoir lu jusqu’ici et rappelez-vous, l’important est de ne pas avoir peur et d’expérimenter!

Découvrez notre formation dédiée au langage DAX dans Power BI

Cours DAX initial qui structure et complète vos connaissances du langage DAX dans Power BI.

Dominez Microsoft Power BI

Abonnez-vous à la Newsletter

0 commentaire

Laisser un commentaire

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

Plus d'articles

Power BI desktop Microsoft Store
Power BI

INSTALLER POWER BI DEPUIS MICROSOFT STORE OU SÉPARÉMENT : FAITES LE BON CHOIX !

Ce tutoriel de BIIST Pro vous montre la procédure à suivre, étape par étape, pour télécharger et installer Microsoft Power BI Desktop à partir de Microsoft Store, d’une part, et depuis le centre de téléchargement de Microsoft d’autre part. Nous verrons également les différences fondamentales entre ces deux façons d’installer l’outil.

Inscrivez-vous à la Newsletter Power BI

Nouveautés Power BI en français

Tutos, conseils & astuces.


-10%  sur les Formations Power BI

X