Vous êtes sur la page 1sur 76

Cours Microsoft Power BI

Data Model & DAX Basic

Support de formation v. 1.1 - Avril 2019

1
Sommaire

Data Modeling & DAX basic

➢ Rappels et complément autour des notions de Data models et


de modélisation
➢ Les différentes étapes du travail de modélisation
➢ Initiation au langage DAX

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 2


Data Modeling & DAX

➢ Le travail de modélisation dans Power BI se fait :

▪ Soit à l’issue du travail d’importation et de retraitement des données ;


▪ Soit au fur et à mesure de la construction des flux d’alimentation.

➢ Il n’est pas rare que l’on doive revenir sur le processus d’alimentation
pendant le travail de modélisation pour ajuster quelques données ;

➢ Enfin, nous verrons que le DAX, langage utilisé dans le cadre du travail de
modélisation, permet également de construire des tables dynamiques à
partir des tables résultant du processus de chargement :
▪ Nous l’avons déjà vu pour la partie création d’une table calendaire

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 12


Data Modeling & DAX

➢ L’étape de modélisation est une étape clé dans la mesure où elle vise à
garantir pour l’utilisateur :

▪ La compréhension des objets métiers qu’il manipule (sémantique, description) ;


▪ La cohérence de la navigation interactive entre ces objets (relations) ;
▪ La richesse des objets, dont les indicateurs, permettant à l’utilisateur
d’apprécier la problématique étudiée (définition d’indicateurs et de leur
déclinaison) ;
▪ Le côté prêt à l’emploi qui va de pair avec ce type de solution (formatage des
données) ;
▪ La garantie de gérer finement la sécurité/confidentialité des données en
fonction du profil de l’utilisateur :
• Restriction sur les objets métiers ;
• Restriction sur les données.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 13


Data Modeling & DAX

➢ Nous avons déjà abordé lors de l’introduction les concepts de modélisation :


▪ Tables avec Table de dimensions, Table de faits ;
▪ Les relations entre les tables et les cardinalités associées ;
▪ Modèles analytiques sous la forme de Modèle en flocon, Modèle en étoile ;
▪ Hiérarchies.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 14


Data Modeling & DAX

➢ Pour compléter les types de table (Dimensions, Faits), il existe également les
tables d’agrégat :
▪ Une table d’agrégat s’appuie sur une table de faits pour présenter en général un
niveau d’information plus synthétique complété d’indicateurs dits agrégés.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 15


Data Modeling & DAX

➢ Les tables d’agrégat sont généralement issues / calculées à partir d’une table
de fait à partir desquelles :

▪ On supprime des références à des dimensions (Magasins, Clients) ou on


remonte dans la hiérarchie de la dimension (Calendrier : Date => Année) ;
▪ On agrège certaines informations pour aboutir à des indicateurs (min, max,
count, count distinct, moyenne, somme, rang…).

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 16


Data Modeling & DAX

➢ Les tables d’agrégation sont utilisées dans différents cas :

▪ Restreindre de manière conséquente la volumétrie des données et ainsi garantir


de meilleures performances (consommation de mémoire plus faible) ;
▪ Pour des questions de sécurité : masquer les informations de détail et
notamment répondre aux normes GDPR ;
▪ Constituer des indicateurs tenant compte de règles de gestion : solde fin de
mois …

➢ Les tables d’agrégats peuvent être constituées dans le cadre du processus


d’alimentation (opération de regroupement avec les formules d’agrégation)
et/ou dans le modèle de données via l’utilisation du DAX ;

➢ N’oublions pas que toutes agrégations altèrent les capacités d’audit des
données.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 17


Data Modeling & DAX

➢ L’interface de modélisation est organisée en deux écrans, accessible depuis


le bandeau droit :
▪ La vision « données » avec une vue du contenu de chaque table ;
▪ La vision « structure » permettant de mettre en place les relations et d’avoir une
vision globale du Data Model.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 18


Data Modeling & DAX

➢ La vue « données » permet de travailler sur la présentation de l’information :


▪ Masquage : Masque des données techniques sans intérêt pour l’utilisateur ;
▪ Typage : Préciser le data-type ;
▪ Formatage : Affichage des données de type numérique, de type date ;
▪ Catégorisation : Elément de localisation pour les représentations géographiques,
URL, Image, Code barre ;
▪ Tri des valeurs : Définit l’ordre de présentation des données par défaut ;
▪ Agrégation par défaut : sur les données utilisées à des fins de constitution
d’indicateurs, définit la méthode d’agrégation (somme, moyenne, comptage…)
qui sera utilisée par défaut ;
▪ Définition de groupes : Pour combiner des valeurs spécifiques ;
▪ Renommage de item (colonnes et tables).

➢ Toutes ces opérations vont influer sur la manière dont les informations seront
présentées en restitution et vont être interprétées par les différents visuels ;
➢ Plus le travail sera abouti, moins l’utilisateurs aura de paramétrage lors de la
création des visuels.
Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 19
Data Modeling & DAX

