fbpx

DAX Power BI : Le guide pour maîtriser le langage analytique de Microsoft

Topics covered
Subscribe to our newsletter

Dans l’univers de la Business Intelligence, créer des dashboards visuels attrayants est une excellente chose, mais la véritable valeur d’un rapportside dans la pertinence de ses indicateurs. Si vous vous contentez d’importer vos tables et de faire de simples glisser-déposer, vous passerez à côté de la puissance analytique de Microsoft Power BI. Pour concevoir des indicateurs de performance complexes, calculer des dynamiques temporelles ou segmenter vos clients à la volée, vous devez impérativement maîtriser le DAX (Data Analysis Expressions).

Le DAX est le langage de programmation et de requêtage natif partagé par Power BI, Excel Power Pivot et Analysis Services. Composé d’un ensemble de fonctions, d’opérateurs et de constantes, sa logique est proche des formules que l’on applique pour filtrer sur Excel, mais transposée à un modèle de données relationnel à haute performance.

Chez DATAROCKSTARS, nous enseignons que la maîtrise du DAX est la ligne de partage qui sépare les utilisateurs débutants des véritables experts en architecture de données et Business Intelligence.

1. Colonne calculée vs Mesure : Le grand dilemme du DAX

C’est l’erreur classique de tout débutant en Power BI. Le langage DAX permet de créer deux types d’éléments de calcul aux comportements techniques totalement opposés sur votre ordinateur ou votre serveur Cloud :

Les Colonnes Calculées (Calculated Columns)

Une colonne calculée s’exécute ligne par ligne (contexte de ligne) au moment du chargement ou du rafraîchissement des données. Le résultat est stocké de manière permanente dans la mémoire RAM de votre modèle.

  • Quand l’utiliser : Uniquement si vous avez besoin de cette nouvelle variable pour créer des segments de filtres visuels (ex: créer des tranches d’âges “20-30 ans”, “30-40 ans”).
  • Inconvénient : Elle alourdit la taille de votre fichier .pbix et sature la mémoire si votre table contient des millions de lignes.

Les Mesures (Measures)

Une mesure est une formule volatile. Elle ne consomme aucun espace de stockage sur le disque dur car elle est calculée de manière dynamique à la volée, uniquement lorsque l’utilisateur regarde un graphique ou modifie un filtre à l’écran.

  • Quand l’utiliser : Pour 95 % de vos calculs et agrégations (sommes, moyennes, ratios, pourcentages).
  • Avantage : Elle s’adapte instantanément au niveau de granularité sélectionné par l’utilisateur.

2. Le cœur du DAX : Comprendre le Contexte de Filtre (Filter Context)

Pour ne jamais faire d’erreurs dans vos résultats, vous devez comprendre la notion de Contexte de Filtre. Contrairement à Excel où une formule pointe vers une cellule fixe (comme B2), en DAX, une mesure s’exécute au milieu d’un environnement dynamique.

Le contexte de filtre correspond à l’ensemble des filtres appliqués à une mesure à un instant précis. Il est défini par :

  1. Les segments (Slicers) cochés par l’utilisateur sur la page.
  2. Les lignes ou colonnes du tableau visuel dans lequel la mesure est affichée.
  3. Les filtres de pages ou de rapports appliqués en tâche de fond.

3. La fonction reine du DAX : CALCULATE

Si vous ne deviez retenir qu’une seule fonction en DAX, ce serait CALCULATE. C’est le moteur absolu du langage. Elle est la seule fonction capable de modifier, de surcharger ou de réinitialiser le contexte de filtre d’un rapport pour réaliser un calcul spécifique.

Sa syntaxe de base est la suivante :

$$\text{CALCULATE}(\text{Expression}; \text{Filtre1}; \text{Filtre2}; \dots)$$

Exemple concret d’utilisation :

Imaginons que vous souhaitiez calculer le montant total des ventes uniquement pour la région Europe, quelle que soit la ligne sur laquelle clique l’utilisateur :

Extrait de code

Ventes_Europe = CALCULATE(
    SUM(Ventes[Montant]); 
    Clients[Continent] = "Europe"
)

Associer CALCULATE avec la fonction ALL

Si vous souhaitez calculer la part en pourcentage d’un produit par rapport au chiffre d’affaires total de l’entreprise, vous devez forcer Power BI à ignorer le filtre du produit en cours. On utilise pour cela la fonction ALL :

