4.4Optimisation & performance (Performance Analyzer)
L'essentiel en 30 secondes
- On ne devine pas une lenteur, on la chronomètre : l'Analyseur de performances (Affichage) mesure chaque visuel — requête DAX vs affichage.
- Requête DAX lente = modèle ou mesure à revoir ; affichage lent = visuel trop chargé.
- L'ordre des remèdes : modèle d'abord (étoile, colonnes inutiles supprimées dans Power Query, cardinalités réduites, date/heure auto désactivée), mesures ensuite, visuels enfin (moins par page).
Mini-cas filé — Zineb traque la lenteur de son rapport
Zineb, contrôleuse de gestion dans une PME agroalimentaire à Alger, reçoit la remarque : son rapport de ventes est « lent ». Au lieu de deviner, elle applique la méthode. Elle ouvre Affichage → Analyseur de performances, démarre l'enregistrement et actualise les visuels : un histogramme explose le chrono. Elle lit le détail : le temps est en « Requête DAX » — le coupable est le modèle, pas le visuel. Elle retourne dans Power Query supprimer les colonnes que le rapport n'utilise pas, réduit les cardinalités et décoche « Date/heure automatique » dans Options. Elle re-chronomètre : le gain est net. Son réflexe est né : chronométrer, diagnostiquer, alléger — modèle, mesures, puis visuels.
Cas autonome de cette section : il revient dans le cours, le schéma, le script et le défi 48h de la section 4.4.
1. Chronométrer d'abord
Un rapport lent est un rapport mort : au-delà de quelques secondes, les utilisateurs décrochent. Le diagnostic commence par l'Analyseur de performances (Affichage → Analyseur de performances) : on démarre l'enregistrement, on actualise les visuels, et chaque visuel affiche son temps détaillé. Deux postes se lisent : la requête DAX (le coût du modèle et des mesures) et l'affichage (le rendu du visuel). Zineb ne devine plus : elle lit le classement des temps.
2. Lire les deux postes
L'interprétation est simple : requête DAX lente = le modèle ou la mesure est à revoir ; affichage lent = le visuel est trop chargé (trop de points, trop de catégories). On copie même la requête (« Copier la requête ») pour une analyse fine dans DAX Studio. Zineb identifie ainsi son histogramme fautif et sait où agir avant de toucher au hasard.
3. La hiérarchie des remèdes
Les remèdes suivent un ordre éprouvé : le modèle d'abord (étoile, colonnes inutiles supprimées dans Power Query, cardinalités réduites, date/heure auto désactivée), les mesures ensuite (variables VAR, filtres ciblés), les visuels enfin (moins par page — chaque visuel = une requête). Cette check-list résout la grande majorité des lenteurs réelles, et l'on re-chronomètre pour mesurer le gain. Zineb l'applique dans cet ordre, sans sauter d'étape.
🔎 Exemple concret — 🔎 Exemple concret — La check-list d'hygiène
La méthode de Zineb, dans l'ordre :
1. Analyseur de performances → Démarrer → Actualiser les visuels
2. Le plus lent : temps en « Requête DAX » ou en « Affichage » ?
3. Power Query : supprimer les colonnes NON utilisées (chacune pèse)
4. Options : décocher « Date/heure automatique »
5. Re-chronométrer : mesurer le gain.
Lecture : on agit d'abord sur le modèle, à la source (Power Query), pas sur le visuel.
Leçon : re-chronométrer fait partie de la méthode — on mesure le gain.
Vocabulaire de la section
- Analyseur de performances
- Affichage → Analyseur de performances : démarrer l'enregistrement, actualiser les visuels — chaque visuel affiche son temps détaillé.
Exemple simple : Zineb y chronomètre son rapport de ventes.
Ce que ce n'est pas : deviner la lenteur à l'œil.
Réflexe : lenteur → chronométrer d'abord.
- Requête DAX vs Affichage
- Les deux postes chronométrés : requête lente = modèle/mesure à revoir ; affichage lent = visuel trop chargé.
Exemple simple : Zineb voit que son temps est en requête DAX.
Ce que ce n'est pas : un seul chiffre sans détail.
Réflexe : requête → modèle/mesure ; affichage → visuel.
- Hygiène du modèle
- Supprimer les colonnes inutiles (dans Power Query, pas après), réduire les cardinalités, désactiver la date/heure auto.
Exemple simple : Zineb coupe les colonnes non utilisées à la source.
Ce que ce n'est pas : tout importer « au cas où ».
Réflexe : chaque colonne importée pèse.
- Copier la requête
- Chaque mesure lente se copie (Copier la requête) pour analyse dans DAX Studio — l'outil gratuit des praticiens.
Exemple simple : Zineb copie la requête du visuel fautif.
Ce que ce n'est pas : réécrire la mesure au hasard.
Réflexe : analyse fine → DAX Studio.
- Trop de visuels
- Chaque visuel = une requête : une page à 15 visuels envoie 15 requêtes à chaque clic. La sobriété est une optimisation.
Exemple simple : Zineb allège sa page surchargée.
Ce que ce n'est pas : empiler les visuels pour « faire riche ».
Réflexe : moins de visuels = moins de requêtes.
En pratique — En pratique — Chronométrer, diagnostiquer, alléger
- Affichage → Analyseur de performances → Démarrer l'enregistrement → Actualiser les visuels : lisez le classement des temps.
- Analysez le plus lent : temps en « Requête DAX » (revoir la mesure/le modèle) ou en « Affichage » (simplifier le visuel) ?
- Hygiène : dans Power Query, supprimez les colonnes que le rapport n'utilise PAS ; vérifiez dans Options que « Date/heure automatique » est décochée.
- Re-chronométrez après optimisation : la mesure du gain fait partie de la méthode.
Script pas-à-pas — optimiser comme Zineb (7 min)
1) Affichage → Analyseur de performances → Démarrer l'enregistrement, puis Actualiser les visuels : chaque visuel affiche son temps. 2) Repérez le plus lent et regardez le poste dominant : « Requête DAX » (modèle/mesure) ou « Affichage » (visuel trop chargé). 3) Retournez dans Power Query et supprimez les colonnes que le rapport n'utilise pas. 4) Options → décochez « Date/heure automatique ». 5) Réduisez le nombre de visuels de la page, puis re-chronométrez pour mesurer le gain.
Si le coupable est en requête DAX, copiez la requête du visuel (Copier la requête) pour l'analyser dans DAX Studio.
Modèle copier-coller — ma check-list de performance
1. Chronométrer : Affichage → Analyseur de performances → Démarrer → Actualiser
2. Lire : Requête DAX (modèle/mesure) ou Affichage (visuel) ?
3. Modèle d'abord : Power Query → supprimer les colonnes inutiles ;
réduire les cardinalités ; Options → décocher « Date/heure automatique »
4. Mesures ensuite : variables VAR, filtres ciblés
5. Visuels enfin : moins par page (chaque visuel = une requête)
6. Re-chronométrer : mesurer le gain.
Chronométrer
Zineb lance l'Analyseur de performances avant toute optimisation : le coupable est désigné.
Modèle d'abord
Zineb coupe les colonnes inutiles dans Power Query et réduit les cardinalités.
Date/heure auto
Zineb décoche la date/heure automatique : fini les tables cachées par colonne de date.
Sobriété
Zineb retire des visuels de sa page : moins de requêtes à chaque clic.
✓ Bonnes pratiques
- Chronométrer avant d'optimiser (Analyseur de performances).
- Suivre l'ordre modèle → mesures → visuels.
- Supprimer les colonnes inutiles dans Power Query, à la source.
✗ Pièges fréquents
- Deviner la lenteur au lieu de la chronométrer.
- Laisser la date/heure automatique (tables cachées, fichier obèse).
- Empiler les visuels (chaque visuel = une requête).
Points clés à retenir
- On ne devine pas une lenteur, on la chronomètre : l'Analyseur de performances d'abord.
- Requête DAX lente = modèle/mesure ; affichage lent = visuel trop chargé.
- L'ordre des remèdes : modèle → mesures → visuels.
- Chaque colonne importée pèse : supprimer l'inutile dans Power Query ; désactiver la date/heure auto.
Défi 48h — appliquez demain
Comme Zineb, passez un rapport à l'Analyseur de performances : identifiez le visuel le plus lent et son poste dominant (requête DAX ou affichage). Supprimez des colonnes inutiles dans Power Query, décochez la date/heure automatique, puis re-chronométrez et notez le gain.
- Je peux chronométrer un rapport et lire requête DAX vs affichage.
- Je connais l'ordre des remèdes : modèle → mesures → visuels.
- Je sais alléger un modèle à la source (colonnes, cardinalités, date/heure auto).
Questions fréquentes
Mon fichier .pbix est énorme : comment le réduire ?
Les suspects habituels : les colonnes inutiles (surtout les identifiants uniques et les textes longs), les hiérarchies de dates automatiques (une table cachée par colonne de date), et des données trop granulaires (l'heure quand le jour suffit). L'outil gratuit VertiPaq Analyzer (DAX Studio) liste le poids exact de chaque colonne.
DirectQuery serait-il plus rapide que l'Import ?
Presque toujours l'inverse : l'Import (compressé en mémoire) est le mode le plus rapide. DirectQuery se justifie par la fraîcheur temps réel ou des volumes impossibles à importer — jamais par la vitesse.
Quel est le bon ordre des remèdes à une lenteur ?