➢ Le travail consiste donc à balayer depuis la vue « Données », chacune des


tables, et pour chacune de leurs colonnes, se poser toutes les questions en
rapport avec les points précédents :
1. Positionnez-vous sur la vue « Données » ;
2. Allez dans le menu « Modélisation » ;
3. Sélectionnez la table « Order Detail ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 20


Data Modeling & DAX

➢ Pour masquer les colonnes :


1. Sélectionnez la colonne et faites un clique-droit dessus ;
2. Sélectionnez l’item « Masquer la vue dans le rapport » ;
3. Faite cette opération pour toutes les colonnes d’ID ().
▪ Les colonnes masquées sont identifiables avec leurs entêtes grisés ;
▪ Une colonne masquée peut être utilisée dans les calculs DAX.

2
Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 21
Data Modeling & DAX

➢ Pour définir/contrôler le type de donnée et les options de formatage :


1. Sélectionnez la colonne (passer sur toutes les colonnes) ;
2. Contrôlez ou définissez le type approprié à chacune en utilisant les différentes
options de mise en forme du menu « Modélisation ».

2 1

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 22


Data Modeling & DAX

➢ Pour définir/contrôler la catégorisation de contenu :


1. Sélectionnez la colonne (passer sur les colonnes pouvant correspondre aux
types de contenu) ;
2. Dans la table « Produit », colonne « Photo Produit », définissez la catégorie
« URL Image » dans la liste « Catégorie de donnée » du menu.
▪ La catégorisation de contenu va influer sur le type de visuel utilisé par défaut
lors du glisser-déposer de l’item sur une page de restitution.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 23


Data Modeling & DAX

➢ Pour définir/contrôler la catégorisation de contenu :


Avant catégorisation des contenus

Après catégorisation des contenus

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 24


Data Modeling & DAX

➢ Pour définir l’ordre de tri par défaut permettant de définir l’ordre d’affichage
des données :
1. Sélectionnez la colonne « Mois » de la table « Calendrier » ;
2. Cliquez sur l’icone « Trier par colonne » et sélectionner la colonne « Mois No ».
▪ Cette option permet de définir l’ordre d’affichage de la colonne libellé « Mois »
en fonction des valeurs de la colonne « Mois No » afin que celle-ci ne suive pas
l’ordre alphabétique.

1
Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 25
Data Modeling & DAX

➢ Pour définir l’ordre de tri par défaut permettant de définir l’ordre d’affichage
des données :

Avant d’avoir défini l’option de tri => Tri alphabétique sur la colonne Mois

Après avoir défini l’option de tri à partir de la colonne Mois No

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 26


Data Modeling & DAX

➢ Pour définir l’agrégation par défaut (ou la non agrégation) des colonnes
numériques :
1. Sélectionnez la colonne « Année » de la table « Calendrier », par défaut étant
une colonne de type numérique, le système défini automatiquement une
agrégation de type « somme » par défaut ;
2. Cliquez sur la liste « total par défaut » et sélectionner l’option d’agrégation
« Ne pas totaliser ».
➢ Par défaut, tout valeur numérique est automatiquement définie avec une
agrégation de type Somme.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 27


Data Modeling & DAX

➢ Pour définir l’agrégation par défaut (ou la non agrégation) des colonnes
numériques :

Avant d’avoir défini l’agrégation par défaut Après avoir défini l’agrégation par défaut

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 28


Data Modeling & DAX

➢ Pour définir des groupes de valeurs :


▪ Les groupe de valeur vont permettre de créer des groupes semblables à des
objets métiers ou items qui combinent plusieurs valeurs :
1. Sélectionnez la colonne qui comporte les données qui serviront à la définition
du groupe : table « Zone », colonne « Zone Code » ;
2. Cliquez sur l’icone « Nouveau Groupe » du menu « Modélisation ».

2
1

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 29


Data Modeling & DAX

➢ Pour définir des groupes de valeurs :


▪ Un assistant pop-up s’ouvre :
1. Sélectionnez dans la liste de valeur de la colonne « Zone Code » les valeur US
et CA ;
2. Cliquez sur le bouton « Grouper » ;
3. Nommez le groupe « Zone code (Groupe America) ».

2
Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 30
Data Modeling & DAX

➢ Pour définir des groupes de valeurs :


▪ Dans le bloc de droite, vous visualisez la composition du groupe nouvellement
créé :
1. Vous pouvez renommer la valeur du groupe tel qu’il apparaitra dans le
reporting en double-cliquant sur son libellé.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 31


Data Modeling & DAX

➢ Pour définir des groupes de valeurs :


▪ Lorsque vous validez les caractéristiques du groupe, un nouvel item apparaît
dans la liste des items portés par la table « Zone » et vous pouvez constater ses
valeurs dans la colonne nouvellement créée.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 32


