Power BI

Top 10 des Formules DAX Indispensables pour Power BI

SETMO CONSULTING

Le langage DAX (Data Analysis Expressions) est le cœur de Power BI. Maîtriser ces 10 formules vous permettra de résoudre 80% de vos besoins d’analyse.

1. CALCULATE - La Fonction Roi

La fonction la plus puissante de DAX. Elle modifie le contexte de filtre.

Ventes 2024 =
CALCULATE(
    SUM('Ventes'[Montant]),
    'Calendrier'[Année] = 2024
)

Cas d’usage : Calculer les ventes pour une période spécifique, une région donnée, ou n’importe quel filtre.

Exemple Avancé : Ventes Région MENA

Ventes MENA =
CALCULATE(
    SUM('Ventes'[Montant]),
    'Géographie'[Région] IN {"Maroc", "Algérie", "Tunisie", "Egypte"}
)

2. SUMX - Agrégation Ligne par Ligne

SUMX itère sur chaque ligne d’une table et somme le résultat.

Marge Totale =
SUMX(
    'Ventes',
    'Ventes'[Quantité] * ('Ventes'[Prix Vente] - 'Ventes'[Prix Achat])
)

Différence avec SUM :

  • SUM : Somme une colonne existante
  • SUMX : Calcule d’abord, somme ensuite

Exemple : Chiffre d’Affaires

CA Total =
SUMX(
    'Commandes',
    'Commandes'[Quantité] * RELATED('Produits'[Prix Unitaire])
)

3. FILTER - Filtrage Avancé

FILTER retourne une table filtrée selon une condition.

Ventes Gros Clients =
CALCULATE(
    SUM('Ventes'[Montant]),
    FILTER('Clients', 'Clients'[Catégorie] = "Grand Compte")
)

Exemple : Top 10 Produits

Ventes Top 10 =
CALCULATE(
    SUM('Ventes'[Montant]),
    TOPN(
        10,
        'Produits',
        'Produits'[Ventes Totales],
        DESC
    )
)

4. ALL / ALLEXCEPT - Ignorer les Filtres

ALL supprime tous les filtres d’une table ou colonne.

% du Total =
DIVIDE(
    SUM('Ventes'[Montant]),
    CALCULATE(
        SUM('Ventes'[Montant]),
        ALL('Ventes')
    )
)

ALLEXCEPT : Supprime tous les filtres SAUF ceux spécifiés

% par Région =
DIVIDE(
    SUM('Ventes'[Montant]),
    CALCULATE(
        SUM('Ventes'[Montant]),
        ALLEXCEPT('Ventes', 'Ventes'[Région])
    )
)

5. Time Intelligence - TOTALYTD

Calculs cumulés année en cours (Year-to-Date).

Ventes YTD =
TOTALYTD(
    SUM('Ventes'[Montant]),
    'Calendrier'[Date]
)

Variantes Utiles

Quarter-to-Date :

Ventes QTD = TOTALQTD(SUM('Ventes'[Montant]), 'Calendrier'[Date])

Month-to-Date :

Ventes MTD = TOTALMTD(SUM('Ventes'[Montant]), 'Calendrier'[Date])

6. SAMEPERIODLASTYEAR - Comparaison N-1

Compare avec la même période l’année dernière.

Ventes N-1 =
CALCULATE(
    SUM('Ventes'[Montant]),
    SAMEPERIODLASTYEAR('Calendrier'[Date])
)

Évolution vs N-1

Evolution vs N-1 =
VAR VentesActuelles = SUM('Ventes'[Montant])
VAR VentesN1 = [Ventes N-1]
RETURN
DIVIDE(
    VentesActuelles - VentesN1,
    VentesN1
)

7. RANKX - Classements Dynamiques

Classez vos produits, vendeurs, ou régions.

Rang Vendeur =
RANKX(
    ALL('Vendeurs'[Nom]),
    [Ventes Totales],
    ,
    DESC,
    DENSE
)

Types de classement :

  • DENSE : 1, 2, 3, 3, 4 (pas de saut)
  • SKIP : 1, 2, 3, 3, 5 (saute si égalité)

8. IF / SWITCH - Logique Conditionnelle

IF Simple :

Catégorie Vente =
IF(
    SUM('Ventes'[Montant]) > 10000,
    "Gros Client",
    "Client Standard"
)

SWITCH (meilleur pour multiple conditions) :

Segment Client =
SWITCH(
    TRUE(),
    [Ventes Totales] > 100000, "Platinum",
    [Ventes Totales] > 50000, "Gold",
    [Ventes Totales] > 10000, "Silver",
    "Bronze"
)

9. DIVIDE - Division Sécurisée

Évite les erreurs de division par zéro.

