Un rapport Power BI lent est souvent pire qu'aucun rapport : il décourage les utilisateurs, nuit à l'adoption des outils décisionnels et ralentit considérablement les prises de décision stratégiques. Pourtant, les lenteurs ne viennent que très rarement des limites intrinsèques de Power BI, mais découlent généralement de choix de modélisation inadaptés, de formules DAX inefficaces ou d'architectures réseau mal pensées.

1. L'absence de modèle en étoile (Star Schema)

C'est la cause de lenteur numéro un dans le monde de la Business Intelligence. Essayer de faire du reporting sur une table unique géante (table plate) ou sur des relations complexes en cascade (modèle en flocon) force le moteur en mémoire relationnel de Power BI (le moteur VertiPaq) à exécuter des jointures coûteuses et à scanner des volumes de données inutiles. Adopter un modèle en étoile propre, séparant clairement les tables de faits (qui contiennent les transactions et valeurs numériques) et les tables de dimensions (qui contiennent les attributs textuels de filtrage comme les clients, les produits, ou le calendrier), résout instantanément la majorité des problèmes de performance.

"VertiPaq est optimisé pour stocker les données en colonnes et compresser les valeurs répétitives. Un schéma en étoile maximise ce taux de compression et accélère le requêtage."

2. Des mesures DAX sous-optimisées

L'utilisation abusive de fonctions itératives comme SUMX, FILTER ou ADDCOLUMNS sur des tables entières au lieu d'utiliser des filtres contextuels propres ralentit considérablement l'affichage des visuels. Une erreur classique consiste à écrire des filtres sous forme de sous-table plutôt que de passer par des filtres de colonnes simples dans la fonction CALCULATE.

Exemple de formule inefficace :

Ventes_Lentes = 
SUMX(
    FILTER(Ventes, Ventes[Statut] = "Validé"), 
    Ventes[Quantité] * Ventes[PrixUnitaire]
)

Exemple optimisé avec CALCULATE et variables :

Ventes_Optimisées = 
VAR StatutValide = "Validé"
RETURN
CALCULATE(
    SUMX(Ventes, Ventes[Quantité] * Ventes[PrixUnitaire]),
    Ventes[Statut] = StatutValide
)

L'utilisation des variables (VAR / RETURN) permet de stocker le résultat d'une expression pour la réutiliser, évitant au moteur d'évaluer plusieurs fois le même calcul dans une même formule.

3. L'abus de DirectQuery

Bien que le mode DirectQuery soit utile pour obtenir des données en temps réel, il envoie une requête SQL à la base de données source à chaque fois qu'un utilisateur clique sur un segment ou interagit avec un visuel. Si la base SQL sous-jacente n'est pas indexée ou si le réseau est saturé, le rapport Power BI sera bloqué. Privilégiez toujours le mode Import standard en configurant des rafraîchissements planifiés, ou explorez l'architecture Direct Lake offerte par Microsoft Fabric.

Ressources & Liens pour approfondir