AccueilBlogDAX avancé Power BI
Guide recrutement data

DAX avancé Power BI : les formules qu'on teste en entretien

CALCULATE, REMOVEFILTERS, VAR, time intelligence — ces formules DAX séparent un vrai Data Analyst d'un utilisateur Power BI basique. Voici ce qu'on évalue vraiment.

Data Builder·Juin 2025·10 min de lecture·Data Analyst
Sommaire
  1. CALCULATE et contexte de filtre
  2. Contrôle du contexte
  3. VAR/RETURN
  4. Time intelligence
  5. Fonctions d'itération
  6. Performance DAX
  7. Grille par niveau

Le DAX est le vrai filtre en entretien Data Analyst Power BI. Pas les visuels, pas Power Query — le DAX. Un candidat qui maîtrise CALCULATE et le contexte de filtre a travaillé sur des projets réels. Un candidat qui ne connaît que SUM et COUNT n'a fait que du drag-and-drop.

1CALCULATE : le cœur du DAX

Question discriminante

Quelle est la différence entre un contexte de ligne et un contexte de filtre ? Dans quel cas CALCULATE transforme-t-il l'un en l'autre ?

CALCULATE est la fonction la plus importante de DAX. Elle permet de modifier le contexte de filtre d'une mesure — c'est-à-dire de calculer un résultat dans un contexte différent de celui du visuel.

-- Ventes uniquement pour la catégorie Technologie Tech_Ventes = CALCULATE( SUM(Ventes[Montant]), Ventes[Categorie] = "Technologie" )

Signal d'alerte : un candidat qui ne sait pas expliquer la transition de contexte n'a pas encore travaillé sur des modèles complexes.

2Contrôle du contexte : ALL, REMOVEFILTERS, KEEPFILTERS

Question discriminante

Quelle est la différence entre ALL() et REMOVEFILTERS() ? Donnez un cas où l'un est préférable à l'autre.

C'est la question qui sépare les profils confirmés des juniors. Les deux fonctions suppriment des filtres, mais leur comportement diffère dans certains contextes.

-- ALL supprime tous les filtres sur la table ou la colonne Part_de_marche = DIVIDE( [Total Ventes], CALCULATE([Total Ventes], ALL(Produits)) ) -- REMOVEFILTERS est plus explicite et préférable pour la lisibilité Part_de_marche_v2 = DIVIDE( [Total Ventes], CALCULATE([Total Ventes], REMOVEFILTERS(Produits)) ) -- KEEPFILTERS : respecte les filtres du visuel tout en ajoutant des conditions Ventes_Chaussures = CALCULATE( [Total Ventes], KEEPFILTERS(Produits[Categorie] = "Chaussures") )

3VAR/RETURN : lisibilité et performance

Question discriminante

Pourquoi VAR améliore-t-il les performances DAX et pas seulement la lisibilité ?

VAR/RETURN est devenu incontournable en 2024-2025. Un profil qui ne l'utilise pas systématiquement écrit du DAX sous-optimal.

-- Sans VAR : SUM(Ventes[Montant]) est calculé deux fois Croissance_YoY = (SUM(Ventes[Montant]) - CALCULATE(SUM(Ventes[Montant]), DATEADD(Dates[Date], -1, YEAR))) / CALCULATE(SUM(Ventes[Montant]), DATEADD(Dates[Date], -1, YEAR)) -- Avec VAR : calculé une seule fois, plus lisible et plus rapide Croissance_YoY = VAR VentesActuelles = SUM(Ventes[Montant]) VAR VentesPrecedentes = CALCULATE(SUM(Ventes[Montant]), DATEADD(Dates[Date], -1, YEAR)) RETURN DIVIDE(VentesActuelles - VentesPrecedentes, VentesPrecedentes)

Bonne pratique : tout calcul qui réutilise une expression plus d'une fois devrait utiliser VAR. C'est le signal d'un profil qui pense à la maintenabilité.

4Time intelligence : l'incontournable en entretien

Question discriminante

Quelle est la différence entre DATEADD et SAMEPERIODLASTYEAR ? Dans quel cas l'un est-il plus adapté ?

La time intelligence est testée dans presque tous les entretiens Data Analyst. Les recruteurs veulent s'assurer que le candidat peut répondre à des questions business courantes : évolution annuelle, cumul progressif, comparaison de périodes.

-- Ventes de l'année précédente (même période) Ventes_N1 = CALCULATE([Total Ventes], SAMEPERIODLASTYEAR(Dates[Date])) -- Flexible : déplacer de n périodes (mois, trimestres, années) Ventes_3_mois_avant = CALCULATE([Total Ventes], DATEADD(Dates[Date], -3, MONTH)) -- Cumul progressif depuis le début de l'année (YTD) Ventes_YTD = TOTALYTD([Total Ventes], Dates[Date]) -- Cumul depuis le début du mois Ventes_MTD = TOTALMTD([Total Ventes], Dates[Date])

Prérequis indispensable : toutes les fonctions de time intelligence nécessitent une table de dates correctement marquée dans Power BI. Un candidat qui l'ignore n'a pas déployé de rapport en production.

5Fonctions d'itération : SUMX, AVERAGEX, RANKX

Question discriminante

Quand utilisez-vous SUMX plutôt que SUM ? Donnez un exemple concret.

-- SUM : additionne une colonne existante Total_Ventes = SUM(Ventes[Montant]) -- SUMX : itère ligne par ligne avant d'agréger Marge_Totale = SUMX( Produits, Produits[Prix_Vente] * Produits[Quantite] - Produits[Cout] ) -- RANKX : classement dynamique Rang_Commercial = RANKX( ALL(Commerciaux[Nom]), [Total Ventes], , DESC, DENSE ) -- SWITCH(TRUE()) : remplace les IF imbriqués Segment_Client = SWITCH( TRUE(), [Total Ventes] > 50000, "Gold", [Total Ventes] > 10000, "Silver", "Bronze" )

6Performance DAX : ce qu'on teste au niveau Senior

Question discriminante

Comment diagnostiquez-vous une mesure DAX lente ? Quels outils utilisez-vous ?

Au niveau Senior et Lead, la capacité à optimiser le DAX est un différenciateur clé. Un bon profil cite DAX Studio sans hésiter.

Signal GO Senior : le candidat mentionne spontanément DAX Studio, parle de cardinalité et de compression VertiPaq. Un profil qui n'a jamais ouvert DAX Studio n'a pas optimisé de modèle réel.

7Grille par niveau

NiveauMaîtrise DAX attendueSignal GONO-GO
JuniorSUM, COUNT, CALCULATE simple, mesures de baseComprend la différence mesure vs colonne calculée, utilise DIVIDENe connaît pas CALCULATE, confond mesure et colonne calculée
ConfirméCALCULATE avancé, VAR/RETURN, time intelligence, SUMX/RANKXExplique la transition de contexte, utilise VAR systématiquement, maîtrise SAMEPERIODLASTYEARNe sait pas pourquoi VAR améliore les performances
SeniorOptimisation, DAX Studio, patterns avancés (semi-additive, security)Cite DAX Studio, parle de cardinalité, a implémenté du RLS dynamiqueN'a jamais utilisé DAX Studio, ne connaît pas les mesures semi-additives
LeadArchitecture du modèle sémantique, standards d'équipe, revues DAXA défini des conventions de nommage DAX pour une équipe, a migré vers Fabric/SSASNe peut pas expliquer ses choix d'architecture sémantique

Vous recrutez un Data Analyst Power BI ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.