Problembehandlung bei der Entwicklung von DirectQuery-Modellen in Power BI DesktopTroubleshoot developing DirectQuery models in Power BI Desktop

Dieser Artikel richtet sich an Datenmodellierer, die Power BI DirectQuery-Modelle entwickeln, entweder mit Power BI Desktop oder dem Power BI-Dienst.This article targets data modelers developing Power BI DirectQuery models, developed by using either Power BI Desktop or the Power BI service. Es wird beschrieben, wie Sie Leistungsprobleme diagnostizieren und weitere Informationen darüber erhalten können, wie Berichte optimiert werden.It describes how to diagnose performance issues, and how to get more detailed information to allow reports to be optimized.

LeistungsanalysePerformance Analyzer

Es wird dringend empfohlen, die Diagnose von Leistungsproblemen in Power BI Desktop statt im Power BI-Dienst oder Power BI-Berichtsserver zu starten.It's strongly recommended that any diagnosis of performance issues starts in Power BI Desktop, rather than in Power BI (the service or Power BI Report Server). Es ist häufig der Fall, dass Leistungsprobleme einfach auf dem Leistungsgrad der zugrunde liegenden Datenquelle basieren. Diese können in der isolierteren Umgebung von Power BI Desktop einfacher identifiziert und diagnostiziert werden, und bestimmte Komponenten können zunächst entfernt werden (wie das Power BI-Gateway).It's commonly the case that performance issues are simply based on the level of performance of the underlying data source, and these are more easily identified and diagnosed in the much more isolated environment of Power BI Desktop, and initially eliminates certain components (such as the Power BI gateway). Nur wenn Leistungsprobleme nicht in Power BI Desktop vorhanden sind, sollte sich die Untersuchung auf die Eigenschaften des Berichts in Power BI fokussieren.Only if the performance issues are found to not be present with Power BI Desktop should investigation focus on the specifics of the report in Power BI. Die Leistungsanalyse ist ein nützliches Tool zum Erkennen von Problemen in diesem Prozess.The Performance Analyzer is a useful tool for identifying issues throughout this process.

Es wird auch empfohlen, zu versuchen, zunächst Probleme eines visuellen Elements zu isolieren, anstatt viele visuelle Element auf einer Seite.Similarly, it is recommended to first try to isolate any issues to an individual visual, rather than many visuals on a page.

Sofern Sie die oben in diesem Thema beschriebenen Schritte durchgeführt haben, verfügen Sie nun über ein einzelnes Visual auf einer Seite in Power BI Desktop, das noch immer träge ist.Let's say those steps (in the previous paragraphs of this topic) have been taken—we now have a single visual on a page in Power BI Desktop that is still sluggish. Sie können die Leistungsanalyse verwenden, um festzustellen, welche Abfragen von Power BI Desktop an die zugrunde liegende Quelle gesendet werden.To determine what queries are being sent to the underlying source by Power BI Desktop, you can use the Performance Analyzer. Es ist auch möglich, Ablaufverfolgungen/Diagnoseinformationen anzuzeigen, sofern solche von der zugrunde liegenden Datenquelle ausgegeben wurden.It's also possible to view traces/diagnostic information that might be emitted by the underlying data source. Solche Ablaufverfolgungen können auch nützliche Informationen über die Details über die Ausführung der Abfrage und darüber enthalten, und wie diese verbessert werden kann.Such traces might also contain useful information about the details of how the query was executed, and how it can be improved.

Darüber hinaus ist es möglich, die Abfragen, die von Power BI zusammen mit den Ausführungszeiten gesendet wurden, anzuzeigen, auch wenn keine Ablaufverfolgungen vorhanden sind, so wie unten beschrieben.Further, even in the absence of such traces from the source, it's possible to view the queries sent by Power BI, along with their execution times, as described next.

Überprüfen der AblaufverfolgungsdateienReview trace files

Standardmäßig protokolliert Power BI Desktop während einer gegebenen Sitzung Ereignisse in einer Ablaufverfolgungsdatei mit dem Namen FlightRecorderCurrent.trc.By default, Power BI Desktop logs events during a given session to a trace file called FlightRecorderCurrent.trc.

