Lab 05 | Créer des calculs DAX avancés dans Power BI Desktop
Sales Analysis.pbix
635.5 kB
Snippets.txt
175 B
Histoire de laboratoire
Dans cet atelier, vous allez créer des mesures avec des expressions DAX impliquant une manipulation du contexte de filtre.
Dans cet atelier, vous allez apprendre à :
Utilisez la fonction CALCULATE() pour manipuler le contexte du filtre
Utiliser les fonctions Time Intelligence
Ce laboratoire devrait prendre environ 45 minutes.
Utiliser le contexte de filtre
Important : Si vous reprenez le labo précédent (et que vous l’avez terminé avec succès), n’effectuez pas cette tâche ; Au lieu de cela, continuez à partir de la tâche suivante.
Ouvrez Power BI Desktop.
Pour ouvrir le fichier Power BI Desktop de démarrage, sélectionnez Ouvrir > Parcourir cet appareil.
Dans la fenêtre Ouvrir, accédez au dossier D :\Allfiles\Labs\05-create-dax-calculations-in-power-bi-desktop-advanced\Starter et ouvrez le fichier Sales Analysis.pbix.
Remarque : À ce stade, Power BI vous demandera de vous connecter si vous ne l’avez pas déjà fait. Vous pouvez vous connecter ou sélectionner Annuler et poursuivre le labo.
Fermez toutes les fenêtres d’information qui peuvent s’ouvrir.
Remarquez le message d’avertissement sous le ruban.
Ce message vous avertit que les requêtes n’ont pas été appliquées pour se charger en tant que tables de modèle. Vous appliquerez les requêtes plus tard dans cet atelier.
Pour ignorer le message d’avertissement, à droite du message d’avertissement, sélectionnez X.
Pour créer une copie du fichier, accédez à Fichier > Enregistrer sous et enregistrez dans le dossier D :\Allfiles\MySolution.
Si vous êtes invité à appliquer les modifications, sélectionnez Appliquer plus tard.
Créer un visuel matriciel
Dans cette tâche, vous allez créer un visuel matriciel pour prendre en charge le test de vos nouvelles mesures.
Dans Power BI Desktop, en mode Rapport, créez une page de rapport.
À la page 3, ajoutez un visuel matriciel.
Redimensionnez le visuel de matrice pour remplir toute la page.
Pour configurer les champs visuels de la matrice, dans le volet Données, faites glisser le bouton Région | Regions, et déposez-la dans le visuel.
Les laboratoires utilisent une notation abrégée pour référencer un champ ou une hiérarchie. Cela ressemblera à ceci : Région | Régions. Dans cet exemple, Region est le nom de la table et Regions est le nom de la hiérarchie.
Ajoutez également les ventes | Domaine de vente.
Pour développer l’ensemble de la hiérarchie, en haut à droite du visuel de matrice, sélectionnez deux fois l’icône de double flèche bifurquée.
Vous vous souvenez peut-être que la hiérarchie Régions comporte les niveaux Groupe, Pays et Région.
Pour mettre en forme le visuel, dans le volet Visualisations, sélectionnez le volet Format.
Dans la zone Rechercher, entrez Disposition.
Sélectionner Tabulaire dans Disposition.
Vérifiez que le visuel de matrice comporte désormais quatre en-têtes de colonne.
Chez Adventure Works, les régions de vente sont organisées en groupes, pays et régions. Tous les pays, à l’exception des États-Unis, n’ont qu’une seule région, qui porte le nom du pays. Comme les États-Unis sont un territoire de vente si vaste, il est divisé en cinq régions de vente.
Vous allez créer plusieurs mesures dans cet exercice, puis les tester en les ajoutant au visuel de la matrice.
Manipuler le contexte du filtre
Dans cette tâche, vous allez créer plusieurs mesures avec des expressions DAX qui utilisent la fonction CALCULATE() pour manipuler le contexte du filtre.
Ajoutez une mesure à la table Sales, en fonction de l’expression suivante :
Pour plus de commodité, toutes les définitions DAX de cet atelier peuvent être copiées à partir du fichier D :\Allfiles\Labs\05-create-dax-calculations-in-power-bi-desktop-advanced\Assets\Snippets.txt.
Ventes Toutes Régions = CALCULATE(SUM(Sales[Sales]), REMOVEFILTERS(Region))
La fonction CALCULATE() est une fonction puissante utilisée pour manipuler le contexte du filtre. Le premier argument prend une expression ou une mesure (une mesure est juste une expression nommée). Les arguments suivants permettent de modifier le contexte du filtre.
La fonction REMOVEFILTERS() supprime les filtres actifs. Il peut prendre soit aucun argument, soit une table, une colonne ou plusieurs colonnes comme argument.
Dans cette formule, la mesure évalue la somme de la colonne Sales dans un contexte de filtre modifié, ce qui supprime tous les filtres appliqués aux colonnes de la table Région.
Ajoutez la mesure Ventes Toutes régions au visuel de matrice.
Notez que la mesure Ventes toutes régions calcule le total de toutes les ventes régionales pour chaque région, pays (sous-total) et groupe (sous-total).
La nouvelle mesure n’a pas encore donné de résultat utile. Lorsque les ventes d’un groupe, d’un pays ou d’une région sont divisées par cette valeur, cela produit un ratio utile appelé « pourcentage du total général ».
Dans le volet Données, assurez-vous que la mesure Ventes toutes régions est sélectionnée (lorsqu’elle est sélectionnée, elle aura un arrière-plan gris foncé), puis dans la barre de formule, remplacez le nom et la formule de la mesure par la formule suivante :
Conseil : Pour remplacer la formule existante, copiez d’abord l’extrait. Ensuite, sélectionnez dans la barre de formule et appuyez sur Ctrl+A pour sélectionner tout le texte. Appuyez ensuite sur Ctrl+V pour coller l’extrait de code afin d’écraser le texte sélectionné. Appuyez ensuite sur Entrée.
% Ventes Toutes régions =
DIVIDE(
SUM(Sales[Sales]),
CALCULATE(
SUM(Sales[Sales]),
REMOVEFILTERS(Region)
)
)
La mesure a été renommée pour refléter fidèlement la formule mise à jour. La fonction DIVIDE() divise la mesure Sales (non modifiée par le contexte de filtre) par la mesure Sales dans un contexte modifié, ce qui supprime tous les filtres appliqués à la table Region.
Comme vous pouvez le constater dans le visuel matrice, la mesure a été renommée et une autre valeur apparaît maintenant pour chaque groupe, pays et région.
Mettez en forme la mesure % Ventes Toutes régions sous forme de pourcentage avec deux décimales.
Dans le visuel de matrice, passez en revue les valeurs de mesure % Ventes Toutes régions.
Ajoutez une autre mesure à la table Ventes, en fonction de l’expression suivante et mettez-la en forme sous forme de pourcentage :
% Ventes Pays =
DIVIDE(
SUM(Sales[Sales]),
CALCULATE(
SUM(Sales[Sales]),
REMOVEFILTERS(Region[Region])
)
)
Notez que la formule de mesure % Ventes Pays diffère légèrement de la formule de mesure % Ventes Toutes régions.
La différence est que le dénominateur modifie le contexte de filtre en supprimant les filtres de la colonne Région de la table Région, et non de toutes les colonnes de la table Région. Cela signifie que tous les filtres appliqués aux colonnes du groupe ou du pays sont conservés. Il obtiendra un résultat qui représente les ventes en pourcentage du pays.
Ajoutez la mesure % Ventes Pays au visuel de matrice.
Notez que seules les régions des États-Unis produisent une valeur qui n’est pas de 100 %.
Vous vous souvenez peut-être que seuls les États-Unis ont plusieurs régions. Tous les autres pays comprennent une seule région, ce qui explique pourquoi ils sont tous à 100 %.
Pour améliorer la lisibilité de cette mesure dans le visuel, remplacez la mesure % Ventes Pays par cette formule améliorée.
% Ventes Pays =
IF(
ISINSCOPE(Region[Region]),
DIVIDE(
SUM(Sales[Sales]),
CALCULATE(
SUM(Sales[Sales]),
REMOVEFILTERS(Region[Region])
)
)
)
La fonction IF() utilise la fonction ISINSCOPE() pour tester si la colonne de région est le niveau d’une hiérarchie de niveaux. Lorsque la valeur est true, la fonction DIVIDE() est évaluée. Lorsque la valeur est false, une valeur vide est renvoyée, car la colonne region n’est pas dans l’étendue.
Notez que la mesure % Ventes Pays ne renvoie désormais une valeur que lorsqu’une région est dans l’étendue.
Ajoutez une autre mesure à la table Ventes, en fonction de l’expression suivante et mettez-la en forme sous forme de pourcentage :
% Ventes Groupe =
DIVIDE(
SUM(Sales[Sales]),
CALCULATE(
SUM(Sales[Sales]),
REMOVEFILTERS(
Region[Region],
Region[Country]
)
)
)
Pour réaliser des ventes en pourcentage du groupe, deux filtres peuvent être appliqués pour supprimer efficacement les filtres sur deux colonnes.
Ajoutez la mesure % Ventes Groupe au visuel de matrice.
Pour améliorer la lisibilité de cette mesure dans le visuel, remplacez la mesure % Ventes Groupe par cette formule améliorée.
Sales % Group =
IF(
ISINSCOPE(Region[Region])
|| ISINSCOPE(Region[Country]),
DIVIDE(
SUM(Sales[Sales]),
CALCULATE(
SUM(Sales[Sales]),
REMOVEFILTERS(
Region[Region],
Region[Country]
)
)
)
)
Notez que la mesure % Ventes Groupe ne renvoie désormais une valeur que lorsqu’une région ou un pays est dans l’étendue.
Dans la vue Modèle, placez les trois nouvelles mesures dans un dossier d’affichage nommé Ratios.
Enregistrez le fichier Power BI Desktop.
Les mesures ajoutées à la table Sales ont modifié le contexte de filtre pour obtenir une navigation hiérarchique. Notez que le modèle pour réaliser le calcul d’un sous-total nécessite de supprimer certaines colonnes du contexte de filtre, et pour arriver à un total général, toutes les colonnes doivent être supprimées.
Travailler avec Time Intelligence
Dans cet exercice, vous allez créer une mesure des ventes depuis le début de l’année et une mesure de la croissance des ventes depuis le début de l’année.
Créer une mesure depuis le début de l’année
Dans cette tâche, vous allez créer une mesure des ventes depuis le début de l’année.
En mode Rapport, à la page 2, remarquez le visuel de matrice qui affiche diverses mesures avec des années et des mois regroupés sur les lignes.
Ajoutez une mesure à la table Sales, basée sur l’expression suivante et mise en forme à zéro décimale :
Sales YTD =
TOTALYTD(SUM(Sales[Sales]), 'Date'[Date], "30/06")
La fonction TOTALYTD() évalue une expression (dans ce cas, la somme de la colonne Sales) sur une colonne de date donnée. La colonne de date doit appartenir à une table de dates marquée comme table de dates, comme cela a été fait dans le laboratoire Créer des calculs DAX dans Power BI Desktop.
La fonction peut également prendre un troisième argument facultatif représentant la dernière date d’une année. L’absence de cette date signifie que le 31 décembre est la dernière date de l’année. Pour Adventure Works, juin est le dernier mois de leur année, et donc « 30/06 » est utilisé.
Ajoutez le champ Sales et la mesure Sales YTD au visuel de matrice.
Remarquez l’accumulation des valeurs de vente au cours de l’année.
La fonction TOTALYTD() effectue la manipulation du filtre, en particulier la manipulation du filtre temporel. Par exemple, pour calculer les ventes depuis le début de l’année pour septembre 2017 (le troisième mois de l’exercice), tous les filtres du tableau Date sont supprimés et remplacés par un nouveau filtre de dates commençant au début de l’année (1er juillet 2017) et s’étendant jusqu’à la dernière date de la période de date contextuelle (30 septembre, 2017).
De nombreuses fonctions Time Intelligence sont disponibles dans DAX pour prendre en charge les manipulations courantes du filtre temporel.
Créer une mesure de croissance annuelle
Dans cette tâche, vous allez créer une mesure de croissance des ventes d’une année sur l’autre.
Ajoutez une autre mesure à la table Sales, en fonction de l’expression suivante :
Sales YoY Growth =
VAR SalesPriorYear =
CALCULATE(
SUM(Sales[Sales]),
PARALLELPERIOD(
'Date'[Date],
-12,
MONTH
)
)
RETURN
SalesPriorYear
La mesure Sales YoY Growth utilise une variable. Les variables vous aident à simplifier la formule et sont plus efficaces si vous utilisez la logique plusieurs fois dans une formule.
Les variables sont déclarées avec un nom unique et l’expression de mesure doit ensuite être générée après le mot-clé RETURN. Contrairement à d’autres variables de langage de codage, les variables DAX ne peuvent être utilisées que dans la formule unique.
La variable SalesPriorYear se voit attribuer une expression qui calcule la somme de la colonne Sales dans un contexte modifié qui utilise la fonction PARALLELPERIOD() pour reculer de 12 mois par rapport à chaque date dans un contexte de filtre.
Ajoutez la mesure Sales YoY Growth au visuel de la matrice.
Notez que la nouvelle mesure renvoie une valeur vide pour les 12 premiers mois (car aucune vente n’a été enregistrée avant l’exercice 2017).
Notez que la valeur de la mesure Sales YoY Growth pour juillet 2018 est la valeur des ventes pour juillet 2017.
Maintenant que la « partie difficile » de la formule a été testée, vous pouvez remplacer la mesure par la formule finale qui calcule le résultat de croissance.
Pour terminer la mesure, remplacez la mesure Sales YoY Growth (Croissance des ventes en glissement annuel) par cette formule, sous forme de pourcentage à deux décimales :
Sales YoY Growth =
VAR SalesPriorYear =
CALCULATE(
SUM(Sales[Sales]),
PARALLELPERIOD(
'Date'[Date],
-12,
MONTH
)
)
RETURN
DIVIDE(
(SUM(Sales[Sales]) - SalesPriorYear),
SalesPriorYear
)
Dans la formule, dans la clause RETURN, notez que la variable est référencée deux fois.
Vérifiez que la croissance en glissement annuel de Juillet 2018 est bien de 392,83 %.
La mesure de la croissance en glissement annuel identifie une augmentation de près de 400 % (ou 4x) des ventes au cours de la même période de l’année précédente.
Dans la vue Modèle, placez les deux nouvelles mesures dans un dossier d’affichage nommé Time Intelligence.
Finir
Dans cette tâche, vous allez terminer le labo.
Pour nettoyer la solution prête pour le développement de rapports, en bas à gauche, cliquez avec le bouton droit sur l’onglet Page 2, puis sélectionnez Supprimer la page. Lorsque vous êtes invité à supprimer la page, sélectionnez Supprimer.
Supprimez également la page 3.
Sur la page restante, pour effacer la page, sélectionnez le visuel de table, puis appuyez sur la touche Suppr.
Enregistrez le fichier Power BI Desktop.
Si vous avez l’intention de démarrer le labo suivant, laissez Power BI Desktop ouvert.
Vous allez créer un rapport basé sur le modèle de données dans le laboratoire Concevoir un rapport dans Power BI Desktop.