Support formation Rapports Power BI

Optimiser le modèle

En bref

  • Objectifs : appliquer les bonnes pratiques de modélisation ; réduire la taille d'un modèle en mode Import ; mesurer le temps de chargement des visuels avec l'analyseur de performances ; mener une démarche d'optimisation mesurée.
  • Prérequis : pages précédentes de la partie ; notions de DAX.
  • Niveau : intermédiaire.
Modélisation 5 - Optimiser le modèle

Pourquoi ?

Un rapport lent est un rapport peu utilisé. Un modèle trop volumineux consomme la mémoire de la capacité, allonge les actualisations et ralentit chaque visuel. La plupart des gains viennent du modèle lui-même (colonnes inutiles, cardinalité, types) avant les formules DAX. La maxime de Roche résume l'approche :

Les données doivent être transformées le plus en amont possible, et le plus en aval nécessaire.

Autrement dit : préparez les données dans la source ou dans Power Query plutôt qu'en colonnes calculées DAX, et ne gardez dans le modèle que ce que le rapport utilise.

Notions clés

Les bonnes pratiques par niveau

NiveauBonnes pratiques
ChargementNe charger que les colonnes et les lignes utiles ; typer correctement les colonnes ; laisser la source faire les calculs (query folding)
ModèleSchéma en étoile ; relations un-à-plusieurs à sens unique ; mode de stockage adapté (Import, DirectQuery, composite, Direct Lake) ; colonnes calculées limitées ; mesures explicites ; noms clairs, descriptions, colonnes techniques masquées
VisuelsPeu de visuels par page ; filtres restrictifs (N premiers) ; détails dans des pages d'extraction et des infos-bulles ; visuels personnalisés testés
EnvironnementCapacité Fabric F ou Premium par utilisateur dimensionnée ; passerelle de données dimensionnée pour les pics d'actualisation ; sources, passerelle et capacité dans la même région Azure

Réduire la taille du modèle

Le moteur VertiPaq stocke les données en colonnes et les compresse. Le coût d'une colonne dépend surtout de sa cardinalité (nombre de valeurs distinctes).

AxePratiqueExemple
Colonnes (le plus fort impact)Supprimer dans Power Query les colonnes inutiles aux visuels, aux calculs et aux relationsChamps d'audit, descriptions longues jamais affichées
CardinalitéSupprimer ou scinder les colonnes à forte cardinalitéSéparer un Date/heure en Date et Heure, retirer un GUID
LignesFiltrer en amontTrois dernières années, commandes non annulées, périmètre d'une filiale
RegroupementPré-agréger avec Regrouper par quand le détail n'est pas utileVentes par jour, produit et magasin au lieu de chaque ticket
TypesChoisir le type le plus compactNombre entier pour un identifiant, Nombre décimal fixe pour un montant, Date pour 20231225

Le regroupement fait perdre le détail des transactions : c'est un arbitrage avec les besoins métier. Pour garder le détail sur de gros volumes, voir Agrégations et modèles composites.

pbi-reduire-modele

L'analyseur de performances

L'analyseur de performances mesure le temps de chargement de chaque visuel d'une page et le décompose par catégorie. Il indique quel visuel ralentit le rapport et pourquoi. Il est disponible dans Power BI Desktop (vue Rapport) et dans le service (rapport en mode Modifier). Source

CatégorieCe qu'elle mesureSi elle est élevée
Requête DAXTemps de réponse du modèle sémantique à la requête du visuelOptimiser la mesure ou le modèle, réduire les données interrogées
Requête directeTemps de la requête envoyée à la source (DirectQuery)Optimiser la source, passer en Import ou en composite, ajouter des agrégations
Affichage visuelTemps de dessin du visuel, y compris images et géocodageSimplifier le visuel, réduire le nombre de points
AutrePréparation, attente des autres visuels, traitements en arrière-planRéduire le nombre de visuels de la page

Les durées sont en millisecondes. Les visuels se chargent sur un seul thread partagé : une durée « Autre » élevée signifie souvent que le visuel attend les autres.

Optimisation - L'analyseur de performances

Pas à pas

Mesurer avec l'analyseur de performances

1. Ajoutez une page vide temporaire au rapport, puis, depuis cette page, ouvrez Optimiser > Analyseur de performances (dans le service : Modifier, puis Affichage > Analyseur de performances).

[Capture : ruban Optimiser de Power BI Desktop avec le bouton Analyseur de performances encadré, et le volet ouvert à droite du canevas]

