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.

Screenshot of the Diagnostics section of the Power BI Desktop Options screen with the link to open the crash dump/traces folder.

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.

Screenshot of SQL Server Profiler window with no highlighted traces.

So öffnen Sie eine Ablaufverfolgungsdatei

  1. Wählen Sie in SQL Server Profiler Datei>Öffnen>Ablaufverfolgungsdatei aus.

  2. 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 - und Query 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 und DirectQuery End stellen eine an die zugrunde liegende Datenquelle gesendete Abfrage als Teil der Auswertung der DAX-Abfrage dar.

Screenshot of SQL Server Profiler with highlighted Query Begin and Query End events.

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 und Query End-Ereignissen ist das Detail die DAX-Abfrage. Bei DirectQuery Begin und DirectQuery 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:

  1. Öffnen Sie eine einzelne Power BI Desktop-Sitzung zur Vermeidung von Verwechslungen von mehreren Arbeitsbereichsordnern.

  2. 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.

  3. Ö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:

Screenshot of a Power BI Desktop model view diagram that shows the related Item, Web_Sales, Customer and Date-dim TPC-DS tables.

Im Power BI-Visual definiert der folgende Ausdruck das SalesAmount-Measure:


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

Screenshot of a Power BI Desktop stacked column chart that displays sales amount by category.

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.

Screenshot of a T-SQL query that shows embedded subqueries, one for each model table.

Gatewayleistung

Weitere Informationen zur Problembehandlung der Gatewayleistung finden Sie im Artikel Problembehandlung bei Gateways – Power BI.

Weitere Informationen zu DirectQuery finden Sie in den folgenden Ressourcen:

Haben Sie Fragen? Stellen Sie Ihre Frage in der Power BI-Community.