Problembehandlung für DirectQuery-Modelle in Power BI Desktop
Dieser Artikel unterstützt Sie beim Diagnostizieren von Leistungsproblemen mit Power BI DirectQuery-Datenmodellen, die Sie in Power BI Desktop oder im Power BI-Dienst entwickeln. Der Artikel beschreibt außerdem, wie Sie detaillierte Informationen erhalten, die Ihnen beim Optimieren von Berichten helfen.
Sie sollten jede Diagnose von Leistungsproblemen in Power BI Desktop statt im Power BI-Dienst oder Power BI-Berichtsserver starten. Leistungsprobleme hängen oftmals vom Leistungsniveau der zugrunde liegenden Datenquelle ab. Sie können diese Probleme einfacher in der isolierten Power BI Desktop-Umgebung identifizieren und diagnostizieren, ohne Komponenten wie ein lokales Gateway einzubeziehen.
Wenn die Leistungsprobleme in Power BI Desktop nicht vorhanden sind, konzentrieren Sie Ihre Untersuchung auf die Einzelheiten des Berichts im Power BI-Dienst.
Ferner sollten Sie versuchen, Probleme auf ein einzelnes Visual zu isolieren, bevor Sie sich viele Visuals auf einer Seite ansehen.
Leistungsanalyse
Die Leistungsanalyse ist ein nützliches Tool zum Erkennen von Leistungsproblemen im gesamten Problembehandlungsprozess. Wenn Sie ein einzelnes träges Visual auf einer Seite in Power BI Desktop identifizieren können, können Sie Leistungsanalyse verwenden, um zu bestimmen, welche Abfragen Power BI Desktop an die zugrunde liegende Quelle sendet.
Möglicherweise können Sie auch Ablaufverfolgungen und Diagnoseinformationen anzeigen, die von den zugrunde liegenden Datenquellen ausgegeben werden. Solche Ablaufverfolgungen können auch nützliche Informationen zu den Details der Abfrageausführung und dazu enthalten, wie diese verbessert werden kann.
Auch ohne Ablaufverfolgungen aus der Quelle können Sie die von Power BI gesendeten Abfragen zusammen mit deren Ausführungszeiten anzeigen.
Hinweis
Für SQL-basierte DirectQuery-Quellen zeigt die Leistungsanalyse Abfragen nur für SQL Server-, Oracle- und Teradata-Datenquellen an.
Ablaufverfolgungsdatei
Standardmäßig protokolliert Power BI Desktop während einer gegebenen Sitzung Ereignisse in einer Ablaufverfolgungsdatei mit dem Namen FlightRecorderCurrent.trc. Sie finden die Ablaufverfolgungsdatei für die aktuelle Sitzung im Ordner AppData für den aktuellen Benutzer/die aktuelle Benutzerin: \<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces.
Die folgenden DirectQuery-Datenquellen schreiben alle Abfragen, die von Power BI an sie gesendet werden, in die Ablaufverfolgungsdatei. Das Protokoll unterstützt möglicherweise in Zukunft andere DirectQuery-Quellen.
- SQL Server
- Azure SQL-Datenbank
- Azure Synapse Analytics (ehemals SQL Data Warehouse)
- Oracle
- Teradata
- SAP HANA
Wählen Sie zur einfachen Navigation zum Ordner mit den Ablaufverfolgungsdateien in Power BI Desktop Datei>Optionen und Einstellungen>Optionen und dann Diagnose aus.
Wählen Sie unter Absturzabbilderfassung den Link Ordner mit Absturzabbild/Überwachungen öffnen aus, um den Ordner <User>\AppData\Local\Microsoft\Power BI Desktop\Traces zu öffnen.
Navigieren Sie zum übergeordneten Ordner dieses Ordners, und öffnen Sie dann den Ordner AnalysisServicesWorkspaces, der einen Arbeitsbereichs-Unterordner für jede geöffnete Instanz von Power BI Desktop enthält. Die Namen der Unterordner weisen ganzzahlige Suffixe auf, z. B. AnalysisServicesWorkspace2058279583.
Jeder AnalysisServicesWorkspace-Ordner enthält einen Unterordner Data, der die Ablaufverfolgungsdatei FlightRecorderCurrent.trc für die aktuelle Power BI-Sitzung enthält. Dieser Ordner wird nicht mehr angezeigt, wenn die zugehörige Power BI Desktop-Sitzung endet.
Sie können die Ablaufverfolgungsdateien mit dem SQL Server Profiler-Tool öffnen, das Sie als Teil des kostenlosen SQL Server Management Studio -Downloads (SSMS) abrufen können. Nachdem Sie SQL Server Management Studio heruntergeladen und installiert haben, öffnen Sie den SQL Server Profiler.
So öffnen Sie eine Ablaufverfolgungsdatei
Wählen Sie in SQL Server Profiler Datei>Öffnen>Ablaufverfolgungsdatei aus.
Navigieren Sie zum Pfad der Ablaufverfolgungsdatei für die aktuell geöffnete Power BI-Sitzung, oder geben Sie ihn ein, z. B.: <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data, und öffnen Sie FlightRecorderCurrent.trc.
SQL Server Profiler zeigt alle Ereignisse aus der aktuellen Sitzung an. Der folgende Screenshot zeigt eine Gruppe von Ereignissen für eine Abfrage. Jede Gruppe verfügt über folgende Ereignisse:
Ein
Query Begin
- undQuery End
-Ereignis, das den Anfang und das Ende einer DAX-Abfrage darstellt, die durch Ändern eines Visuals oder Filters in der Power BI-Benutzeroberfläche oder durch Das Filtern oder Transformieren von Daten in der Power Query-Editor generiert wird.Ein oder mehrere Paare von Ereignissen für
DirectQuery Begin
undDirectQuery End
stellen eine an die zugrunde liegende Datenquelle gesendete Abfrage als Teil der Auswertung der DAX-Abfrage dar.
Mehrere DAX-Abfragen können parallel ausgeführt werden, sodass sich Ereignisse aus verschiedenen Gruppen überlappen können. Der Wert der ActivityID
kann verwendet werden, um zu bestimmen, welche Ereignisse zur selben Gruppe gehören.
Die folgenden Spalten sind ebenfalls von Interesse:
- TextData: Die Textdetails des Ereignisses. Bei
Query Begin
undQuery End
-Ereignissen ist das Detail die DAX-Abfrage. BeiDirectQuery Begin
undDirectQuery End
-Ereignissen ist das Detail die SQL-Abfrage, die an die zugrunde liegende Quelle gesendet wird. Der Wert von TextData für das aktuell ausgewählte Ereignis wird auch im Bereich am unteren Bildschirmrand angezeigt. - EndTime: Die Zeit, zu der das Ereignis beendet wurde.
- Duration (Dauer): Die Dauer in Millisekunden, die zur Ausführung der DAX- oder SQL-Abfrage benötigt wird.
- Fehler: Gibt an, ob ein Fehler aufgetreten ist. In diesem Fall wird das Ergebnis auch rot angezeigt.
Die Abbildung oben zeigt einige der weniger interessierenden Spalten schmal an, damit Sie die interessanteren Spalten besser sehen können.
Folgen Sie diesem Ansatz, um eine Ablaufverfolgung zu erfassen, um ein potenzielles Leistungsproblem zu diagnostizieren:
Öffnen Sie eine einzelne Power BI Desktop-Sitzung zur Vermeidung von Verwechslungen von mehreren Arbeitsbereichsordnern.
Führen Sie die interessanten Aktionen in Power BI Desktop aus. Schließen Sie einige zusätzliche Aktionen mit ein, um sicherzustellen, dass die interessierenden Ereignisse in die Ablaufverfolgungsdatei geleert werden.
Öffnen Sie den SQL Server Profiler, und untersuchen Sie die Ablaufverfolgung. Denken Sie daran, dass beim Schließen von Power BI Desktop die Ablaufverfolgungsdatei gelöscht wird. Auch weitere Aktionen in Power BI Desktop werden nicht sofort angezeigt. Sie müssen die Ablaufverfolgungsdatei schließen und erneut öffnen, um neue Ereignisse anzuzeigen.
Halten Sie einzelne Sitzungen relativ klein, vielleicht zehn Sekunden mit Aktionen, nicht Hunderte Sekunden. Dieser Ansatz erleichtert die Interpretation der Ablaufverfolgungsdatei. Außerdem gilt für die Größe der Ablaufverfolgungsdatei eine Beschränkung, sodass bei langen Sitzungen die Wahrscheinlichkeit besteht, dass frühe Ereignisse gelöscht werden.
Abfrage- und Unterabfrageformat
Das allgemeine Format von Power BI Desktop-Abfragen besteht in der Verwendung von Unterabfragen für jede Modelltabelle, auf die die Abfragen verweisen. Die Power Query Editor-Abfrage definiert die Subselect-Abfragen. Nehmen wir z. B. an, dass die folgenden TPC-DS-Tabellen in einer relationalen Datenbank in SQL Server vorhanden sind:
Im Power BI-Visual definiert der folgende Ausdruck das SalesAmount
-Measure:
SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])
Das Aktualisieren dieses Visuals erzeugt die T-SQL-Abfrage in der folgenden Abbildung. Es gibt drei Unterabfragen für die Modelltabellen Web_Sales
, Item
und Date_dim
. Jede Abfrage gibt alle Spalten der Modelltabelle zurück, obwohl das Visual nur auf vier Spalten verweist.
Diese schattierten Unterabfragen sind genau die Definition der Power Query-Abfragen. Diese Verwendung von Unterabfragen wirkt sich nicht auf die Leistung für die von DirectQuery unterstützten Datenquellen aus. Datenquellen wie SQL Server optimieren die Verweise auf die anderen Spalten.
Ein Grund, warum Power BI dieses Muster verwendet, ist, dass Sie eine Power Query-Abfrage definieren können, um eine bestimmte Abfrageanweisung zu verwenden. Power BI verwendet die Abfrage wie angegeben und versucht nicht, sie neu zu schreiben. Dieses Muster schränkt die Verwendung von Abfrageanweisungen ein, die allgemeine Tabellenausdrücke (Common Table Expressions, CTEs) und gespeicherte Prozeduren verwenden. Sie können diese Anweisungen nicht in Unterabfragen verwenden.
Gatewayleistung
Weitere Informationen zur Problembehandlung der Gatewayleistung finden Sie im Artikel Problembehandlung bei Gateways – Power BI.
Zugehöriger Inhalt
Weitere Informationen zu DirectQuery finden Sie in den folgenden Ressourcen:
- Verwenden von DirectQuery in Power BI Desktop
- Von DirectQuery unterstützte Datenquellen
- DirectQuery-Modelle in Power BI Desktop
- Leitfaden für das DirectQuery-Modell in Power BI Desktop
Haben Sie Fragen? Stellen Sie Ihre Frage in der Power BI-Community.