Data Modeling & DAX

➢ Pour définir des groupes de valeurs :


▪ En fonction de la nature de la colonne sur laquelle vous vous baserez pour
constituer vos groupes, le paramétrage sera quelque peu différent :
1. Dans la table « Order detail » sélectionnez la colonne « Montant HT » et créez
un nouveau groupe.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 33


Data Modeling & DAX

➢ Pour définir des groupes de valeurs :


▪ Comme le type de la colonne « Montant HT » est numérique, l’assistant de
création de groupe propose par défaut de compartimenter le panel de valeurs,
bien que vous puissiez changer l’option et sélectionner une liste de valeur dans
type de groupe :
1. Définissez le nombre de compartiments :
▪ Le nombre de compartiment va répartir les valeurs de la colonne sélectionnée
dans l’un des compartiments.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 34


Data Modeling & DAX

➢ Pour définir des groupes de valeurs :

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 35


Data Modeling & DAX

➢ Pour renommer les items :


▪ La sémantique est une des clés de l’appropriation et de la compréhension du
Data Model par les utilisateurs. Ces termes fonctionnels qui devront à la fois
être :
• Facilement interprétés ;
• Dont le nom s’affichera facilement dans l’interface et respectant des contraintes
ergonomiques.
1. Pour modifier rapidement le nom d’une colonne ou d’une table, double-
cliquez sur l’entête de l’item ou le nom de la table dans le bandeau droit
« Champs ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 36


Data Modeling & DAX

➢ Pour renommer les items :


▪ Cependant, pour être plus précis, il est possible de gérer des propriétés
descriptives depuis la vue modèle :
• Synonymes ;
• Description.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 37


Data Modeling & DAX

➢ A ce stade, le modèle n’est pas encore opérationnel. Pour le finaliser il est


nécessaire de :

▪ Spécifier la table « Date » permettant ainsi d’utiliser les fonctions DAX de


gestion des notions sur la temporalité ;

▪ Constituer les relations entre les tables ;

▪ Créer des hiérarchies permettra de définir un lien hiérarchique entre des items
d’une même date (ex : Année => Mois => Jour ; ou Catégorie => Sous-catégorie
=> Modèle => Produit) ;

▪ Définir les indicateurs, si les agrégations par défaut à partir des colonnes ne
suffisent pas à répondre aux problématiques d’analyse.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 38


Data Modeling & DAX

➢ Pour spécifier la table des Dates :

▪ S’assurer que l’on dispose bien d’une table comportant une série continue de
dates, couvrant l’exhaustivité des dates présentent dans les tables de faits ou
des tables qui seront en relation directement avec cette table ;

▪ Si ce n’est pas le cas, il sera nécessaire de la constituer comme nous l’avons vu


dans la phase alimentation :
• Soit par une requête d’alimentation du modèle ;
• Soit avec la formule DAX « Calendar() ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 39


Data Modeling & DAX

➢ Pour spécifier la table des Dates :


1. Sélectionnez la table « Calendrier » depuis la vue « Données » ;
2. Dans le menu « Modélisation » cliquez sur l’icone « Marquer comme table de
dates ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 40


Data Modeling & DAX

➢ Pour spécifier la table des Dates :


▪ Une fenêtre pop-up s’ouvre pour préciser quelle colonne porte la notion de
date au sein de la table sélectionnée :
1. Sélectionnez alors la colonne appropriée dans la liste déroulante, ici la colonne
« Date », puis validez.
▪ Un message de validation apparaît pour vous indiquer si le contenu de la
colonne répond aux contraintes propres à l’opération. Si c’est le cas, votre table
« Date » est opérationnelle, sinon, vous devrez en analyser le contenu pour
identifier le problème.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 41


Data Modeling & DAX

➢ La création des relations entre les tables :

▪ Les relations entre les tables permettent de filtrer le contenu d’une table en
fonction de la sélection opérée depuis une table tierce qui est reliée à la
première ;

▪ Le filtre est conditionné par le sens de la relation ;

▪ Power BI peut générer automatiquement des relations entre les tables dans la
mesure où des colonnes portent le même nom dans différentes tables. Le sens
qu’il définit dans ce cas est basé sur l’analyse des valeurs contenues dans
chacune des colonnes de ces tables lui permettant d’en déduire les cardinalités ;

▪ Certaines relations peuvent être définies comme inactives dans le Data Model
et activées en fonction de certain cas, selon des spécifications propres à des
indicateurs.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 42


Data Modeling & DAX

➢ La création des relations entre les tables :


▪ La création des relations s’opère depuis la vue « Modèle » ;
▪ Les tables peuvent être déplacées au sein de cette vue, et la perception peut
être réajustée avec une fonction de zoom.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® Zoom 43


Data Modeling & DAX

➢ La création des relations entre les tables :