Für einige DirectQuery-Quellen enthält dieses Protokoll alle Abfragen, die an die zugrunde liegende Datenquelle gesendet wurden (die verbleibenden DirectQuery-Quellen werden bald unterstützt).For some DirectQuery sources, this log includes all queries sent to the underlying data source (the remaining DirectQuery sources may be supported in the future). Die Quellen, die Abfragen an das Protokoll schreiben, lauten wie folgt:The sources that write queries to the log are the following:

  • SQL ServerSQL Server
  • Azure SQL-DatenbankAzure SQL Database
  • Azure SQL Data WarehouseAzure SQL Data warehouse
  • OracleOracle
  • TeradataTeradata
  • SAP HANASAP HANA

Sie finden die Ablaufverfolgungsdatei im Ordner AppData für den aktuellen Benutzer: \<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspacesThe trace file can be found in the AppData folder for the current user: \<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces

Hier ist eine einfache Möglichkeit, zu diesem Ordner zu gelangen: Wählen Sie in Power BI Desktop die Optionen Datei > Optionen und Einstellungen > Optionen aus, und wählen Sie dann die Seite Diagnose aus.Here's an easy way to get to this folder: In Power BI Desktop select File > Options and settings > Options, and then select the Diagnostics page. Das folgende Dialogfeld wird angezeigt:The following dialog window appears:

Das Fenster von Power BI Desktop ist geöffnet, und die Seite „Global Diagnostics“ (Globale Diagnose) ist ausgewählt.

Wenn Sie auf Ordner mit Absturzabbild/Überwachungen öffnen klicken, wird unter „Absturzabbilderfassung“ der folgende Ordner geöffnet: \<User>\AppData\Local\Microsoft\Power BI Desktop\TracesWhen you select the Open crash dump/traces folder link, under Crash Dump Collection, the following folder opens: \<User>\AppData\Local\Microsoft\Power BI Desktop\Traces

Beim Navigieren zum übergeordneten Ordner des Ordners wird der Ordner angezeigt, der AnalysisServicesWorkspaces enthält, die einen Arbeitsbereich-Unterordner für jede offene Instanz von Power BI Desktop enthält.Navigating to that folder's parent folder displays the folder containing AnalysisServicesWorkspaces, which will contain one workspace subfolder for every open instance of Power BI Desktop. Diese Unterordner werden mit einem Integersuffix bezeichnet, z.B. AnalysisServicesWorkspace2058279583.These subfolders are named with an integer suffix, such as AnalysisServicesWorkspace2058279583.

In diesem Ordner befindet sich ein \Data-Unterordner, die die Ablaufverfolgungsdatei „FlightRecorderCurrent.trc“ für die aktuelle Power BI-Sitzung enthält.Inside that folder is a \Data subfolder that contains the trace file FlightRecorderCurrent.trc for the current Power BI session. Der entsprechende Arbeitsbereichsordner wird gelöscht, wenn die zugehörige Power BI Desktop-Sitzung endet.The corresponding workspace folder is deleted when the associated Power BI Desktop session ends.

Die Ablaufverfolgungsdateien können mithilfe des SQL Server Profiler-Tools geöffnet werden, das als kostenloser Download im Rahmen des SQL Server Management Studio verfügbar ist.The trace files can be opened by using the SQL Server Profiler tool, which is available as a free download as part of SQL Server Management Studio. Sie erhalten SSMS hier.You can get that from this location.

Nachdem Sie SQL Server Management Studio heruntergeladen und installiert haben, führen Sie den SQL Server Profiler aus.Once you download and install SQL Server Management Studio, run SQL Server Profiler.

Der SQL Server Profiler ist geöffnet.

Um die Ablaufverfolgungsdatei zu öffnen, gehen Sie folgendermaßen vor:To open the trace file, take the following steps:

  1. Wählen Sie in SQL Server Profiler Datei > Öffnen > Ablaufverfolgungsdatei aus.In SQL Server Profiler, select File > Open > Trace file
  2. Geben Sie den Pfad zur Ablaufverfolgungsdatei für die aktuell geöffnete Power BI-Sitzung ein, z. B.: \<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\DataEnter the path to the trace file for the currently open Power BI session, such as: \<User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data
  3. Öffnen von FlightRecorderCurrent.trcOpen FlightRecorderCurrent.trc