Extrait de code

Pourcentage_CA = 
DIVIDE(
    SUM(Ventes[Montant]);
    CALCULATE(SUM(Ventes[Montant]); ALL(Produits))
)

La fonction DIVIDE est hautement recommandée en DAX car elle gère automatiquement les erreurs de division par zéro sans faire planter votre dashboard.

4. L’Intelligence Temporelle (Time Intelligence) : Analyser l’évolution

L’un des plus grands points forts du langage DAX est sa capacité à manipuler le temps de manière native. Grâce aux fonctions d’intelligence temporelle, vous pouvez comparer vos performances actuelles avec des périodes passées en une seule ligne de code, à condition de posséder une table de dates propre au sein de votre modèle.

Calculer le Cumul Annuel (YTD – Year-To-Date)

Pour afficher la progression cumulative de votre chiffre d’affaires depuis le 1er janvier de l’année en cours :

Extrait de code

CA_Cumule_YTD = TOTALYTD(SUM(Ventes[Montant]); 'Calendrier'[Date])

Comparer avec l’année précédente (N-1)

Pour analyser si votre entreprise progresse par rapport à la même période de l’année précédente (idéal pour neutraliser les effets de saisonnalité) :

Extrait de code

CA_Annee_Precedente = CALCULATE(
    SUM(Ventes[Montant]); 
    SAMEPERIODLASTYEAR('Calendrier'[Date])
)

5. Bonnes pratiques de codage pour optimiser les performances

Lorsque vos bases de données migrent à l’échelle du Big Data, un code DAX mal écrit peut faire ramer vos rapports ou afficher des messages d’erreur de mémoire saturée. Pour maintenir une expérience fluide, appliquez ces règles de Rockstar :

  • Utilisez des variables (VAR / RETURN) : Déclarer des variables intermédiaires au sein de vos mesures évite à Power BI de recalculer plusieurs fois la même expression au cours d’une requête, boostant la vitesse d’exécution de manière spectaculaire.
  • Ne filtrez pas des tables entières : Dans vos clauses CALCULATE, préférez filtrer une colonne spécifique (Clients[Pays] = "France") plutôt que de passer par la fonction FILTER(Table; ...) qui oblige le moteur à scanner l’intégralité de la table ligne par ligne.
  • Déportez le nettoyage en amont : Si vous devez effectuer des transformations de données lourdes (fusions de chaînes, typages de formats), réalisez-les en amont dans Power Query (en langage M) ou directement à l’aide de requêtes de filtrage chirurgicales via la clause SQL WHERE avant d’importer la donnée dans Power BI.

6. Pourquoi vous former à la Business Intelligence avec DATAROCKSTARS

Power BI est l’outil leader incontournable du marché de la Data Visualisation en entreprise. Savoir concevoir un modèle de données en étoile robuste et maîtriser la logique algorithmique du langage DAX fait partie des compétences les plus recherchées et les mieux valorisées par les recruteurs du secteur technologique.

Chez DATAROCKSTARS, nos parcours immersifs et intensifs vous apprennent à dompter l’état de l’art de l’ingénierie et de l’analyse de données :

  • Vous souhaitez devenir le garant des indicateurs de performance, maîtriser le DAX sur le bout des doigts et piloter la stratégie business à l’aide de rapports d’élite ? Rejoignez notre Bootcamp Data Analyst & AI.
  • Vous préférez automatiser l’alimentation, le transport et l’ingestion de ces données à l’échelle des plateformes Cloud industrielles (Azure, AWS) ? Découvrez notre Bootcamp Data Engineer & AIOps.
  • Vous souhaitez intégrer ces données au service de modèles de prédiction avancés de Machine Learning ? Explorez notre Bootcamp Data Scientist & AI Engineer.

Prêt à faire passer vos capacités d’analyse à la vitesse supérieure et à propulser votre trajectoire professionnelle ? Souhaitez-vous découvrir comment nos programmes sur-mesure peuvent s’adapter à vos objectifs ? Contactez dès aujourd’hui les conseillers de DATAROCKSTARS pour valider votre plan de formation personnalisé.

Merci pour votre lecture ! Si vous souhaitez découvrir nos prochains articles autour de la Data et de l’IA, vous pouvez nous suivre sur FacebookLinkedIn et Twitter pour être notifié dès la publication d’un nouvel article !

Share this article