Passer en revue les performances des mesures, des relations et des visuels
Si votre modèle sémantique contient plusieurs tables, des relations complexes, des calculs compliqués, plusieurs visuels ou des données redondantes, les performances des états risquent d’être médiocres, au point d’engendrer une expérience utilisateur négative.
Pour optimiser les performances, vous devez d’abord identifier la source du problème, autrement dit repérer les éléments de l’état et du modèle sémantique à l’origine des problèmes de performance. Ensuite, vous pouvez agir pour résoudre ces problèmes et, ainsi, améliorer les performances.
Identifier les goulots d’étranglement des performances des états
Pour obtenir des performances optimales dans vos états, vous devez créer un modèle sémantique efficace prenant en charge les requêtes et mesures à exécution rapide. Lorsque vous disposez d’une bonne base, vous pouvez améliorer le modèle en analysant les plans de requête et les dépendances, puis en apportant des modifications pour optimiser les performances.
Vous devez examiner les mesures et les requêtes dans votre modèle sémantique afin de vous assurer que vous utilisez la méthode la plus efficace pour obtenir les résultats souhaités. Votre point de départ doit consister à identifier les goulots d’étranglement qui existent dans le code. Lorsque vous identifiez la requête la plus lente dans le modèle sémantique, vous pouvez vous concentrer d’abord sur le goulot d’étranglement le plus important, puis établir une liste de priorités pour traiter les autres problèmes.
Analyser les performances
L’Analyseur de performances, à savoir un outil de Power BI Desktop, vous permet de découvrir les performances de chacun des éléments de votre état lorsque les utilisateurs interagissent avec eux. Par exemple, vous pouvez déterminer le temps nécessaire à l’actualisation d’un visuel particulier lorsque l’opération est démarrée par une interaction utilisateur. L’outil vous aide à identifier tout élément contribuant à vos problèmes de performance, ce qui peut être utile pour leur résolution.
Avant d’exécuter l’Analyseur de performances et pour obtenir les résultats les plus précis dans votre analyse (test), assurez-vous que les caches de visuels et de moteur de données sont vides.
Cache de visuels : lorsque vous chargez un visuel, vous ne pouvez pas effacer ce cache sans fermer Power BI Desktop et le rouvrir. Pour éviter toute mise en cache en opération, vous devez démarrer votre analyse avec un cache de visuels vide.
Pour vous assurer d’avoir un cache de visuels vide, ajoutez une page vide à votre fichier Power BI Desktop, puis, une fois cette page sélectionnée, enregistrez et fermez le fichier. Rouvrez le fichier Power BI Desktop qui s’ouvre sur la page vide.
Cache du moteur de données : lorsqu’une requête est exécutée, les résultats sont mis en cache, de sorte que les résultats de votre analyse sont trompeurs. Vous devez vider le cache de données avant de réexécuter le visuel.
Pour vider le cache de données, vous pouvez soit redémarrer Power BI Desktop, soit connecter DAX Studio au modèle sémantique, puis appeler la fonction Clear Cache.
Après avoir vidé les caches et ouvert le fichier Power BI Desktop sur la page vide, accédez à l’onglet de ruban Affichage, puis sélectionnez Analyseur de performances.
Pour commencer le processus d’analyse, cliquez sur Démarrer l’enregistrement, sélectionnez la page de l’état que vous souhaitez analyser, puis interagissez avec les éléments de l’état que vous souhaitez surveiller. Les résultats de vos interactions s’affichent alors progressivement dans le volet Analyseur de performances. Ensuite, cliquez sur le bouton Arrêter.
Pour en savoir plus, consultez Examiner les performances des éléments d’état à l’aide de l’Analyseur de performances.
Examiner les résultats
Vous pouvez examiner les résultats de votre test de performances dans le volet Analyseur de performances. Pour passer en revue les tâches par ordre de durée, de la plus longue à la plus courte, cliquez avec le bouton droit sur l’icône Trier en regard de l’en-tête de colonne Durée (ms), puis sélectionnez Durée totale en guise d’ordre Décroissant.
Les informations de journalisation de chaque visuel indiquent le temps nécessaire (durée) pour effectuer les catégories de tâches suivantes :
- Requête DAX : temps qu’il a fallu au visuel pour envoyer la requête et à Power BI pour renvoyer les résultats.
- Affichage de visuel : temps nécessaire pour afficher le visuel à l’écran, y compris le temps nécessaire pour récupérer les images web ou le géocodage.
- Autre : temps qu’il a fallu au visuel pour préparer les requêtes, attendre la fin d’autres visuels ou effectuer d’autres tâches de traitement en arrière-plan. Si cette catégorie affiche une longue durée, le seul moyen réel de réduire celle-ci consiste à optimiser les requêtes DAX pour les autres visuels ou à réduire le nombre de visuels dans l’état.
Les résultats vous aident à comprendre le comportement de votre modèle sémantique et identifier les éléments que vous devez optimiser. Vous pouvez comparer la durée de chaque élément dans l’état et identifier les éléments qui ont une longue durée. Vous devez vous concentrer sur ces éléments et rechercher la raison pour laquelle ils sont longs à se charger sur la page d’état.
Vous pouvez analyser vos requêtes plus en détail à l’aide de DAX Studio, outil open source gratuit fourni par un autre service.
Résoudre les problèmes et optimiser les performances
Les résultats de votre analyse identifient les domaines à améliorer et les opportunités d’optimisation des performances. Vous constaterez peut-être que vous devez apporter des améliorations aux visuels, aux calculs DAX ou à d’autres éléments de votre modèle sémantique. Les informations suivantes fournissent des conseils sur les éléments à rechercher et les modifications que vous pouvez apporter.
Visuels
Si vous identifiez des visuels comme goulot d’étranglement entraînant des performances médiocres, vous devez trouver un moyen d’améliorer les performances avec un impact minimal sur l’expérience utilisateur.
Tenez compte du nombre de visuels sur la page d’état : moins de visuels est synonyme de meilleures performances. Demandez-vous si un visuel est vraiment nécessaire et s’il ajoute de la valeur pour l’utilisateur final. Si la réponse est non, vous devez supprimer ce visuel. Au lieu d’utiliser plusieurs visuels sur la page, envisagez d’autres moyens de fournir des détails supplémentaires, comme des pages d’extraction ou des info-bulles de page d’état.
Examinez le nombre de champs dans chaque visuel. Plus le nombre de visuels dans l’état est grand, plus les risques de problèmes de performance sont élevés. En outre, plus le nombre de visuels est grand, plus l’état peut sembler encombré et perdre en clarté. La limite supérieure pour les visuels étant de 100 champs (mesures ou colonnes), un visuel avec plus de 100 champs est lent à charger. Demandez-vous si vous avez vraiment besoin de toutes ces données dans un visuel. Vous constaterez peut-être que vous pouvez réduire le nombre de champs que vous utilisez actuellement.
Requête DAX
Lorsque vous examinez les résultats dans le volet Analyseur de performances, vous pouvez voir combien de temps il a fallu au moteur Power BI Desktop pour évaluer chaque requête (en millisecondes). Une requête DAX qui prend plus de 120 millisecondes est un bon point de départ. Dans cet exemple, vous identifiez une requête qui a une longue durée.
L’Analyseur de performances met en évidence les problèmes potentiels, mais il ne vous indique pas ce qui doit être fait pour y remédier. Vous souhaiterez peut-être effectuer des investigations supplémentaires afin de déterminer la raison pour laquelle le traitement de cette mesure prend tant de temps. Vous pouvez étudier vos requêtes plus en détail à l’aide de DAX Studio.
Par exemple, cliquez sur Copier la requête pour copier la formule de calcul dans le presse-papiers, puis collez-la dans DAX Studio. Vous pouvez ensuite examiner l’étape de calcul. Dans cet exemple, vous essayez de compter le nombre total de produits dont la quantité commandée est supérieure ou égale à cinq.
Count Customers =
CALCULATE(
DISTINCTCOUNT(Order[ProductID]),
FILTER (Order, Order[OrderQty] >= 5)
)
Après l’analyse de la requête, vous pouvez identifier où se situent les problèmes de performance à l’aide de vos propres connaissances et expériences. Vous pouvez également essayer d’améliorer les performances à l’aide de différentes fonctions DAX. Dans l’exemple suivant, la fonction FILTER a été remplacée par la fonction KEEPFILTER. Lorsque le test a été réexécuté dans l’Analyseur de performances, la durée a été plus courte en raison de la fonction remplacée.
Count Customers =
CALCULATE(
DISTINCTCOUNT(Order[ProductID]),
KEEPFILTERS(Order[OrderQty] >= 5)
)
Dans ce cas, vous pouvez remplacer la fonction FILTER par la fonction KEEPFILTER pour réduire considérablement la durée d’évaluation de cette requête. Lorsque vous apportez cette modification, pour vérifier si la durée a été améliorée ou non, videz le cache de données, puis répétez le processus de l’Analyseur de performances.
Modèle sémantique
Si la durée des mesures et visuels affiche des valeurs basses (autrement dit, s’ils ont une courte durée), ils ne sont pas à l’origine des problèmes de performance. En revanche, si la requête DAX affiche une valeur de durée élevée, il est probable qu’une mesure est mal écrite ou qu’un problème a affecté le modèle sémantique. Le problème peut être dû à des relations, des colonnes ou des métadonnées dans votre modèle, ou bien il est possible que l’option Date/heure automatique est activée, comme décrit dans la section suivante.
Relations
Vous devez examiner les relations de modèle entre les tables pour vérifier que vous avez établi les bonnes relations. Vérifiez que les propriétés de cardinalité des relations sont correctement configurées. Par exemple, une colonne « un » comportant des valeurs uniques peut être configurée de manière incorrecte en tant que colonne « plusieurs ». Vous en saurez plus sur l’impact de la cardinalité sur les performances plus loin dans ce module.
Colonnes
Il est recommandé de ne pas importer de colonnes de données dont vous n’avez pas besoin. Pour éviter de supprimer des colonnes dans Power Query, vous devez essayer de les traiter à la source lors du chargement de données dans Power BI Desktop. Toutefois, s’il est impossible de supprimer les colonnes redondantes de la requête source ou que les données ont déjà été importées dans leur état brut, vous pouvez toujours examiner chaque colonne à l’aide de Power Query. Demandez-vous si vous avez vraiment besoin de chaque colonne et essayez d’identifier l’avantage que chacune d’elles apporte à votre modèle sémantique. Si vous constatez qu’une colonne n’ajoute aucune valeur, vous devez la supprimer de votre modèle sémantique. Supposons, par exemple, que vous disposiez d’une colonne ID avec des milliers de lignes uniques. Comme vous n’utiliserez pas cette colonne dans une relation, elle ne sera utilisée dans aucun état. Vous devez donc conclure que cette colonne est inutile et admettre qu’elle gaspille de l’espace dans votre modèle sémantique.
Lorsque vous supprimez une colonne inutile, vous réduisez la taille du modèle sémantique et, par là même, la taille de fichier et la durée d’actualisation. En outre, comme le modèle sémantique comporte uniquement des données pertinentes, les performances globales de l’état devraient s’améliorer.
Pour en savoir plus, consultez Techniques de réduction du volume de données pour la modélisation des importations.
Métadonnées
Les métadonnées sont des informations sur d’autres données. Les métadonnées Power BI comportent des informations sur votre modèle sémantique, comme le nom, le type de données et le format de chacune des colonnes, le schéma de la base de données, la conception des états, la date de dernière modification du fichier, la fréquence d’actualisation des données, etc.
Lorsque vous chargez des données dans Power BI Desktop, il est recommandé d’analyser les métadonnées correspondantes afin de pouvoir identifier les incohérences avec votre modèle sémantique et normaliser les données avant de commencer à créer des états. L’exécution d’une analyse sur vos métadonnées devrait améliorer les performances du modèle sémantique, car, au cours de cette opération, vous allez probablement identifier les colonnes inutiles, les erreurs au sein de vos données, les types de données incorrects, le volume de données chargées (sachant que le chargement des modèles sémantiques volumineux, notamment les données transactionnelles ou historiques, prend plus de temps), etc.
Vous pouvez examiner les colonnes, les lignes et les valeurs de vos données source à l’aide de Power Query dans Power BI Desktop. Ensuite, vous pouvez apporter les modifications nécessaires à l’aide des outils disponibles, comme ceux mis en évidence dans l’image suivante :
Voici les options Power Query :
Colonnes inutiles : évalue la nécessité de chaque colonne. Si vous n’envisagez pas d’utiliser une ou plusieurs colonnes dans l’état, vous devez les supprimer à l’aide de l’option Supprimer les colonnes, car elles ne sont pas nécessaires.
Lignes inutiles : vérifie les premières lignes du modèle sémantique pour voir si elles sont vides ou si elles comportent des données dont vous n’avez pas besoin dans vos états. Si tel est le cas, vous pouvez supprimer ces lignes à l’aide de l’option Supprimer les lignes.
Type de données : évalue les types de données de colonne pour s’assurer que chacun d’eux est correct. Si vous identifiez un type de données incorrect, changez-le en sélectionnant successivement la colonne, l’option Type de données sous l’onglet de ruban Transformer et le type de données approprié dans la liste.
Noms des requêtes : examine les noms des requêtes (tables) dans le volet Requêtes. À l’image des noms d’en-tête de colonne, vous devez changer les noms de requête inhabituels ou qui n’aident pas pour des noms qui sont plus évidents ou qui sont plus familiers à l’utilisateur. Vous pouvez renommer une requête en cliquant dessus avec le bouton droit, en sélectionnant Renommer, en modifiant le nom comme il se doit, puis en appuyant sur Entrée.
Détails de la colonne : Power Query dispose des trois options d’aperçu des données suivantes, qui vous permettent d’analyser les métadonnées associées à vos colonnes. Ces options se trouvent sous l’onglet de ruban Affichage, comme illustré dans la capture d’écran suivante.
- Qualité de la colonne : détermine le pourcentage d’éléments de la colonne qui sont valides, comportent des erreurs ou sont vides. Si le pourcentage de validité n’est pas 100, vous devez en rechercher la raison, corriger les erreurs et renseigner les valeurs vides.
- Distribution des colonnes : affiche la fréquence et la distribution des valeurs dans chacune des colonnes. Vous étudierez cela plus loin dans ce module.
- Profil de colonne : affiche un graphique de statistiques de colonnes et un graphique de distribution des colonnes.
Remarque
Si vous examinez une requête comportant plus de 1 000 lignes et que vous souhaitez analyser l’ensemble du modèle sémantique, vous devez changer l’option par défaut en bas de la fenêtre. Sélectionnez Profilage de colonne en fonction des 1 000 premières lignes>Profilage de colonne basé sur l’ensemble du jeu de données.
Les autres métadonnées que vous devez prendre en compte sont les informations sur le modèle sémantique dans son ensemble, comme la taille du fichier et la fréquence d’actualisation des données. Vous pouvez trouver ces métadonnées dans le fichier Power BI Desktop (.pbix) associé. Les données que vous chargez dans Power BI Desktop sont compressées et stockées sur le disque par le moteur de stockage VertiPaq. La taille de votre modèle sémantique a un impact direct sur ses performances ; un modèle sémantique de taille inférieure utilise moins de ressources (mémoire) et permet d’accélérer l’actualisation des données, les calculs et le rendu des visuels dans les états.
Fonctionnalité Date/heure automatique
L’autre élément que vous devez prendre en compte lors de l’optimisation des performances est l’option Date/heure automatique dans Power BI Desktop. Par défaut, cette fonctionnalité est activée globalement, ce qui signifie que Power BI Desktop crée automatiquement une table calculée masquée pour chaque colonne de dates, à condition que certaines conditions soient remplies. Les nouvelles tables masquées s’ajoutent aux tables que vous avez déjà dans votre modèle sémantique.
L’option Date/heure automatique vous permet d’utiliser Time Intelligence pour le filtrage, le regroupement et l’exploration des périodes calendaires au niveau du détail. Nous vous recommandons de garder l’option Date/heure automatique activée uniquement si vous utilisez des périodes calendaires et quand le modèle présente des exigences simples par rapport à l’heure.
Si votre source de données définit déjà une table de dimension de date, cette table doit être utilisée pour définir de manière cohérente l’heure au sein de votre organisation, et vous devez désactiver l’option Date/heure automatique globale. La désactivation de cette option peut réduire la taille de votre modèle sémantique et le temps d’actualisation.
Vous pouvez activer/désactiver l’option Date/heure automatique de manière globale afin qu’elle s’applique à tous vos fichiers Power BI Desktop, ou bien l’activer ou la désactiver pour le fichier actuel afin qu’elle ne s’applique qu’à un fichier spécifique.
Pour activer/désactiver l’option Date/heure automatique, accédez à Fichier>Options et paramètres>Options, puis sélectionnez la page Global ou Fichier actuel. Sur l’une ou l’autre des pages, sélectionnez Chargement des données puis, dans la section Time Intelligence, cochez ou décochez la case en fonction des besoins.
Pour obtenir une vue d’ensemble et une présentation générale de la fonctionnalité Date/heure automatique, consultez Appliquer l’option de date/heure automatique dans Power BI Desktop.