Es werden alle Ereignisse aus der aktuellen Sitzung angezeigt.All events from the current session are displayed. Ein kommentiertes Beispiel ist unten dargestellt, das Gruppen von Ereignissen markiert.An annotated example is shown below, which highlights groups of events. Jede Gruppe verfügt über Folgendes:Each group has the following:

  • Ein Ereignis für den Abfragebeginn und das Ende der Abfrage, das den Beginn und das Ende einer DAX-Abfrage darstellt, die von der Benutzeroberfläche (z.B. von einem visuellen Element oder durch Auffüllen einer Liste von Werten in der Filterbenutzeroberfläche) generiert wird.A Query Begin and Query End event, which represent the start and end of a DAX query generated by the UI (for example, from a visual, or from populating a list of values in the filter UI)
  • Ein oder mehrere Paare von Ereignissen für DirectQuery – Anfang und DirectQuery – Ende stellen eine an die zugrunde liegende Datenquelle gesendete Abfrage als Teil der Auswertung der DAX-Abfrage dar.One or more pairs of DirectQuery Begin and DirectQuery End events, which represent a query sent to the underlying data source, as part of evaluating the DAX query

Beachten Sie, dass mehrere DAX-Abfragen parallel ausgeführt werden können, damit sich Ereignisse aus verschiedenen Gruppen überlappen können.Note that multiple DAX queries can be executed in parallel, so events from different groups can be interleaved. Der Wert der Aktivitäts-ID kann verwendet werden, um zu bestimmen, welche Ereignisse zur selben Gruppe gehören.The value of the ActivityID can be used to determine which events belong to the same group.

Der SQL Server Profiler ist geöffnet.

Andere interessante Spalten sind die folgenden:Other columns of interest are as follows:

  • TextData: Die Textdetails des Ereignisses.TextData: The textual detail of the event. Für Abfragebeginn/Ende der Abfrage-Ereignisse ist dies die DAX-Abfrage.For Query Begin/End events this will be the DAX query. Für DirectQuery – Anfang/Ende-Ereignisse ist dies die SQL-Abfrage, die an die zugrunde liegende Quelle gesendet wird.For DirectQuery Begin/End events, this will be the SQL query sent to the underlying source. Der Wert TextData für das aktuell ausgewählte Ereignis wird auch im unteren Bereich angezeigt.The TextData value for the currently selected event is also displayed in the region at the bottom.
  • EndTime: Der Zeitpunkt, zu dem das Ereignis abgeschlossen wurde.EndTime: When the event completed.
  • Duration: Die Dauer in Millisekunden, die zur Ausführung der DAX- oder SQL-Abfrage benötigt wird.Duration: The duration, in milliseconds, taken to execute the DAX or SQL query.
  • Error: Gibt an, ob ein Fehler aufgetreten ist. In diesem Fall wird das Ergebnis auch rot angezeigt.Error: Indicates if an error occurred, in which case the event is also displayed in red.

In der Abbildung oben wurden einige weniger relevante Spalten verschmälert, damit die relevanten Spalten einfacher gelesen werden können.In the image above, some of the less interesting columns have been narrowed, to allow the interesting columns to be seen more easily.

Die empfohlene Vorgehensweise zum Aufzeichnen von Ablaufverfolgungsdaten, um ein mögliches Leistungsproblem zu diagnostizieren, lautet wie folgt:The recommended approach to capturing a trace to help diagnose a potential performance issue is the following:

  • Öffnen Sie eine einzelne Power BI Desktop-Sitzung (zur Vermeidung von Verwechslungen von mehreren Arbeitsbereichsordnern).Open a single Power BI Desktop session (to avoid the confusion of multiple workspace folders)
  • Führen Sie die interessanten Aktionen in Power BI Desktop aus.Perform the set of actions of interest in Power BI Desktop. Schließen Sie einige zusätzliche Aktionen mit ein, um sicherzustellen, dass die interessanten Ereignisse in die Ablaufverfolgungsdatei geleert werden.Include a few additional actions beyond that, to ensure that the events of interest are flushed into the trace file.
  • Öffnen Sie den SQL Server Profiler, und untersuchen Sie die Ablaufverfolgung, so wie vorher beschrieben.Open SQL Server Profiler and examine the trace, as described earlier. Denken Sie daran, dass die Ablaufverfolgungsdatei nach dem Schließen von Power BI Desktop gelöscht wird.Remember that the trace file will be deleted upon closing Power BI Desktop. Darüber hinaus werden zusätzliche Aktionen in Power BI Desktop nicht sofort angezeigt. Die Ablaufverfolgungsdatei muss geschlossen und noch mal geöffnet werden, um die neuen Ereignisse anzuzeigen.Also, further actions in Power BI Desktop will not immediately appear—the trace file should be closed and reopened to see the new events.
  • Halten Sie einzelne Sitzungen relativ klein (Aktionen von zehn Sekunden, nicht von hunderten), damit die Ablaufverfolgungsdatei leichter interpretiert werden kann (und weil es eine Einschränkung der Größe der Ablaufverfolgungsdatei gibt und deshalb bei langen Sitzungen die Gefahr besteht, dass frühe Ereignisse gelöscht werden).Keep individual sessions reasonably small (10 seconds of actions, not hundreds) to make it easier to interpret the trace file (and because there is a limit on the size of the trace file, thus for long sessions there is a chance of early events being dropped).

