Les groupes de calcul ouvrent un large éventail de possibilités, il vous suffit de vous lancer.
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).
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.
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 »
Immédiatement une nouvelle table apparaît dans la liste des tables avec un nom par défaut que nous pouvons (et devons) changer
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.
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 »
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:
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.
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
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.
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.
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 »
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.
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")
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
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.
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
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
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
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
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:
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]
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
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
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.
Passionné par Power BI en général et en particulier par le DAX et les groupes de calcul. Base solide d’Excel + VBA, T-SQL et SSIS. Ingénieur industriel de formation, et ayant travaillé dans plusieurs cabinets de conseil, j’aime comprendre le problème de l’entreprise et travailler directement avec le client.
Bernat AgullóSenior BI Developer and Partner at Esbrina
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.
Vous pouvez créer un rapport mais vous voulez le partager sans avoir de licence pro ou sans que vos lecteurs ne doivent posséder une licence pro. Découvrez comment faire.
0 commentaire