▪ On constate que Power BI a généré automatiquement une relation entre la
table « Order Detail » et « Promotion » ;
▪ Le sens de cette relation indique que les valeurs de la tables « Order Detail »
sont filtrées en fonction des valeurs sélectionnées dans la table « Promotion ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 44


Data Modeling & DAX

➢ La création des relations entre les tables :


▪ Lorsque l’on double-clique sur cette relation, la fenêtre pop-up de l’assistant de
spécification des propriétés de la relation apparaît.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 45


Data Modeling & DAX

➢ La création des relations entre les tables :


▪ Ces spécifications précisent :

Les colonnes
Les tables permettant
concernées d’assurer la relation;

! ATTENTION !
Les relations
n’autorisent qu’une
seule colonne par
table
Les cardinalités

Le fait que cette Le sens du filtrage


relation soit
active ou non

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 46


Data Modeling & DAX

➢ La création des relations entre les tables :


▪ Pour créer une relation entre deux tables, les colonnes utilisées pour constituer
cette relation doivent impérativement être de même type (date, date-time,
entier num., décimal num., texte) ;

▪ Si la clé métier nécessaire pour assurer la relation nécessite de combiner


plusieurs colonnes, il sera alors nécessaire de modifier l’alimentation de ces
tables en créant une nouvelle colonne dans chacune d’elles, qui concatènera les
valeurs des colonnes nécessaires, dans le même ordre.

Même s’il est possible de


créer ces colonnes dans le
modèle via une colonne
calculée en DAX, nous
conseillons vivement de la
faire dans la phase
d’alimentation pour des
questions de performance

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 47


Data Modeling & DAX
➢ Pour créer une relation entre les tables :
▪ Depuis la vue « Modèle » :
1. Sélectionnez une colonne d’une table ;
2. Restez appuyé sur le bouton gauche de souris et déplacez votre curseur jusqu’à
la colonne souhaitée de la table avec laquelle vous voulez créer la relation.

2
1

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 48


Data Modeling & DAX

➢ Pour créer une relation entre les tables :


▪ Comme il n’y a aucune ambiguïté dans les valeurs, les Id de la table Produit
étant uniques, la relation est créée sans qu’il soit nécessaire de spécifier les
cardinalités et le sens du filtre.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 49


Data Modeling & DAX

➢ Pour créer une relation entre les tables :

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 50


Data Modeling & DAX

➢ La création de hiérarchies :
▪ Les hiérarchies sont natives dans Power BI dans la mesure où le moteur
analytique déduit automatiquement les relations hiérarchiques entre les
différentes informations ;
▪ Il est cependant possible de créer des hiérarchies spécifiques qui seront
utilisées comme un seul item dans les visuels. Par exemple :

Niveaux intermédiaires
Synthèse Détail

Catégorie => Sous-catégorie => Modèle => Produit

▪ C’est d’ailleurs ce que propose Power BI par défaut sur les notions de datation
(Item de type date).

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 51


Data Modeling & DAX

➢ Pour créer une hiérarchie :


1. Sélectionnez un champ de la table dans le bandeau « Champs » de la vue
« Modèle » et faites un clique-droit sur ce champ. Sélectionnez le champ
« Catégorie » de la table « Produit » ;
2. Sélectionner l’item du menu « Créer une hiérarchie ».

1
2

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 52


Data Modeling & DAX

➢ Pour créer une hiérarchie :


▪ Power BI rajoute dans la structure cette table une hiérarchie reconnaissable par
l’icone , basée sur le champ sélectionné :
1. Nommez alors la hiérarchie « Hiérarchie Produit » dans les propriétés ;
2. Puis faites glisser le champ « Sous-catégorie » sur l’entête de la hiérarchie dans
le bandeau « Champs ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 53


Data Modeling & DAX

➢ Pour créer une hiérarchie :


▪ Le champ « Sous-categorie » est alors positionné dans la « Hiérarchie
produits », sous l’item « Categorie » :
1. Faites de même avec les champs « Modèle » puis « Nom produit ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 54


Data Modeling & DAX

➢ Pour créer une hiérarchie :


▪ L’utilisation de la « Hiérarchie produit » dans l’interface de visualisation de
données ramènera automatiquement l’ensemble des champs associés à cette
hiérarchie.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 55


Data Modeling & DAX

➢ La création d’indicateurs ou de colonnes calculées passe nécessairement


par des formules DAX :

▪ Le DAX est une collection de fonctions, d’opérateurs et de constantes qui peut


être utilisé dans une formule, ou une expression, pour calculer et retourner une
ou plusieurs valeurs. En termes simples, DAX vous aide à créer des informations
à partir des données déjà présentes dans votre modèle ;

▪ Le DAX n’est pas obligatoire et le modèle dès à présent constitué est déjà
opérationnel, sans qu’il comporte la moindre formule DAX (sauf pour la table
calendrier), car le moteur analytique a nativement la capacité à agréger les
données. Cependant, pour des calculs plus complexes, le DAX sera
incontournable ;

