Terminez d'abord "Construire un modèle de données fiable" pour débloquer cette leçon.Aller à la leçon précédente

Indicateurs métier et approche des mesures DAX

Les rapports métier deviennent plus fiables lorsque les indicateurs clés sont définis une seule fois sous forme de mesures DAX réutilisables. Une mesure est évaluée lorsqu’un visuel, un segment, un filtre ou une interaction avec le rapport demande un résultat. La même mesure peut donc renvoyer une valeur différente pour chaque mois, catégorie de produits, région ou segment de clientèle, sans qu’il soit nécessaire de dupliquer le calcul pour chaque visuel.

Cette leçon se concentre sur des mesures pratiques pour les rapports de ventes : chiffre d’affaires, coûts, bénéfice brut, marge, performance cumulée depuis le début de l’année, comparaison avec l’année précédente et évolution d’une année sur l’autre. Les exemples supposent un schéma en étoile comprenant une table de faits Sales, une table Date et des dimensions Product et Customer liées. La table Sales contient les colonnes numériques nommées SalesAmount, CostAmount, Quantity et OrderDate.

Une mesure n’est pas la même chose qu’une colonne calculée. Une colonne calculée est évaluée ligne par ligne lors de l’actualisation du modèle et stocke une valeur dans la table. Une mesure est évaluée au moment de l’exécution de la requête, dans le contexte de filtre actuel. Pour les tableaux de bord métier interactifs, les mesures constituent généralement le choix approprié pour les agrégations et les KPI, car elles réagissent aux sélections de l’utilisateur.

Schéma en étoile montrant les tables de dimensions Date, Product et Customer filtrant la table de faits Sales centrale, avec un visuel de rapport recevant le contexte de filtre des segments

Mesures KPI essentielles

Commencez par des mesures de base simples. Ces mesures définissent le vocabulaire métier du modèle et facilitent la lecture et la maintenance des calculs ultérieurs. SUM agrège une colonne numérique, tandis que COUNTROWS compte les lignes qui restent visibles dans le contexte de filtre actuel.

sql
Total Sales = SUM ( Sales[SalesAmount] )
Total Cost = SUM ( Sales[CostAmount] )
Total Quantity = SUM ( Sales[Quantity] )
Order Count = DISTINCTCOUNT ( Sales[OrderID] )

Pour un visuel de type carte sans filtres supplémentaires, Total Sales renvoie le montant total de la colonne SalesAmount. Lorsque la même mesure est placée dans une matrice par Product[Category], Power BI l’évalue séparément pour chaque catégorie. La mesure n’a pas besoin d’une version spécifique à chaque catégorie, car le filtre de catégorie modifie automatiquement le contexte.

Le bénéfice brut et la marge doivent reposer sur des mesures réutilisables plutôt que sur la répétition d’expressions faisant directement référence aux colonnes brutes. DIVIDE est préférable à l’opérateur de division pour les indicateurs métier, car il permet de définir le comportement à adopter lorsque le dénominateur est égal à zéro ou vide.

sql
Gross Profit = [Total Sales] - [Total Cost]
Gross Margin % = DIVIDE ( [Gross Profit], [Total Sales], 0 )

La sortie de Gross Profit est un montant, tandis que Gross Margin % est un ratio. Formatez le premier en devise ou dans la devise de reporting appropriée, et le second en pourcentage dans le modèle. Ne multipliez pas la mesure de marge par 100 lorsque le format est un pourcentage ; Power BI gère la conversion pour l'affichage.

Analyse basée sur le temps

L'intelligence temporelle dépend d'un modèle de dates valide. Créez une table Date dédiée contenant une ligne pour chaque date de la période de reporting, reliez Date[Date] à Sales[OrderDate] et marquez la table comme table de dates dans Power BI. La colonne Date doit contenir des dates uniques et continues. Un visuel regroupé par mois doit utiliser un champ de la table Date, tel que Date[Year] et Date[Month], plutôt qu'une colonne de mois textuelle de la table Sales.

Les mesures suivantes calculent les ventes cumulées et le résultat comparable de l'année précédente. DATESYTD renvoie les dates depuis le début de l'année en cours jusqu'à la dernière date du contexte actuel. SAMEPERIODLASTYEAR décale d'un an vers le passé la période de dates actuellement visible.

sql
Sales YTD =
CALCULATE (
[Total Sales],
DATESYTD ( 'Date'[Date] )
)
Sales Previous Year =
CALCULATE (
[Total Sales],
SAMEPERIODLASTYEAR ( 'Date'[Date] )
)

Par exemple, si une ligne de matrice représente mars 2025, Sales YTD renvoie les ventes du 1er janvier au 31 mars 2025, à condition que le contexte actuel représente cette période. Sales Previous Year renvoie les ventes de la période visible correspondante en 2024. Si un rapport utilise un exercice fiscal, l'argument de fin d'exercice peut être nécessaire dans DATESYTD, et la table Date doit inclure les attributs fiscaux pertinents.

Une erreur fréquente consiste à utiliser une colonne de date qui n'est pas reliée à la table de faits ou qui n'est pas continue. Une autre consiste à placer Sales[OrderDate] sur l'axe tout en s'attendant à ce qu'un calcul basé sur la table Date se comporte de manière cohérente. Lorsque l'intelligence temporelle renvoie des valeurs vides inattendues ou des totaux répétés, vérifiez d'abord la relation, la configuration de la table Date et les champs utilisés dans le visuel.

Comparaisons, objectifs et classement