2. Cliquez sur Démarrer l'enregistrement, puis basculez sur la page à tester : tous ses visuels se chargent pendant l'enregistrement. Vous pouvez aussi cliquer sur Actualiser les visuels, ou sur l'icône Analyser ce visuel d'un seul visuel.

3. Reproduisez le scénario lent signalé par les utilisateurs (segment, filtre croisé, exploration). Chaque interaction ouvre une section dans le volet.

4. Cliquez sur Arrêter, puis développez le visuel le plus long pour voir la catégorie qui domine.

[Capture : volet Analyseur de performances, un visuel développé montrant Requête DAX, Affichage visuel et Autre avec leurs durées, et les liens Copier la requête et Exécuter dans la vue de requête DAX]

5. Cliquez sur Exécuter dans la vue de requête DAX pour rejouer la requête du visuel, ou sur Copier la requête pour l'analyser dans DAX Studio (activez Server Timings pour répartir le temps entre moteur de formules et moteur de stockage). Dans la vue de requête DAX, Copilot peut simplifier la requête générée.

6. Cliquez sur Exporter pour enregistrer un fichier JSON. DAX Studio le relit avec Load Perf Data.

[Capture : grille PBI Performance de DAX Studio après import du fichier PowerBIPerformanceData.json]

Lancez chaque mesure deux ou trois fois et comparez des passages équivalents : le poste de l'auteur n'est pas le service (volume, utilisateurs simultanés, capacité, cache).

Démarche d'optimisation

  1. Mesurer : enregistrer le scénario lent et exporter le JSON de référence.
  2. Cibler : identifier le visuel le plus lent et sa catégorie dominante.
  3. Agir : mesure DAX et taille du modèle pour la requête DAX, source ou mode de stockage pour la requête directe, visuel plus simple pour l'affichage, page allégée pour « Autre ».
  4. Mesurer à nouveau dans les mêmes conditions et comparer les deux exports.

Exemple

Liste de contrôle d'un modèle optimisé

  • Seules les colonnes et les lignes utiles sont chargées.
  • Les colonnes Date/heure sont scindées, les identifiants inutiles supprimés.
  • Chaque colonne a le type le plus compact possible.
  • La date/heure automatique est désactivée, une table de dates est marquée.
  • Les relations sont en un-à-plusieurs, à sens unique, sauf besoin justifié.
  • Les colonnes calculées ont été remplacées, quand c'est possible, par des colonnes Power Query ou des mesures.
  • Les colonnes techniques sont masquées et les mesures décrites.
  • Les pages comptent peu de visuels, et le visuel le plus lent a été mesuré avant et après correction.

Pièges et bonnes pratiques

  • N'optimisez pas à l'aveugle : mesurez d'abord, avec un export de référence.
  • Commencez le diagnostic dans Power BI Desktop, sur un seul visuel, avant d'examiner toute la page.
  • Une table de faits en Import sans filtre de période grossit à chaque actualisation : prévoyez un filtre ou l'actualisation incrémentielle.
  • Les visuels personnalisés sont une cause fréquente de lenteur d'affichage : comparez avec un visuel natif.

À retenir

  • Transformez le plus en amont possible : source, puis Power Query, puis DAX.
  • Les colonnes inutiles et à forte cardinalité sont les premières causes de modèles volumineux.
  • L'analyseur de performances indique quel visuel est lent et dans quelle catégorie.
  • Mesurez avant et après chaque optimisation.

Pour aller plus loin

  • Guide d'optimisation pour Power BI. Source (Microsoft Learn)
  • Techniques de réduction des données pour la modélisation Import. Source (Microsoft Learn)
  • Utiliser l'analyseur de performances. Source (Microsoft Learn)
  • Résoudre les problèmes de performances des rapports. Source (Microsoft Learn)
  • Dimensionner une passerelle de données locale. Source (Microsoft Learn)
  • Importing Performance Analyzer data in DAX Studio. Source (SQLBI)

Exercice

  1. Ouvrez un rapport comportant au moins une page de cinq visuels ou plus.
  2. Ajoutez une page vide, démarrez l'enregistrement, puis basculez sur la page à tester.
  3. Identifiez le visuel le plus lent et la catégorie qui domine.
  4. Copiez sa requête et exécutez-la dans la vue de requête DAX.
  5. Exportez le JSON, appliquez une optimisation (filtre N premiers, mesure simplifiée, visuel supprimé), mesurez à nouveau et comparez.