Taux de Conversion =
DIVIDE(
    [Ventes Réalisées],
    [Opportunités Totales],
    0  -- Valeur si division par zéro
)

Pourquoi pas ”/” ?

  • ”/” génère une erreur si division par zéro
  • DIVIDE retourne la valeur alternative (ou BLANK)

Accéder aux données des tables liées.

RELATED (One-to-Many) :

Prix Produit =
RELATED('Produits'[Prix Unitaire])

RELATEDTABLE (Many-to-One) :

Nombre Ventes =
COUNTROWS(RELATEDTABLE('Ventes'))

Exemple Complet : Analyse Client

Dernière Commande =
CALCULATE(
    MAX('Ventes'[Date]),
    RELATEDTABLE('Ventes')
)

Jours Depuis Dernière Commande =
DATEDIFF(
    [Dernière Commande],
    TODAY(),
    DAY
)

Statut Client =
SWITCH(
    TRUE(),
    [Jours Depuis Dernière Commande] > 365, "Inactif",
    [Jours Depuis Dernière Commande] > 90, "À Risque",
    "Actif"
)

Bonnes Pratiques DAX

1. Utilisez des Variables (VAR)

Mauvais :

Marge % =
DIVIDE(
    SUM('Ventes'[Montant]) - SUM('Ventes'[Coût]),
    SUM('Ventes'[Montant])
)

Bon :

Marge % =
VAR Ventes = SUM('Ventes'[Montant])
VAR Coûts = SUM('Ventes'[Coût])
RETURN
DIVIDE(Ventes - Coûts, Ventes)

Avantages : Plus lisible, plus performant, plus facile à déboguer.

2. Documentez vos Mesures

Ajoutez des descriptions dans Power BI :

Description : Calcule le % de marge par rapport au CA
Auteur : Ahmed B.
Dernière MAJ : 2024-11-05

3. Organisez vos Mesures

Créez une table “Mesures” pour regrouper toutes vos mesures DAX.

4. Formatez Correctement

Ventes par Client =
VAR ClientActuel = SELECTEDVALUE('Clients'[ID])
VAR VentesClient =
    CALCULATE(
        SUM('Ventes'[Montant]),
        'Clients'[ID] = ClientActuel
    )
RETURN
    VentesClient

Indentation claire = maintenance facile !

Patterns DAX Essentiels

Pattern 1 : ABC (Analyze, Benchmark, Compare)

-- Analyze
Ventes Actuelles = SUM('Ventes'[Montant])

-- Benchmark
Ventes Moyennes Marché = AVERAGE('Benchmark'[Ventes])

-- Compare
vs Benchmark =
DIVIDE(
    [Ventes Actuelles],
    [Ventes Moyennes Marché]
) - 1

Pattern 2 : Running Total

Cumul Ventes =
CALCULATE(
    SUM('Ventes'[Montant]),
    FILTER(
        ALL('Calendrier'),
        'Calendrier'[Date] <= MAX('Calendrier'[Date])
    )
)

Pattern 3 : Moyenne Mobile (3 mois)

Moyenne Mobile 3M =
AVERAGEX(
    DATESINPERIOD(
        'Calendrier'[Date],
        LASTDATE('Calendrier'[Date]),
        -3,
        MONTH
    ),
    [Ventes Totales]
)

Debugger vos Formules DAX

Technique 1 : DAX Studio

  • Téléchargez DAX Studio (gratuit)
  • Connectez-vous à votre modèle Power BI
  • Testez vos formules et voyez les plans de requête

Technique 2 : ISINSCOPE

Vérifiez le contexte actuel :

Debug Contexte =
IF(
    ISINSCOPE('Ventes'[Produit]),
    "Niveau Produit",
    "Niveau Agrégé"
)

Technique 3 : Variables de Debug

Test Mesure =
VAR Debug1 = SUM('Ventes'[Montant])
VAR Debug2 = [Ventes N-1]
VAR Debug3 = Debug1 - Debug2
RETURN
"V1: " & Debug1 & " | V2: " & Debug2 & " | Diff: " & Debug3

Conclusion

Ces 10 formules couvrent 80% des besoins quotidiens en Power BI. La clé est de les pratiquer sur vos propres données.

Prochaines Étapes

  1. Testez chaque formule avec vos données
  2. Combinez-les pour créer des mesures complexes
  3. Documentez vos créations
  4. Partagez avec votre équipe

Besoin d’aide pour maîtriser DAX ? Notre formation Power BI DAX Avancé vous rendra expert en 2 jours.


À propos : SETMO CONSULTING forme les professionnels marocains à Power BI et DAX depuis 2018. Plus de 200 personnes formées à Casablanca et au Maroc.

Tags

#DAX #Power BI #Formules #Tutorial

Partager cet article

Articles Connexes