Une fois que les mesures de base et les mesures temporelles fonctionnent, créez des mesures de comparaison qui mettent en évidence l'évolution de l'activité. La variance YoY est une différence de montant. Le pourcentage YoY est une variation relative et nécessite une règle de gestion du dénominateur. L'exemple renvoie zéro lorsque la valeur de l'année précédente n'est pas disponible ou est égale à zéro, ce qui convient à un tableau de bord simple, mais ce choix doit être documenté, car certaines organisations préfèrent une valeur vide dans cette situation.

sql
Sales YoY Variance =
[Total Sales] - [Sales Previous Year]
Sales YoY % =
DIVIDE ( [Sales YoY Variance], [Sales Previous Year], 0 )

Une mesure de comparaison doit être interprétée en tenant compte de son niveau de granularité. Un résultat YoY mensuel compare le mois en cours au même mois de l'année précédente. Un résultat par catégorie compare la catégorie dans le filtre de date actuel à cette même catégorie l'année précédente. Si le rapport mélange des périodes actuelles partielles avec des périodes précédentes complètes, la comparaison peut être trompeuse et doit être clairement signalée.

Le classement dépend également du contexte. RANKX évalue une expression sur une table et peut classer les catégories en fonction de leurs ventes. ALLSELECTED conserve les filtres sélectionnés intentionnellement par l'utilisateur du rapport tout en supprimant la ligne de catégorie actuelle de l'ensemble de comparaison. Cela permet de classer une catégorie parmi les catégories actuellement incluses par les segments.

sql
Category Sales Rank =
RANKX (
ALLSELECTED ( Product[Category] ),
[Total Sales],
,
DESC,
DENSE
)

Pour le reporting des objectifs, une table d'objectifs doit normalement être modélisée séparément, avec une relation claire ou une stratégie de recherche délibérée. Évitez d'intégrer de nombreux objectifs codés en dur dans une mesure. Une table d'objectifs déconnectée peut être utile lorsque l'objectif sélectionné est contrôlé par un segment, mais la mesure doit alors récupérer explicitement la valeur sélectionnée et définir le comportement lorsqu'aucun objectif n'est sélectionné.

Construire et valider un rapport

Placez Total Sales, Gross Profit, Gross Margin %, Sales YTD, Sales Previous Year et Sales YoY % dans une matrice par Date[Year] et Date[Month]. Ajoutez Product[Category] dans une deuxième matrice et incluez Total Sales, Sales YTD et Category Sales Rank. Utilisez un graphique en courbes pour les ventes mensuelles et une carte pour la marge actuellement filtrée. Cette mise en page vérifie que les mesures fonctionnent à la fois au niveau temporel et au niveau des catégories.

La validation doit s'appuyer sur de petits exemples calculés indépendamment. Filtrez le rapport sur un mois et une catégorie, puis comparez Total Sales à une somme directe des lignes SalesAmount correspondantes dans les données sources. Pour Gross Profit, vérifiez que les ventes moins le coût correspondent au résultat de la mesure. Pour Sales YTD, sélectionnez un mois proche de la fin d'une année et confirmez que la valeur inclut tous les mois précédents de cette année, et pas uniquement le mois sélectionné.

Utilisez un segment pour l'année, la catégorie et le segment de clientèle. Vérifiez si chaque visuel se met à jour comme prévu. Si une carte change, mais pas un graphique, examinez les filtres au niveau du visuel et les relations. Si toutes les catégories affichent le même total, la relation avec la catégorie est peut-être absente, inactive ou fondée sur des clés incompatibles. Si une mesure ignore un segment, vérifiez si la table concernée est reliée à la table Sales et si un calcul supprime intentionnellement ce filtre.

Pour les modèles destinés à la production, définissez explicitement les types et les formats de données, masquez les colonnes techniques qui ne doivent pas être utilisées par les auteurs de rapports et donnez aux mesures des descriptions adaptées au métier. Séparez les mesures de base des mesures de présentation. Cela facilite les tests et réduit le risque qu'une décision de formatage ou qu'une formule répétée produise des KPI incohérents d'une page à l'autre.

Erreurs courantes et synthèse

Une erreur courante consiste à créer une colonne calculée pour une métrique qui devrait réagir aux filtres. Une colonne telle que la marge au niveau de la ligne peut être utile pour l'analyse détaillée, mais sa somme ou sa moyenne peut ne pas correspondre à la définition métier de la marge. Pour une marge au niveau du rapport, calculez le profit total divisé par les ventes totales avec DIVIDE.

Une autre erreur consiste à utiliser un champ de date non qualifié ou incorrect dans les expressions d'intelligence temporelle. Vérifiez que la table Date contient des dates uniques, que la relation utilise la date prévue et que la table est marquée comme table de dates. Vérifiez également si le rapport utilise OrderDate, ShipDate ou une autre date métier ; le rôle de date sélectionné modifie la signification de chaque KPI temporel.

La gestion des zéros et des valeurs vides doit être délibérée. Renvoyer zéro peut donner l'impression qu'un tableau de bord est complet, mais cela peut masquer l'absence de période précédente. Renvoyer BLANK peut éviter des libellés trompeurs et est souvent préférable pour les graphiques. Aucune de ces options n'est universellement correcte ; choisissez selon les exigences du reporting et documentez le comportement dans la description de la mesure.

Le workflow pratique consiste à définir d'abord les mesures de base, à composer les KPI métier à partir de ces mesures, à n'ajouter l'intelligence temporelle qu'après avoir validé le modèle de dates, puis à tester chaque résultat avec des filtres réalistes. Les mesures réutilisables rendent un tableau de bord cohérent, car chaque visuel utilise la même logique de calcul tout en restant réactif à son propre contexte de filtre.

Entraînement

Point de contrôle de la leçon

Révisez la leçon et recevez des conseils sur votre travail.

0/1
Répondu · 0/1