▪ Le DAX s’approche par endroit des formules Excel ;

▪ Vous ne serez pas expert du DAX à l’issue de ce cours mais vous aurez un bon
aperçu et sachez que de très nombreux exemples sont en ligne.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 56


Data Modeling & DAX

➢ Les catégories de fonction DAX :

▪ Datation (DATE, DATEVALUE, TIME, TODAY, YEAR …) ;


▪ Chaines de caractères (LEN, LEFT, RIGHT, TRIM, UPPER, CONCATENATE …) ;
▪ Mathématiques et Trigonométriques (INT, ROUND, SQRT, SUM, ABS, DIVIDE …) ;
▪ Information (ISNUMBER, LOOKUPVALUE, ISBLANK …) ;
▪ Logiques (AND, NOT, OR, TRUE , FALSE) ;
▪ Conditionnelles (IF, SWITCH) ;
▪ Statistiques/Agrégations (SUM, MIN, MAX, COUNT, COUTA, AVERAGE…) mais
également (SUMX, COUNTX, AVERAGEX…) ;
▪ Filtrage (CALCULATE, FILTER …) ;
▪ Time Intelligence (TOTALYTD, PARALLELPERIOD…) ;
▪ Parents-Enfants (PATH, PATHITEM, PATHITEMREVERSE) ;
▪ Autres (SUMMARIZE, RELATED…).

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 57


Data Modeling & DAX

➢ La création d’indicateurs ou de colonnes calculées passe nécessairement


par des formules DAX :

▪ Power BI utilise « intellisense » pour guider l’utilisateur dans la rédaction des


expressions, tant pour les objets du Data Model que pour les formules.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 58


Data Modeling & DAX

➢ Syntaxe DAX :

▪ C.A. HT = SUM( 'Order Detail'[Montant HT] )

Nom de la colonne référencée entre crochet


Nom de la
mesure Nom de la table entre quottes quand elle
comporte des caractères non standard

Fonction DAX, qui s’ouvre et se ferme


Opérateur
avec des parenthèses
(Ici Somme)

▪ Cette fonction produira la somme de toutes les valeurs de la colonne « Montant


HT » de la table « Order Detail » ;
▪ L’utilisateur pourra alors utiliser la mesure « C.A. HT » comme une information
qui produira ce calcul pour la sélection active, c’est-à-dire en tenant compte des
filtres et en restituant le calcul pour chaque niveau hiérarchique.
Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 59
Data Modeling & DAX

➢ Pour créer une mesure :

1. De manière générale nous aimons bien isoler les formules dans une table
spécifique que nous nommons « Indicateur ». Pour se faire, nous créons une
table vide comme ainsi dans le menu « Modélisation » icone nouvelle table ;

2. Nous la nommons « Indicateurs » via la formule « Indicateurs = » dans la barre


de formule.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 60


Data Modeling & DAX

➢ Pour créer une mesure :

▪ Une fois la table « Indicateurs » constituée, elle apparait dans le modèle et le


bandeau « Champs » avec une colonne par défaut.
1. Masquez cette colonne par un clique-droit sur l’entête de la colonne, item
« Masquer dans la vue rapport » du menu contextuel.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 61


Data Modeling & DAX

➢ Pour créer une mesure :

1. Nous allons maintenant créer la mesure via le menu « Modélisation », icone


« Nouvelle mesure » ;

2. Tapez dans la barre de formule « C.A. HT = SUM('Order Detail'[Montant HT] ) ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 62


Data Modeling & DAX

➢ Pour créer une mesure :

1. Cette première mesure est directement exploitable dans les visuels de


présentation des données.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 63


Data Modeling & DAX
➢ Les principales formules d’agrégation DAX en bloc :

▪ SUM : Somme des valeurs ;


▪ COUNT : Dénombrement des valeurs ;
▪ DISTINCTCOUNT : Dénombrement de valeurs uniques ;
▪ COUNTBLANK : Dénombrement de lignes dont la valeur est nulle ;
▪ DISTINCTCOUNTNOBLANK : Dénombrement de valeurs uniques et non nulles ;
▪ AVG : Moyenne des valeurs ;
▪ MEDIAN : Médiane des valeurs ;
▪ MIN : Valeur numérique minimale ;
▪ MINA : Valeur minimale ;
▪ MAX : Valeur numérique maximale ;
▪ MAXA : Valeur maximale ;
▪ STDEV.P, STDEV.S, VAR.P, VAR.S : Calcul de lois statistiques.

➢ D’autres fonctions sont également disponibles dans la catégorie de formules


« Statistiques » ;
➢ A noter que ces fonctions ne prennent qu’une seule colonne en paramètre, il
sera donc impossible des les utiliser pour une opération telle que
SUM([Quantité] * [Prix unitaire]). Pour ce faire, il faudra utiliser SUMX().
Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 64
Data Modeling & DAX