Verstehen der Abfragen, die an die Quelle gesendet werdenUnderstand queries sent to the source

Das allgemeine Format der von Power BI Desktop generierten und gesendeten Abfragen verwendet Unterabfragen für jede der Modelltabellen, auf die verwiesen wird, wobei die Unterabfrage durch die Power Query-Abfrage definiert ist.The general format of queries generated and sent by Power BI Desktop use subqueries for each of the model tables referenced, where the subquery is defined by the Power Query query. Nehmen wir z. B. an, dass die folgenden TPC-DS-Tabellen in einer relationalen Datenbank in SQL Server vorhanden sind:For example, assume the following TPC-DS tables in a SQL Server relational database:

Das Diagramm zur Modellansicht von Power BI Desktop zeigt vier Tabellen, die alle miteinander verknüpft sind.

Beachten Sie das folgende Visual und seine Konfiguration. Beachten Sie dabei, dass der Wert SalesAmount mit dem folgenden Ausdruck definiert ist:Consider the following visual and its configuration, noting that the SalesAmount measure is defined with the following expression:


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

Ein Power BI Desktop-Bericht besteht aus einem gestapelten Säulendiagramm, das den Umsatzbetrag nach Kategorie anzeigt.

Wenn Sie dieses Visual aktualisieren, ergibt dies eine T-SQL-Abfrage, die Sie im nächsten Abschnitt sehen können.Refreshing that visual will result in the T-SQL query shown below the next paragraph. Wie Sie sehen können, gibt es drei Unterabfragen für die Modelltabellen Web_Sales, Item und Date_dim.As you can tell, there are three subqueries for the Web_Sales, Item, and Date_dim model tables. Jede dieser Tabellen gibt alle Spalten der Modelltabelle zurück, obwohl durch das Visual eigentlich nur auf vier Spalten verwiesen wird.Each of these tables returns all the model table columns, even though only four columns are actually referenced by the visual. Diese Unterabfragen (sie sind schattiert) sind genau die Definition der Power Query-Abfragen.These subqueries (they're shaded) are exactly the definition of the Power Query queries. Die Verwendung von Unterabfragen beeinträchtigt nicht die Leistung für Datenquellen, die bisher für DirectQuery unterstützt wurden.Use of subqueries in this manner has not been found to impact performance, for the data sources so far supported for DirectQuery. Datenquellen wie SQL Server nehmen durch Entfernen der Verweise auf ungenutzte Spalten eine Optimierung vor.Data sources like SQL Server optimize away the references to unused columns.

Ein Grund, warum Power BI dieses Muster verwendet, ist, dass Sie eine Power Query-Abfrage definieren können, um eine bestimmte Abfrageanweisung zu verwenden.One reason Power BI employs this pattern is because you can define a Power Query query to use a specific query statement. Es wird also „wie vorgesehen“ verwendet, ohne dass versucht wird, es neu zu schreiben.So, it's used "as provided", without an attempt to rewrite it. Beachten Sie, dass dieses Muster die Verwendung von Abfrageanweisungen einschränkt, die allgemeine Tabellenausdrücke (Common Table Expressions, CTEs) und gespeicherte Prozeduren verwenden.Note that this patterns restricts using query statements that use Common Table Expressions (CTEs) and stored procedures. Diese Anweisung kann nicht in Unterabfragen verwendet werden.These statements cannot be used in subqueries.

Eine sehr detaillierte T-SQL-Abfrage zeigt eingebettete Unterabfragen, eine für jede Modelltabelle.

GatewayleistungGateway performance

Weitere Informationen zur Problembehandlung der Gatewayleistung finden Sie im Artikel Problembehandlung bei Gateways – Power BI.For information about troubleshooting gateway performance, read the Troubleshoot gateways - Power BI article.

Nächste SchritteNext steps

Weitere Informationen zu DirectQuery finden Sie in den folgenden Ressourcen:For more information about DirectQuery, check out the following resources: