Orginal Beitrag „A comprehensive guide to Power BI performance tuning“ von Eugene Meidinger
Das Erstellen von Berichten in Power BI ist zwar einfach, jedoch kann das finden/beheben von Fehlern und die Optimierung von Berichten schwierig sein. Für die Leistungsoptimierung in Power BI-Berichten müssen Sie die Ursache finden und eine Handvoll externer Anwendungen verwenden. Dieser Artikel beschreibt, wie Sie das Leistungsproblem eingrenzen und gibt allgemeine Best Practices. Sobald Sie die Grundlagen verstanden haben, wird vieles einfacher.
Welcher Teil ist langsam
Für ein Berichtsentwickler kann es frustrierend sein, zu wissen, dass etwas langsam ist, aber nicht in der Lage zu sein, zu sagen warum es langsam ist. In Grunde gibt es 4 Hauptbereiche, in denen es zu einer Verlangsamung kommen kann:
- Datenaktualisierung
- Modellberechnungen
- Visualisierungs-Rendering
- Alles andere
Das Erkennen des Problems ist der erste Schritt zur Leistungsverbesserung. In den meisten Fällen gibt es bei einem langsamen Bericht ein Problem mit Modellberechnungen, also Ihrem Datenmodell.
Datenaktualisierung optimieren
Die Aktualisierung der Daten ist selten das Problem, da der Benutzer den Aktualisierungsvorgang nie sieht, wenn Sie den Import-Modus verwenden. In der Regel wird eine langsame Aktualisierung angezeigt, wenn Sie den Bericht erstellen oder wenn eine geplante Aktualisierung fehlschlägt. Es ist jedoch wichtig, die Datenaktualisieurng zu optimieren um Zeitüberschreitungen zu vermeiden und das Laden von Daten zu minimieren.
Stellen Sie sicher, dass die Abfragefunktion funktioniert
Wenn Sie eine relationale Datenbank abfragen, sollten Sie sicherstellen, dass die Abfragefaltung angewendet wird. Beim „Query-Folding“ wird z.B. M-Code in eine SQL-Abfrage umgewandelt und an das Quellsystem übertragen. Eine einfache Möglichkeit, um zu prüfen, dass das Falten von Abfragen funktioniert, besteht darin, mit der rechten Maustaste auf einen Schritt zu klicken und die Option „Systemeigene Abfrage anzeigen“ auszuwählen. Dies zeigt Ihnen die SQL-Abfrage, die für die Datenbank ausgeführt wird. Wenn Sie über Administratorrechte auf dem SQL-Server verfügen, können Sie auch mit die Abfragen mit erweiterte Ereignisse überwachen. Bei der Überwachung sollten Sie sich auf das Data Mashup-Modul beschränken, bei dem es sich um den Anwendungsnamen „Power Query“ handelt.
Einige Transformationsschritte können die Abfragefaltung unterbrechen und diese für alle nachfolgenden Schritte aufheben. Das Herausfinden, welche Schritte das Falten unterbrechen, ist eine Frage von Versuch und Irrtum. Einfache Transformationen wie das Filtern von Zeilen und das Entfernen von Spalten sollten möglichst früh ausgewendet werden.
Minimieren Sie die Daten, die Sie laden
Wenn Sie bestimmte Spalten nicht benötigen, entfernen Sie sie. Wenn Sie bestimmte Datenzeilen nicht benötigen, filtern Sie sie heraus. Dies kann die Leistung beim Aktualisieren der Daten und beim späteren Modellieren verbessern, was eine Win-Win-Situation darstellt.
Wenn Ihre Power BI-Datei mehr als 100 MB umfasst, ist die Wahrscheinlichkeit groß, dass aufgrund der Datengröße eine Verlangsamung auftritt. Sobald die Datei größer wird, ist es wichtig, entweder an Ihrem DAX-Code zu arbeiten oder sich mit alternativen Abfrage- / Hosting Methoden wie DirectQuery oder Power BI Premium zu befassen.
Erwägen Sie, Verknüpfungen in DAX und nicht in M durchzuführen
Wenn Sie eine Beziehung nur aus Filtergründen erstellen müssen, sollten Sie die Beziehung in DAX anstelle von PowerQuery erstellen, z.B. mithilfe einer Dimensionstabelle. DAX kann Filter blitzschnell anwenden, wohingegen Power Query beim Anwenden eines Joins sehr langsam sein kann, insbesondere wenn dieser Join nicht auf der SQL-Ebene ausgeführt wird. Abgesehen davon sind aus Usability-Zwecke die Daten sinnvoller als eine abgeflachte Tabelle.
Verwenden Sie SQL-Indizes
Wenn sich Ihre Daten in einer relationalen Datenbank befinden, sollten Sie sicherstellen, dass Indizes zur Unterstützung Ihrer Abfragen vorhanden sind. Wenn Sie nur wenige Spalten verwenden, können Sie möglicherweise einen Index erstellen, der alle benötige Spalten abdeckt. Arbeiten Sie mit Ihrem DBA zusammen, um Ihre Optionen zu ermitteln. Wenn Sie den SQL-Server verwenden, können Sie mithilfe von Ausführungsplänen feststellen, ob die Abfrage einen Index verwendet. Sie benötigen die SHOW_PLAN-Berechtigung auf dem Server und die Funktionalität der „Systemeigene Abfrage anzeigen“ , um die zugrunde liegende Abfrage zu erhalten.
Optimierung der Modellberechnungen
Wenn jemand sagt, dass ein Power BI-Bericht langsam ist, liegt normalerweise ein Problem mit der DAX-Modellierung vor. Leider ist diese Tatsache für den Benutzer nicht offensichtlich und es kann so aussehen, als ob die Grafiken selbst langsam sind. Zum Glück gibt es ein Tool, mit dem Sie den Unterschied feststellen können. Den Power BI Performance Analyzer.
Verwenden Sie den Power BI Performance Analyzer
Wenn Ihr Bericht langsam ist, sollten Sie als Erstes den Power BI Performance Analyzer ausführen. Auf diese Weise können Sie detailliert messen, welche Grafiken langsam sind, wie viel Zeit für das Ausführen von DAX aufgewendet wird und wie viel Zeit für das Rendern der Grafiken aufgewendet wird. Darüber hinaus erhalten Sie mit diesem Werkzeug den aktuellen DAX-Code, der im Hintergrund ausgeführt wird und den Sie mit DAX Studio manuell ausführen können. Bei kniffligen Leistungsproblemen ist dies das Werkzeug der Wahl.
Stellen Sie sicher, dass die Speicher-Engine verwendet wird
Bei Verwendung von DAX Studio können Sie sehen, wie viel Zeit mit der Speicher-Engine im Vergleich zur Formel-Engine verbraucht wird. Die Speicher-Engine kann nur einfache Vorgänge ausführen, ist jedoch multithreaded und sehr schnell. Wann immer möglich, ist es besser, die Speicher-Engine zu verwenden.
Entfernen Sie nicht benötigte Daten
Aufgrund der Art und Weise, wie die Daten in Power BI gespeichert werden, ist die Komprimierung und Leistung umso schlechter, je mehr Spalten Sie haben. Darüber hinaus können unnötige Zeilen ebenfalls die Geschwindigkeit verringern. Daten von zwei Jahren sind fast immer schneller, als zehn Jahre derselben Daten.
Vermeiden Sie außerdem Spalten mit vielen eindeutigen Werten, z.B. Primärschlüssel. Je mehr Werte in einer Spalte wiederholt werden, desto besser ist die Komprimierung aufgrund der Lauflängenkodierung. Eindeutige Spalten können bei der Codierung für Power BI mehr Speicherplatz beanspruchen als die Quelldaten.
Vermeiden Sie Iteratorfunktionen
Iterator-Funktionen berechnen eine Ergebniszeile durch das erzwingen der Zeile, was für einen spaltenweisen Datenspeicher wie DAX nicht ideal ist. Es gibt zwei Möglichkeiten Iteratorfunktionen zu identifizieren. Die Aggregationsfunktionen enden im Allgemeinen mit einem X: SUMX, MAXX, CONCATENATEX usw. Darüber hinaus nehmen viele Iteratoren eine Tabelle als ersten Parameter und dann einen Ausdruck als zweiten Parameter auf. Iteratoren mit einfacher Logik sind im Allgemeinen in Ordnung manchmal heimlich in effizientere Formen umgewandelt.
Verwenden Sie ein Sternschema
Die Verwendung eines Sternschemas, einer Transaktionstabelle in der Mitte, die von Nachschlagetabellen umgeben ist, bietet eine Reihe von Vorteilen. Es unterstützt das Filtern basierend auf den Nachschlagetabellen und das Aggregieren basierend auf der Transaktionstabelle. Die zwei Dinge, die DAX am besten kann, sind Filtern und Aggregieren. Ein Sternschema hält auch die Beziehungen einfach und leicht verständlich.
Visualisierungs-Rendering
Manchmal ist das Problem nicht unbedingt das Datenmodell, sondern die visuelle Darstellung. Zum Beispiel, wenn versucht wird mehr als zwanzig verschiedene Dinge auf einer Seite zu setzen oder eine Tabelle mit Tausenden von Zeilen.
Neigen Sie zur Aggregation
Die DAX-Engine Vertipaq kann zwei Dinge wirklich gut: Filtern und Aggregieren. Dies bedeutet, dass es sich ideal für hochwertige Berichte wie KPIs und traditionelle Dashboards eignet. Dies bedeutet auch, das es nicht gut für sehr detailreiche und granulare Berichte ist. Wenn Sie eine Tabelle mit 10.000 Zeilen und komplexen Kennzahlen haben, die für jede Zeile berechnet werden, wird dies sehr langsam. Wenn Sie in der Lage sein müssen, detaillierte Informationen anzuzeigen, können Sie Drillthrough-Seiten oder Quickinfos für Berichte verwenden, um die angezeigten Daten vorzufiltern.
Filtern Sie, was angezeigt wird
Sofern Sie keine einfache Aggregationen verwenden, ist es nicht ratsam, alle Daten auf einmal anzuzeigen. Eine Möglichkeit, damit umzugehen, besteht darin, Berichts- oder Seiten-Filter anzuwenden, um zu begrenzen, wie viele Zeilen gleichzeitig gerendert werden. Eine weitere Möglichkeit besteht darin, Drillthrough-Seiten und Quickinfos zu verwenden, um die angezeigten Daten implizit zu filtern.
Begrenzen Sie, wie viele Visualisierungen auf dem Bildschirm angezeigt werden. Der Teil von Power BI, der die Visualisierung rendert, ist Singlethread und kann manchmal langsam sein. Versuchen Sie nach Möglichkeit, nicht mehr als 20 Elemente auf dem Bildschirm anzuzeigen. Selbst einfache Linien und Kästchen können das Rendern etwas verlangsamen.
Alles andere
Überprüfen Sie Ihre Abfragemethode. In diesem Artikel wird davon ausgegangen, dass Sie die Import-Methode verwenden, um Ihre Daten abzurufen. Abhängig von der Größe Ihrer Daten können DirectQuery- oder Live-Verbindung jedoch viel schneller sein.
Manchmal kann ein Bericht bei der Entwicklung langsam erscheinen. Stellen Sie sicher, dass auf Ihrem PC keine Anwendung laufen, die all Ihre Ressourcen verbrauchen und damit Power BI-Desktop langsam erscheinen lassen.
Quelle: https://www.sqlgene.com/2019/09/27/a-comprehensive-guide-to-power-bi-performance-tuning/
I love PowerBI 🙂