➢ Syntaxe DAX (suite ) :


▪ Le séparateur de décimale est la virgule : ,
▪ Les valeurs textuelles doivent être placées entre quotte : "Red"
▪ Les sous-parties d’opération sont isolées entre parenthèses ()
▪ Les opérateurs arithmétiques : +, -, *, /, ^ (exposant)
▪ Les opérateurs de comparaison : <, >, =, <=, >=, <> (pour différent de)
▪ Concaténation de chaîne de caractère : & ( ex: [Catégorie] & " - " & [Produit] )
▪ Les opérateurs logiques :
• && pour le ET
• || pour le OU
• IN pour est dans une liste de valeurs [Couleur] IN { "Red", "Blue", "Black" }

▪ Le séparateur d’argument dans les formules à plusieurs arguments est le point-


virgule : ;
▪ La fonction Blank() permet de spécifier une valeur nulle

CALCULATE( SUM('Order Detail'[Montant HT]) ; FILTER(Calendrier ; Calendrier[Année] => YEAR( TODAY() )-1 )) *
1,2

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 65


Data Modeling & DAX

➢ L’une des puissances du DAX est la possibilité de définir au sein des


indicateurs des contextes d’applications, par exemple :

▪ Calculer pour l’année en cours le CA de l’année précédente ;


▪ Calculer pour un produit d’une certaine catégorie, le total de la catégorie.

➢ Toute ces fonctions sont regroupées dans la catégorie « Fonctions Filtre », et


pour celles relatives aux périodes dans la catégorie « Time Intelligence » ;

➢ Elles se combinent généralement avec la fonction CALCULATE(), comme par


exemple :
▪ C.A. HT 2016, 2017 Zone US = CALCULTE ( [C.A. HT] ; FILTER( Zone; Zone[Zone
code] = "US" ) ; FILTER( Calendrier, Calendrier[Année] IN {2016; 2017} )).

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 66


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ L’utilisation d’une fonction Filtre dans une mesure nécessite de l’encapsuler
dans une fonction CALCULATE() :

Budget = SUM(Budget[Montant]) ;
Budget ALLSELECTED Zone = CALCULATE( SUM(Budget[Montant]); ALLSELECTED(Zone) ) ;
Budget ALL Zone = CALCULATE( SUM(Budget[Montant]); ALL (Zone) ).
Calcul du budget pour le
croisement Année / Zone

Calcul du budget par Année


toutes Zones sélectionnées

Calcul du budget par Année


toutes Zones sélectionnées ou
non

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 67


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ Il est possible de rendre des filtres dynamiques ;
▪ Notez qu’il est également possible de réutiliser une mesure dans une
expression ; en effet une expression peut faire référence à une formule ce qui
permet de faire de l’encapsulation ;

