DAX (Data Analysis Expressions) est le langage de formule de Power BI. Maîtriser les bonnes formules fait la différence entre un rapport basique et un véritable outil d'aide à la décision. Voici les 15 formules indispensables.

Les fondamentaux

SUM : additionne les valeurs d'une colonne. Exemple : Total Ventes = SUM(Ventes[Montant]). Simple mais essentiel.

COUNT / COUNTA : compte les lignes. COUNT pour les nombres, COUNTA pour toutes les valeurs non vides. DISTINCTCOUNT : compte les valeurs uniques, par exemple le nombre de clients distincts.

AVERAGE : calcule la moyenne. MIN / MAX : récupère les extremums. Ces 6 fonctions couvrent 60% des besoins de base.

CALCULATE : la formule la plus puissante

DAX — CALCULATE Power BI / Analysis Services
-- Ventes filtrées sur une région
Ventes_Region =
CALCULATE(
    SUM(Sales[Amount]),
    Geography[Region] = "Casablanca"
)

-- Ventes YTD (Year-to-Date)
Ventes_YTD =
CALCULATE(
    SUM(Sales[Amount]),
    DATESYTD(Calendar[Date])
)

CALCULATE est la fonction la plus importante de DAX. Elle évalue une expression dans un contexte de filtre modifié. Exemple : Ventes Paris = CALCULATE(SUM(Ventes[Montant]), Magasins[Ville] = "Paris").

CALCULATE permet de créer des mesures dynamiques qui répondent aux filtres de la page tout en ajoutant des conditions supplémentaires. C'est la clé pour créer des comparaisons (vs objectif, vs année précédente, vs moyenne) au sein d'un même visuel.

Les fonctions de filtre

DAX — FILTER & ALL Power BI / Analysis Services
-- % du total (ALL supprime les filtres)
Part_du_Total =
DIVIDE(
    SUM(Sales[Amount]),
    CALCULATE(
        SUM(Sales[Amount]),
        ALL(Sales)
    )
)

-- Produits avec CA > 10 000
Top_Produits =
FILTER(
    ALL(Products),
    CALCULATE(SUM(Sales[Amount])) > 10000
)

FILTER : retourne une table filtrée selon une condition. Utile dans CALCULATE pour des filtres complexes. ALL : supprime tous les filtres d'une table ou colonne. Indispensable pour calculer des pourcentages du total. Exemple : % du Total = DIVIDE(SUM(Ventes[Montant]), CALCULATE(SUM(Ventes[Montant]), ALL(Ventes))).

ALLEXCEPT : supprime tous les filtres sauf ceux spécifiés. VALUES : retourne les valeurs distinctes d'une colonne dans le contexte actuel. SELECTEDVALUE : retourne la valeur sélectionnée si elle est unique, sinon une valeur par défaut.

Time Intelligence

DAX — Time Intelligence Power BI / Analysis Services
-- Ventes du même mois l'année dernière
Ventes_SPLY =
CALCULATE(
    SUM(Sales[Amount]),
    SAMEPERIODLASTYEAR(Calendar[Date])
)

-- Croissance vs année précédente
Croissance_YoY =
DIVIDE(
    [Ventes_Total] - [Ventes_SPLY],
    [Ventes_SPLY]
)

DATEADD : décale une période dans le temps. Exemple : Ventes M-1 = CALCULATE(SUM(Ventes[Montant]), DATEADD(Calendrier[Date], -1, MONTH)). SAMEPERIODLASTYEAR : compare avec la même période l'année précédente.

TOTALYTD : calcule le cumul depuis le début de l'année. DATESYTD : retourne les dates depuis le 1er janvier. Ces fonctions nécessitent une table calendrier complète et continue pour fonctionner correctement.

Les itérateurs

DAX — Itérateurs (X functions) Power BI / Analysis Services
-- CA = Quantité × Prix (ligne par ligne)
CA_Total =
SUMX(
    Sales,
    Sales[Quantity] * Sales[Unit_Price]
)

-- Marge moyenne pondérée
Marge_Moyenne =
AVERAGEX(
    Products,
    Products[Prix_Vente] - Products[Prix_Revient]
)

SUMX : parcourt une table ligne par ligne et additionne le résultat d'une expression. Exemple : CA = SUMX(Lignes, Lignes[Quantité] * Lignes[PrixUnitaire]). Contrairement à SUM qui ne peut additionner qu'une seule colonne, SUMX peut évaluer des expressions complexes.

AVERAGEX et MAXX fonctionnent sur le même principe. Attention : les itérateurs sont plus lents que les agrégations simples sur de grandes tables.

Formules avancées pour aller plus loin

RANKX : classe les valeurs. Rang = RANKX(ALL(Produits), [Total Ventes], , DESC). SWITCH : remplace les IF imbriqués. DIVIDE : division sécurisée qui retourne un résultat alternatif en cas de division par zéro (au lieu d'une erreur). HASONEVALUE : vérifie si un filtre ne retourne qu'une seule valeur, utile pour les titres dynamiques.

Pour aller plus loin dans la maîtrise de DAX, découvrez notre formation Power BI Avancé qui couvre en profondeur les contextes d'évaluation et les patterns DAX avancés.

📋 Récapitulatif — Les fonctions DAX essentielles
CALCULATE Modifier le contexte de filtre
SUMX Itérer et sommer ligne par ligne
FILTER Retourner un sous-ensemble de table
ALL Ignorer les filtres actifs
SAMEPERIODLASTYEAR Comparaison N-1
DATESYTD Cumul depuis début d'année
DIVIDE Division sécurisée (évite les erreurs)
RELATED Accéder à une table liée (lookup)