▪ Budget MaxSelected Année = CALCULATE( [Budget] ; FILTER( Calendrier;


Calendrier[Année] = MAX(Calendrier[Année] ) ).

MAX(Calendrier[Année] ) =
2016

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 68


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ Si nous remplaçons « = MAX( Calendrier[Année] ) » par « < MAX(
Calendrier[Année] ) », soit toutes les années avant la dernière année ;

▪ Budget infMaxSelected Année = CALCULATE([Budget]; FILTER( Calendrier;


Calendrier[Année] < MAX(Calendrier[Année] ) ).

MAX(Calendrier[Année] )
= 2016

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 69


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ Attention, en fonction du visuel que vous utiliserez, le résultat pourra vous
sembler aléatoire, bien qu’il n’en soit rien. Cela s’explique par le niveau de détail
présenté dans le visuel :
• Pour [Budget MaxSelected Année], toutes les colonnes Années sont peuplées et les
résultats équivalent pour chaque croisement à celui de [Budget] ;
• Pour [infBudget MaxSelected Année], seule la colonne de « total » est peuplée.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 70


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ Pour que les formules fonctionnent pour toutes les cellules, il faut alors les
encapsuler cette formule dans un nouveau scope :
• Budget MaxSelected Année2 = CALCULATE( CALCULATE([Budget]; FILTER( Calendrier;
Calendrier[Année] = MAX(Calendrier[Année] ))); ALLSELECTED(Calendrier) ).

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 71


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ Les fonctions « Filtre » vont donc nous permettre de calculer des pondérations :

Budget % de Année = DIVIDE( [Budget] ; CALCULATE([Budget] ; ALLSELECTED( [Zone] ) ) )

▪ Dans cette formule, on réutilise l’indicateur Budget, que l’on rapporte pour le
même indicateur, sur le total de toutes les Zones (dans la sélection) ;
▪ La fonction arithmétique DIVIDE() propose une division avec la gestion des
valeurs nulles, ce que ne fait pas la division classique avec l’opérateur « / ».

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 72


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ Dans la même logique, le calcul du pourcentage du parent (soit le niveau de
regroupement juste supérieur) se fera de la manière suivante :

C.A. HT % Of Parent = Niveau hiérarchique le plus fin


IF( ISFILTERED( Produit[Sous-Catégorie] );
DIVIDE( [C.A. HT];
CALCULATE( [C.A. HT] ; ALLSELECTED( Produit[Sous-Catégorie] ) ) ) ;
Niveau hiérarchique +1
IF( ISFILTERED( Produit[Catégorie] );
DIVIDE( [C.A. HT] ;
CALCULATE( [C.A. HT] ; ALLSELECTED( Produit[Catégorie] ) ) ) ;
DIVIDE( [C.A. HT] ;
CALCULATE( [C.A. HT] ; ALLSELECTED( Produit )))
)
)
Niveau hiérarchique le plus
haut

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 73


Data Modeling & DAX

➢ Les fonctions Filtre :


▪ Dans la même logique, le calcul du pourcentage du parent (soit le niveau de
regroupement juste supérieur) se fera de la manière suivante (suite) :

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 74


Data Modeling & DAX

➢ Les fonctions Filtre offrent toutes les possibilités pour travailler


et ajuster les contextes (lien) :

• ADDMISSINGITEMS ; • RELATED ;
• ALL ; • RELATEDTABLE ;
• ALLEXCEPT ; • SELECTEDVALUE ;
• ALLNOBLANKROW ; • SUBSTITUTEWITHINDEX ;
• ALLSELECTED ; • USERELATIONSHIP ;
• CALCULATE ; • VALUES.
• CALCULATETABLE ;
• CROSSFILTER function ;
• DISTINCT ;
• EARLIER ;
• EARLIEST ;
• FILTER ;
• FILTERS ;
• HASONEFILTER ;
• HASONEVALUE ;
• ISCROSSFILTERED ;
• ISFILTERED ;
• KEEPFILTERS ;
Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 75
Data Modeling & DAX

➢ Les fonctions conditionnelles :

▪ Les deux fonctions conditionnelles les plus utilisées sont :

• IF(Condition; Valeur si vrai, Valeur si faux) ;

• SWITCH( Expression ;
Valeur 1; Résultat 1;
Valeur 2 ; Résultat 2;
Valeur … ; Résultat … ;
Résultat Sinon).

▪ La fonction SWITCH est l’équivalent du CASE en SQL ;


▪ Les constantes associées sont True ou False.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 76


Data Modeling & DAX

➢ Les fonctions time intelligente :

▪ Il est fréquent de devoir calculer des valeurs basées sur des périodes :

• Cumul à date : total cumulatif depuis le début une date ;


• Total d’une une période précédente ;
• Total d’une période glissante ;
• Total d’une période parallèle.

▪ Les fonctions de la catégorie Time Intelligence sont faites pour cela ;

▪ Elles nécessitent d’avoir spécifié dans le Data Model une table Date (table
définie comme table Date) pour que le moteur puisse les utiliser ;

▪ La liste de ces fonctions est disponible dans ce lien.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 77


Data Modeling & DAX

➢ Les fonctions time intelligente :


▪ Les cumuls de périodes :
• TOTALYTD cumul depuis le début de l’année ;
• TOTALQTD cumul depuis le début du trimestre ;
• TOTALMTD cumul depuis le début du mois.

▪ L’indicateur C.A. HT YtD = TOTALYTD( [C.A. HT] ; Calendrier[Date] ) renvoie la


valeur cumulée depuis le début de l’année, pour chaque mois de l’année ;
▪ Cette fonction gère également des calendriers fiscaux différents d’une année
calendaire.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 78


Data Modeling & DAX
➢ Les fonctions time intelligente :
▪ Les périodes précédentes :
• SAMEPERIODELASTYEAR() renvoie la valeur pour la même période sur l’année
précédente, à la même granularité (jours, mois… année) :
‐ C.A. HT N-1 (SPLY) = CALCULATE( [C.A. HT] ; SAMEPERIODLASTYEAR( Calendrier[Date] ) )

• PARALLELPERIOD() renvoie la valeur pour la même période sur l’année précédente


en jouant avec la granularité et le nombre de décalage :
‐ C.A. HT N-1 (PL12M) = CALCULATE( [C.A. HT]; PARALLELPERIOD( Calendrier[Date]; -12;
MONTH ) ) ;
‐ C.A. HT N-1 (PL1N) = CALCULATE( [C.A. HT]; PARALLELPERIOD( Calendrier[Date]; -1; YEAR ) ).

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 79


Data Modeling & DAX

➢ Les fonctions time intelligente :


▪ On peut naturellement encapsuler des fonctions de type de la catégorie time
intelligence :

• C.A. HT YtD N-1 = CALCULATE( [C.A. HT YtD]; SAMEPERIODLASTYEAR( Calendrier[Date] ) )

= TOTALYTD( [C.A. HT] ; Calendrier[Date] )

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 80


Data Modeling & DAX

➢ Les fonctions time intelligente présentent un panel assez complet :

• CLOSINGBALANCEMONTH ; • OPENINGBALANCEMONTH ;
• CLOSINGBALANCEQUARTER ; • OPENINGBALANCEQUARTER ;
• CLOSINGBALANCEYEAR ; • OPENINGBALANCEYEAR ;
• DATEADD : Ajouter une période ; • PARALLELPERIOD : Période parallèle ;
• DATESBETWEEN : Entre des dates ; • PREVIOUSDAY : Jour précédent ;
• DATESINPERIOD : Date dans une période ; • PREVIOUSMONTH : Mois précédent ;
• DATESMTD ; • PREVIOUSQUARTER : Trimestre précédent ;
• DATESQTD ; • PREVIOUSYEAR : Année précédente ;
• DATESYTD ; • SAMEPERIODLASTYEAR ;
• ENDOFMONTH : Fin du mois ; • STARTOFMONTH : Début du mois ;
• ENDOFQUARTER : Fin du trimestre ; • STARTOFQUARTER : Début du trimestre ;
• ENDOFYEAR : Fin de l’année ; • STARTOFYEAR : début de l’année ;
• FIRSTDATE ; • TOTALMTD : Cumul Mois ;
• FIRSTNONBLANK ; • TOTALQTD : Cumul Trimestre ;
• LASTDATE ; • TOTALYTD : : Cumul Année.
• LASTNONBLANKNEXTDAY ;
• NEXTMONTH : Mois suivant ;
• NEXTQUARTER : Trimestre suivant ;
• NEXTYEAR : Année suivante ;

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 81


Data Modeling & DAX

➢ Les fonctions time intelligente ne doivent pas être confondues avec les
fonctions de manipulation de valeurs de type Date ou Time (lien) :

• CALENDAR : Génération d’une série ; • WEEKDAY : Extraction n° du jour


• CALENDARAUTO ; de la semaine ;
• DATE : Constitution d’une date ; • WEEKNUM : Extraction du n° de la
• DATEDIFF : Différence entre deux dates ; semaine ;
• DATEVALUE ; • YEAR : Extraction de l’année ;
• DAY : Extraction jour ; • YEARFRAC.
• EDATE ;
• EOMONTH : Fin du mois ;
• HOUR : Extraction des heures ;
• MINUTE : Extraction des minutes ;
• MONTH : Extraction du mois ;
• NOW : Heure actuelle ;
• SECOND : Extraction des seconds ;
• TIME ;
• TIMEVALUE ;
• TODAY : Date du jour ;

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 82


Data Modeling & DAX

➢ Les principales formules d’itération en ligne, telles les fonctions d’agrégation


suffixées par un X :
▪ SUMX : Somme des valeurs (permet de faire un SOMMEPROD ) ;
▪ COUNTX : Dénombrement des valeurs ;
▪ AVGX : Moyenne des valeurs ;
▪ MEDIANX : Médiane des valeurs ;
▪ MINX, MAXX : Valeur numérique minimale et valeur numérique maximale ;
▪ MINAX, MAXAX : Valeur minimale et valeur maximale ;
▪ VARX.P, VARX.S, STDDEVX.P, STDDEVX.S : Calcul de lois statistiques ;
▪ RANKX : Classement.

➢ Contrairement aux fonctions d’agrégation, elles permettent de spécifier un


contexte et une expression, mais sont par nature moins performante.

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 83


Data Modeling & DAX

➢ Les principales formules d’itération en ligne, telles les fonctions d’agrégation


suffixées par un X :
▪ La mesure suivante va calculer le prix moyen par produit :
Prix Moyen HT (AVGX on SUMMURIZE) = AVERAGEX(
SUMMARIZE('Order Detail’ ; 'Order Detail'[Produit ID] ;
"VolumeProduit" ; SUM('Order Detail'[Quantité]) ;
"TotalMontantHT" ; SUM('Order Detail'[Montant HT]));
DIVIDE([TotalMontantHT] ; [VolumeProduit]) )

▪ Pour cela elle passe par une table calculée en mémoire qui agrège les données
par produit pour en connaitre le volume et le CA HT ;
▪ Dans un second temps elle calcule pour chaque ligne le rapport Volume / CAHT ;
▪ Enfin elle renvoie la moyenne de ce rapport ;

▪ Elle est différente de la formule suivante :


Prix Moyen HT (AVGX) = AVERAGEX('Order Detail’;
DIVIDE('Order Detail'[Montant HT];'Order Detail'[Quantité]))

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 84


Data Modeling & DAX

➢ Les principales formules d’itération en ligne, telles les fonctions d’agrégation


suffixées par un X :

AVGX

AVGX on SUMMURIZE

Formation Microsoft Power BI - Tous droits réservés – Finelog-Biseum® 85

Vous aimerez peut-être aussi