Verwenden von DirectQuery mit Power BIUsing DirectQuery in Power BI

Sie können eine Verbindung mit allen möglichen verschiedenen Datenquellen herstellen, wenn Sie Power BI Desktop oder den Power BI-Dienst verwenden, und es gibt unterschiedliche Möglichkeiten, diese Datenverbindungen herzustellen.You can connect to all sorts of different data sources when using Power BI Desktop or the Power BI service, and you can make those data connections in different ways. Sie können entweder Daten in Power BI importieren, was die gängigste Methode ist, Daten abzurufen. Alternativ können Sie eine Direktverbindung zu Daten im ursprünglichen Quellrepository herstellen, was als DirectQuery bekannt ist.You can either import data to Power BI, which is the most common way to get data, or you can connect directly to data in its original source repository, which is known as DirectQuery. Dieser Artikel beschreibt DirectQuery und die zugehörigen Funktionen, einschließlich der folgenden Themen:This article describes DirectQuery and its capabilities, including the following topics:

  • Verschiedene Konnektivitätsoptionen für DirectQueryDifferent connectivity options for DirectQuery
  • Leitfaden für die Situation, in der Sie DirectQuery dem Import vorziehen solltenGuidance for when you should consider using DirectQuery rather than import
  • Nachteile der Verwendung von DirectQueryDrawbacks of using DirectQuery
  • Bewährte Methode für die Verwendung von DirectQueryBest practice for using DirectQuery

Kurz gesagt besteht die bewährte Methode für die Verwendung von Import im Vergleich zu DirectQuery aus Folgendem:In short, the best practice for using import versus DirectQuery is the following:

  • Importieren Sie Dateien in Power BI, wann immer dies möglich ist.You should import data to Power BI wherever possible. Dadurch wird das leistungsstarke Abfragemodul von Power BI genutzt, und Sie erhalten eine hoch interaktive und vollständig ausgestattete Erfahrung über Ihre Daten.This takes advantage of the high performance query engine of Power BI, and provides a highly interactive and fully featured experience over your data.
  • Wenn Ihre Ziele nicht durch den Import von Daten erreicht werden können, erwägen Sie, DirectQuery zu verwenden.If your goals can't be met by importing data, then consider using DirectQuery. DirectQuery ist womöglich die beste Wahl, wenn sich die Daten z.B. oft ändern und Berichte die neuesten Daten wiedergeben müssen.For example, if the data is changing frequently and reports must reflect the latest data, DirectQuery may be best. Die Verwendung von DirectQuery ist jedoch im Allgemeinen nur möglich, wenn die zugrunde liegende Datenquelle interaktive Abfragen (weniger als 5 Sekunden) für die typische Aggregatabfrage bereitstellen und die Abfragelast behandeln kann, die generiert wird.However, using DirectQuery is generally only be feasible when the underlying data source can provide interactive queries (less than 5 seconds) for the typical aggregate query, and is able to handle the query load that will be generated. Darüber hinaus muss die Liste der Einschränkungen, die die Verwendung von DirectQuery begleitet, sorgfältig geprüft werden, um sicherzustellen, dass Ihre Ziele weiterhin erfüllt werden können.Additionally, the list of limitations that accompany use of DirectQuery should be considered carefully, to ensure your goals can still be met.

Die Reihe der Funktionen, die von Power BI für beide Konnektivitätsmodi – Import und DirectQuery – angeboten wird, wird mit der Zeit weiterentwickelt.The set of capabilities offered by Power BI for both connectivity modes – import and DirectQuery - will evolve over time. Dadurch wird mehr Flexibilität beim Verwenden importierter Daten bereitgestellt, damit der Import in mehr Fällen genutzt werden kann. Es werden zudem einige Nachteile der Verwendung von DirectQuery entfernt.This will include providing more flexibility when using imported data, such that import can be used in more cases, as well as eliminating some of the drawbacks of using DirectQuery. Unabhängig von den Verbesserungen wird die Leistung der zugrunde liegenden Datenquelle bei Verwendung von DirectQuery immer ein wichtiger Gesichtspunkt bleiben.Regardless of improvements, when using DirectQuery the performance of the underlying data source will always remain a major consideration. Wenn die zugrunde liegende Datenquelle langsam ist, dann bleibt die Verwendung von DirectQuery für diese Quelle nicht durchführbar.If that underlying data source is slow, then using DirectQuery for that source it will remain unfeasible.

Dieses Thema behandelt DirectQuery mit Power BI und nicht SQL Server Analysis Services.This topic covers DirectQuery with Power BI, and not SQL Server Analysis Services. DirectQuery ist auch eine Funktion von SQL Server Analysis Services, und viele der unten beschriebenen Details gelten für die Verwendung, aber es gibt auch wichtige Unterschiede.DirectQuery is also a feature of SQL Server Analysis Services, and many of the details described below apply to its use, there are also important differences. Informationen zur Verwendung von DirectQuery mit SQL Server Analysis Services finden Sie im Whitepaper, das DirectQuery in SQL Server Analysis Services 2016 erklärt.For information about using DirectQuery with SQL Server Analysis Services, see the whitepaper that details DirectQuery in SQL Server Analysis Services 2016.

Dieser Artikel konzentriert sich auf den empfohlenen Workflow für DirectQuery, wo der Bericht in Power BI Desktop erstellt wird, es wird aber auch die direkte Verbindung im Power BI-Dienst behandelt.This article focuses on the recommended workflow for DirectQuery, where the report is created in Power BI Desktop, but also covers connecting directly in the Power BI service.

Power BI-KonnektivitätsmodiPower BI connectivity modes

Power BI stellt eine Verbindung mit einer Vielzahl unterschiedlicher Datenquellen her, was Folgendes umfasst:Power BI connects to a very large number of varied data sources, encompassing:

  • Online-Dienste (Salesforce, Dynamics 365 und andere)Online services (Salesforce, Dynamics 365, others)
  • Datenbanken (SQL Server, Access, Amazon Redshift, andere)Databases (SQL Server, Access, Amazon Redshift, others)
  • Einfache Dateien (Excel, JSON, andere)Simple files (Excel, JSON, others)
  • Andere Datenquellen (Spark, Websites, Microsoft Exchange, andere)Other data sources (Spark, Web sites, Microsoft Exchange, others)

Für diese Datenquellen können die Daten in der Regel in Power BI importiert werden.For these sources, it's usually possible to import the data to Power BI. Es ist auch möglich, dass einige eine Verbindung mithilfe von DirectQuery herstellen.For some it is also possible to connect using DirectQuery. Der exakte Satz der Quellen, der DirectQuery unterstützt, ist im Artikel Data Sources supported by DirectQuery (Von DirectQuery unterstützte Datenquellen) aufgeführt.The exact set of sources that support DirectQuery is described in the Data Sources supported by DirectQuery article. Viele Quellen werden in Zukunft für DirectQuery aktiviert, wobei man sich hauptsächlich auf Quellen konzentriert, von denen man erwarten kann, dass sie eine gute interaktive Abfrageleistung abliefern.More sources will be DirectQuery enabled in the future, focusing primarily on sources that can be expected to deliver good interactive query performance.

SQL Server Analysis Services ist ein Sonderfall.SQL Server Analysis Services is a special case. Beim Herstellen einer Verbindung mit SQL Server Analysis Services können Sie auswählen, die Daten zu importieren oder eine Liveverbindung zu nutzen.When connecting to SQL Server Analysis Services, you can choose to import the data, or use a live connection. Die Verwendung einer Liveverbindung ähnelt DirectQuery in dem Punkt, dass keine Daten importiert werden und die zugrunde liegende Datenquelle immer abgefragt wird, um ein visuelles Element zu aktualisieren. Die Liveverbindung unterscheidet sich aber in vielen anderen Punkten, deshalb wird eine andere Benennung (Live versus DirectQuery) verwendet.Using a live connection is similar to DirectQuery, in that no data is imported, and the underlying data source is always queried to refresh a visual, but a live connection is different in many other regards, so a different term (live versus DirectQuery) is used.

Die drei Optionen zum Herstellen einer Verbindung zu Daten – Importieren, DirectQuery und Liveverbindung – werden in den folgenden Abschnitten genauer erklärt.These three options for connecting to data – import, DirectQuery, and live connection – are explained in detail in the following sections.

Importieren von VerbindungenImport connections

Wenn Sie Abrufen von Daten in Power BI Desktop verwenden, um eine Verbindung zu einer Datenquelle wie SQL Server herzustellen, und Sie Importieren auswählen, ist das Verhalten dieser Verbindung wie folgt:When using Get Data in Power BI Desktop to connect to a data source like SQL Server, and you choose Import, the behavior of that connection is as follows:

  • Während der anfänglichen Abrufen von Daten-Erfahrung definiert jeder ausgewählte Satz von Tabellen eine Abfrage, die einen Satz von Daten zurückgibt (diese Abfragen können vor dem Laden der Daten bearbeitet werden, um z.B. Filter hinzuzufügen, die Daten zu aggregieren oder unterschiedliche Tabellen zu verknüpfen).During the initial Get Data experience, the set of tables selected each define a query that will return a set of data (those queries can be edited prior to loading the data, for example to apply filters, or aggregate the data, or join different tables).
  • Nach dem Laden werden alle durch diese Abfragen definierten Daten in den Power BI-Cache importiert.Upon load, all of the data defined by those queries will be imported into the Power BI cache.
  • Beim Erstellen eines visuellen Elements in Power BI Desktop werden die importierten Daten abgefragt.Upon building a visual within Power BI Desktop, the imported data will be queried. Der Power BI-Speicher stellt sicher, dass die Abfrage schnell ist, da alle Änderungen am visuellen Element sofort wiedergegeben werden.The Power BI store ensures the query will be very fast, hence all changes to the visual will be reflected immediately.
  • Änderungen an den zugrunde liegenden Daten werden in keinem visuellen Element wiedergegeben.Any changes to the underlying data will not be reflected in any visuals. Es ist notwendig, zu aktualisieren, wonach die Daten wieder importiert werden.It is necessary to Refresh, whereupon the data will be re-imported.
  • Beim Veröffentlichen des Berichts (die PBIX-Datei) im Power BI-Dienst wird ein Dataset erstellt und in den Power BI-Dienst hochgeladen.Upon publishing the report (the .pbix file) to the Power BI service, a dataset is created and uploaded to the Power BI service. Die importierten Daten ist in diesem Dataset enthalten.The imported data is included with that dataset. Es ist möglich, eine planmäßige Aktualisierung der Daten einzurichten, z.B. um die Daten jeden Tag neu zu importieren.It is then possible to set up scheduled refresh of that data, for example, to re-import the data every day. Abhängig vom Speicherort der ursprünglichen Datenquelle ist es möglicherweise erforderlich, ein lokales Datengateway zu konfigurieren.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway.
  • Beim Öffnen eines vorhandenen Berichts im Power BI-Dienst oder beim Erstellen eines neuen Berichts werden die importierten Daten erneut abgefragt, wodurch die Interaktivität sichergestellt wird.When opening an existing report in the Power BI service, or authoring a new report, the imported data is queried again, ensuring interactivity.
  • Visuelle Elemente oder die gesamten Berichtsseiten können als Dashboardkacheln angeheftet werden.Visuals, or entire report pages, can be pinned as dashboard tiles. Die Kacheln werden automatisch aktualisiert, sobald das zugrunde liegende Dataset aktualisiert wird.The tiles will be automatically refreshed whenever the underlying dataset is refreshed.

DirectQuery-VerbindungenDirectQuery connections

Wenn Sie Daten abrufen in Power BI Desktop verwenden, um eine Verbindung zu einer Datenquelle herzustellen, und DirectQuery wählen, so ist das Verhalten dieser Verbindung wie folgt:When using Get Data in Power BI Desktop to connect to a data source, and you choose DirectQuery, the behavior of that connection is as follows:

  • Während der anfänglichen Erfahrung von Daten abrufen wird die Quelle ausgewählt.During the initial Get Data experience, the source is selected. Für relationale Datenquellen bedeutet dies, dass ein Satz von Tabellen ausgewählt wird, und jede Tabelle definiert weiterhin eine Abfrage, die logisch einen Satz von Daten zurückgibt.For relational sources, this means a set of tables are selected and each still define a query that logically returns a set of data. Für mehrdimensionale Datenquellen wie SAP BW wird nur die Quelle ausgewählt.For multidimensional sources like SAP BW, only the source is selected.
  • Allerdings werden nach dem Laden tatsächlich keine Daten in den Power BI-Speicher importiert.However, upon load, no data will actually be imported into the Power BI store. Stattdessen werden nach der Erstellung eines visuellen Elements in Power BI Desktop Abfragen an die zugrunde liegende Datenquelle gesendet, um die erforderlichen Daten abzurufen.Instead, upon building a visual within Power BI Desktop, queries will be sent to the underlying data source to retrieve the necessary data. Die Zeit, die dann für die Aktualisierung des visuellen Elements benötigt wird, hängt von der Leistung der zugrunde liegenden Datenquelle ab.The time then taken to refresh the visual will depend on the performance of the underlying data source.
  • Alle Änderungen an den zugrunde liegenden Daten werden nicht sofort in jedem vorhandenen visuellen Element wiedergegeben werden.Any changes to the underlying data will not be immediately reflected in any existing visuals. Es ist weiterhin erforderlich, eine Aktualisierung durchzuführen, wonach die benötigten Abfragen für jedes visuelle Element erneut gesendet werden, und das visuelle Element dann wie nötig aktualisiert wird.It is still necessary to Refresh, whereupon the necessary queries will be resent for each visual, and the visual updated as necessary.
  • Nach dem Veröffentlichen des Berichts im Power BI-Dienst ergibt sich erneut ein Dataset im Power BI-Dienst, genau wie beim Import.Upon publishing the report to the Power BI service, it will again result in a Dataset in the Power BI service, just as for import. Allerdings sind in diesem Dataset keine Daten enthalten.However, no data is included with that dataset.
  • Beim Öffnen eines vorhandenen Bericht oder beim Erstellen eines neuen im Power BI-Dienst wird die zugrunde liegende Datenquelle erneut abgefragt, um die benötigten Daten abzurufen.When opening an existing report in the Power BI service, or authoring a new one, the underlying data source is again queried to retrieve the necessary data. Abhängig vom Speicherort der ursprünglichen Datenquelle ist es möglicherweise erforderlich, ein lokales Datengateway zu konfigurieren. Dieses wird ebenso für den Importmodus benötigt, wenn die Daten aktualisiert werden.Depending upon the location of the original data source, it might be necessary to configure an on-premises data gateway, just as is needed for Import mode if the data is refreshed.
  • Visuelle Elemente oder die gesamten Berichtsseiten können als Dashboardkacheln angeheftet werden.Visuals, or entire report pages, can be pinned as Dashboard tiles. Um sicherzustellen, dass das Öffnen eines Dashboards schnell ausgeführt wird, werden die Kacheln nach einem Zeitplan (z.B. einmal pro Stunde) automatisch aktualisiert.To ensure that opening a dashboard will be fast, the tiles are automatically refreshed on a schedule (for example, every hour). Die Häufigkeit dieser Aktualisierung kann gesteuert werden, um widerzuspiegeln, wie oft sich die Daten ändern und wie wichtig es ist, die neuesten Daten zu sehen.The frequency of this refresh can be controlled, to reflect how frequently the data is changing, and how important it is to see the very latest data. Daher geben die Kacheln beim Öffnen eines Dashboards die Daten vom Zeitpunkt der letzten Aktualisierung wider und nicht unbedingt die neuesten Änderungen, die an der zugrunde liegenden Quelle vorgenommen wurden.Thus, when opening a dashboard, the tiles will reflect the data as of the time of the last refresh, and not necessarily the very latest changes made to the underlying source. Ein neues Dashboard kann immer aktualisiert werden, um sicherzustellen, dass es auf dem neuesten Stand ist.An open dashboard can always be Refreshed to ensure it is up-to-date.

LiveverbindungenLive connections

Beim Herstellen einer Verbindung mit SQL Server Analysis Services (SSAS) besteht die Option zum Importieren von Daten aus oder zum Herstellen einer Liveverbindung zum ausgewählten Datenmodell.When connecting to SQL Server Analysis Services (SSAS), there is an option to either import data from, or connect live to, the selected data model. Wenn Sie Importieren auswählen, definieren Sie eine Abfrage für die externe SSAS-Quelle, und die Daten werden als „normal“ importiert.If you select import, then you define a query against that external SSAS source, and the data is imported as normal. Wenn Sie Live verbinden auswählen, gibt es keine definierte Abfrage, und das gesamte externe Modell wird in der Feldliste angezeigt.If you select to connect live then there is no query defined, and the entire external model is shown in the field list. Wenn Sie DirectQuery auswählen, werden wenn visuelle Elemente erstellt werden, Abfragen an die externe SSAS-Quelle gesendet.If you select DirectQuery, as visuals are built, queries are sent to the external SSAS source. Im Gegensatz zu DirectQuery liegt jedoch kein Sinn darin, ein neues Modell zu erstellen. Anders ausgedrückt: Es ist nicht möglich, neu berechnete Spalten, Hierarchien, Beziehungen usw. zu erstellen.However, unlike DirectQuery, there is no sense in which a new model is being created; in other words, it's not possible to define new calculated columns, hierarchies, relationships, and so on. Stattdessen stellen Sie einfach direkt eine Verbindung mit dem externen SSAS-Modell her.Instead you are simply connecting directly to the external SSAS model.

Die im vorherigen Absatz beschriebene Situation gilt auch für das Herstellen einer Verbindung mit den folgenden Quellen, mit dem Unterschied, dass es keine Option zum Importieren der Daten gibt:The situation described in the previous paragraph applies to connecting to the following sources as well, except that there is no option to import the data:

  • Power BI-Datasets (z.B. beim Herstellen einer Verbindung zu einem Power BI-Dataset, das zuvor erstellt und im Dienst veröffentlicht wurde, und um einen neuen Bericht darüber zu erstellen)Power BI datasets (for example, when connecting to a Power BI dataset that has previously been created and published to the service, to author a new report over it)
  • Common Data ServiceCommon Data Services

Das Verhalten von Berichten via SSAS nach der Veröffentlichung im Power BI-Dienst ist den DirectQuery-Berichten in folgenden Punkten ähnlich:The behavior of reports over SSAS, upon publishing to the Power BI service, is similar to DirectQuery reports in the following ways:

  • Beim Öffnen eines vorhandenen Berichts im Power BI-Dienst oder beim Schreiben eines neuen Berichts wird die zugrunde liegende SSAS-Quelle abgefragt (wobei möglicherweise ein lokales Datengateway erforderlich ist).When opening an existing report in the Power BI service or authoring a new report, the underlying SSAS source is queried (possibly requiring an on-premises data gateway)
  • Dashboardkacheln werden automatisch nach einem Zeitplan aktualisiert (z.B. einmal pro Stunde oder wie auch immer die Häufigkeit definiert ist)Dashboard tiles are automatically refreshed on a schedule (such as every hour, or whatever frequency is defined)

Es gibt jedoch auch wichtige Unterschiede, z.B. wird für die Liveverbindung die Identität des Benutzers, der den Bericht öffnet, immer an die zugrunde liegende SSAS-Quelle übergeben.However, there are also important differences, including that for live connections the identity of the user opening the report will always be passed to the underlying SSAS source.

Schieben wir nun diese Vergleiche beiseite und konzentrieren uns im restlichen Artikel nur auf DirectQuery.With these comparisons out of the way, let's focus solely on DirectQuery for the rest of this article.

Wann ist DirectQuery sinnvoll?When is DirectQuery useful?

Die folgende Tabelle beschreibt Szenarios, in denen die Verbindung mit DirectQuery besonders nützlich sein kann. Es werden zudem Fälle behandelt, in denen es als vorteilhaft angesehen wird, wenn die Daten in der ursprünglichen Quelle gelassen werden würden.The following table describes scenarios where connecting with DirectQuery could be especially useful, including cases where leaving the data in the original source would be considered beneficial. Die Beschreibung umfasst eine Diskussion darüber, ob das angegebene Szenario in Power BI verfügbar ist.The description includes a discussion about whether the specified scenario is available in Power BI.

EinschränkungLimitation BeschreibungDescription
Daten werden häufig geändert, und es ist eine Berichterstellung erforderlich, die näher an der „Echtzeit“ ist.Data is changing frequently, and near ‘real-time’ reporting is needed Modelle mit importierten Daten können höchstens einmal pro Stunde aktualisiert werden.Models with Imported data can be refreshed at most once per hour. Wenn sich daher Daten kontinuierlich ändern, und Berichte die neuesten Daten zeigen müssen, dann ist die Verwendung des Imports mit geplanter Aktualisierung womöglich einfach nicht für Bedürfnisse dieser Art geeignet.Hence, if the data is continually changing, and it is necessary for reports to show the latest data, then using Import with scheduled refresh might simply not meet those needs. Beachten Sie außerdem, dass es auch möglich ist, Daten direkt in Power BI zu streamen, obwohl es Grenzwerte für die für diesen Fall unterstützten Datenvolumen gibt.Note also that it is also possible to stream data directly into Power BI, though there a limits on the data volumes supported for this case.

Wenn Sie im Gegensatz dazu DirectQuery verwenden, bedeutet dies, dass beim Öffnen oder Aktualisieren eines Berichts oder Dashboards immer die neuesten Daten in der Datenquelle angezeigt werden.Using DirectQuery, by contrast, means that opening or refreshing a report or dashboard will always show the latest data in the source. Darüber hinaus können die Dashboardkacheln häufiger (alle 15 Minuten) aktualisiert werden.Additionally, the dashboard tiles can be updated more frequently (as often as every 15 mins).
Die Datenmenge ist sehr großData is very large Wenn die Daten sehr groß sind, dann ist es sicherlich nicht praktikabel, alle zu importieren.If the data is very large, then it certainly would not be feasible to import it all. DirectQuery erfordert im Gegensatz dazu keinen großen Datentransfer, da die Abfrage direkt durchgeführt wird.DirectQuery, by contrast, requires no large transfer of data, as it is queried in place.

Jedoch implizieren große Daten auch, dass die Leistung der Abfragen für die zugrunde liegende Quelle zu langsam ist (dies wird später in diesem Artikel unter Auswirkungen der Verwendung von DirectQuery behandelt).However, large data might also imply that the performance of the queries against that underlying source are too slow (as discussed in Implications of using DirectQuery section, later in this article). Es ist natürlich nicht immer notwendig, die vollständig detaillierten Daten zu importieren.And of course it is not always necessary to import the full detailed data. Stattdessen können die Daten während des Imports vorher aggregiert werden (und der Abfrage-Editor vereinfacht dies).Instead the data can be pre-aggregated during import (and Query Editor makes it easy to do exactly this). Im Extremfall wäre es möglich, genau die aggregierten Daten zu importieren, die für jedes visuelle Element benötigt werden.In the extreme it would be possible to import exactly the aggregate data needed for each visual. Obwohl DirectQuery die einfachste Möglichkeit für große Daten ist, sollten Sie immer bedenken, dass das Importieren von Aggregatdaten möglicherweise eine Lösung bieten kann, wenn die zugrunde liegende Quelle zu langsam ist.So while DirectQuery is the simplest approach to large data, you should always keep in mind that importing aggregate data might offer a solution if the underlying source is too slow.
Sicherheitsregeln werden in der zugrunde liegenden Datenquelle definiertSecurity rules are defined in the underlying source Wenn die Daten importiert werden, verbindet sich Power BI mit der Datenquelle entweder über die aktuellen Anmeldeinformationen des Benutzers (von Power BI Desktop) oder mit den Anmeldeinformationen, die Teil der Konfigurierung der geplanten Aktualisierung sind.When the data is imported, Power BI will connect to the data source using the current users credentials (from Power BI Desktop), or the credentials defined as part of configuring scheduled refresh (from the Power BI service). Wenn solch ein Bericht veröffentlicht und freigegeben wird, müssen Sie deshalb Sorgfalt walten lassen, damit dieser nur mit Benutzern geteilt wird, die dieselben Daten sehen dürfen oder dass Sicherheit auf Zeilenebene als Teil des Dataset definiert ist.Thus, in publishing and sharing such a report, care must be taken to only share with users allowed to see the same data, or to define Row Level Security as part of the dataset.

Da DirectQuery immer die zugrunde liegende Datenquelle abfragt, würde im Idealfall jede Sicherheitsmaßnahme in dieser zugrunde liegenden Quelle zugelassen werden, die angewendet werden soll.Ideally, because DirectQuery always queries the underlying source, this would allow any security in that underlying source to be applied. Allerdings wird Power BI derzeit immer eine Verbindung mit der zugrunde liegenden Quelle mithilfe der gleichen Anmeldeinformationen herstellen, die auch für den Import verwendet werden würden.However, today Power BI will always connect to the underlying source using the same credentials as would be used for Import.

Bis zu dem Zeitpunkt, da Power BI zulässt, dass die Identität des Berichtsconsumers an die zugrunde liegende Quelle übermittelt wird, bietet DirectQuery also keine Vorteile im Hinblick auf die Datenquellensicherheit.Thus, until Power BI allows for the identity of the report consumer to pass through to the underlying source, DirectQuery offers no advantages with regard to data source security.
Einschränkungen der Datensouveränität geltenData sovereignty restrictions apply Einige Organisationen verfügen über Richtlinien zur Datensouveränität, d.h., dass Daten die Organisation nicht verlassen können.Some organizations have policies around data sovereignty, meaning that data cannot leave the organization premises. Eine Lösung, die auf Import basiert, würde ganz klar Probleme darstellen.A solution based on import would clearly present issues. Im Gegensatz dazu verbleiben Daten mit DirectQuery in der zugrunde liegenden Quelle.By contrast, with DirectQuery that data remains in the underlying source.

Allerdings sollte darauf hingewiesen werden, dass sogar mit DirectQuery einige Caches von Daten auf der visuellen Ebene im Power BI-Dienst (aufgrund einer geplanten Aktualisierung von Kacheln) beibehalten werden.However, it should be noted that even with DirectQuery, some caches of data at the visual level are retained in the Power BI service (due to scheduled refresh of tiles).
Die zugrunde liegende Datenquelle ist eine OLAP-Quelle und enthält MeasuresUnderlying data source is an OLAP source, containing measures Wenn die zugrunde liegende Datenquelle Measures enthält (z.B. SAP HANA oder SAP Business Warehouse), dann führt das Importieren der Daten zu anderen Problemen.If the underlying data source contains *measures *(such as SAP HANA or SAP Business Warehouse) then importing the data brings other issues. Dies bedeutet, dass sich die importierten Daten auf einer bestimmten Aggregationsebene befinden, so wie von der Abfrage definiert.It means that the data imported is at a particular level of aggregation, as defined by the query. Messen Sie z.B. TotalSales nach Klasse, Jahr und Stadt.For example, measure TotalSales by Class, Year, and City. Wenn ein visuelles Element erstellt wird und dann nach Daten auf einem Aggregat einer höheren Ebene fragt (z.B: TotalSales nach Jahr), wird der Aggregatwert weiter aggregiert.Then if a visual is built asking for data at a higher level aggregate (such as TotalSales by Year) it is further aggregating the aggregate value. Für additive Measures (wie Sum, Min) ist dies kein Problem, es kann jedoch für nicht additive Measures (z.B. Average, DistinctCount) ein Problem darstellen.This is fine for additive measures (such as Sum, Min) but it's an issue for non-additive (such as Average, DistinctCount).

Um das Abrufen der korrekten Aggregatdaten (die für ein bestimmtes visuelles Element benötigt werden) direkt aus der Quelle zu vereinfachen, wäre es notwendig, Abfrage per visuellem Element zu senden, so wie in DirectQuery.To make it easy to get the correct aggregate data (as needed for the particular visual) directly from the source, it would be necessary to send queries per visual, as in DirectQuery.

Beim Verbindungsaufbau zu SAP Business Warehouse (BW) ermöglicht die Auswahl von DirectQuery diese Behandlung von Measures.When connecting to SAP Business Warehouse (BW), choosing DirectQuery allows for this treatment of measures. Unterstützung für SAP BW wird unter DirectQuery und SAP BW weiter behandelt.Support for SAP BW is covered further in DirectQuery and SAP BW.

Allerdings wird die Datenquelle derzeit von DirectQuery via SAP HANA genauso wie eine relationale Quelle behandelt, was sich auch beim Verhalten für den Import widerspiegelt.However, currently DirectQuery over SAP HANA treats it the same as a relational source, and hence provides similar behavior to import. Dieser Vorgang wird unter DirectQuery und SAP HANA weiter beschrieben.This is covered further in DirectQuery and SAP HANA.

Wenn man zusammengefasst die aktuellen Funktionen von DirectQuery in Power BI mit einbezieht, sind die vorteilhaften Szenarios die folgenden:So in summary, given the current capabilities of DirectQuery in Power BI, the scenarios where it offers benefits are the following:

  • Daten werden häufig geändert, und es ist eine Berichterstellung erforderlich, die näher an der „Echtzeit“ istData is changing frequently, and near ‘real-time’ reporting is needed
  • Behandlung von sehr großen Datenmengen, ohne die Notwendigkeit, vorab zu aggregierenHandling very large data, without the need to pre-aggregate
  • Einschränkungen der Datensouveränität geltenData sovereignty restrictions apply
  • Die Quelle ist eine multidimensionale Quelle mit Measures (z.B. SAP BW)The source is a multi dimensional source containing measures (such as SAP BW)

Beachten Sie, dass sich die Details in der vorherigen Liste auf die Verwendung von Power BI allein beziehen.Note that the details in the previous list relate to the use of Power BI alone. Es gibt immer die Möglichkeit, stattdessen ein externes Modell von SQL Server Analysis Services (oder Azure Analysis Services) zu verwenden, um Daten zu importieren, und dann Power BI zu verwenden, um eine Verbindung mit diesem Modell herzustellen.There is always the option of instead using an external SQL Server Analysis Services (or Azure Analysis Services) model to import data, and then using Power BI to connect to that model. Während dieser Ansatz zusätzliche Fähigkeiten erfordern würde, bietet er jedoch größere Flexibilität.While that approach would require additional skills, it does provide greater flexibility. Größere Datenvolumen können z.B. importiert werden, und es gibt keine Einschränkung dafür, wie regelmäßig die Daten aktualisiert werden können.For example, much larger volumes of data can be imported, and there is no restriction on how frequently the data can be refreshed.

Auswirkungen der Verwendung von DirectQueryImplications of using DirectQuery

Die Verwendung von DirectQuery hat negative Auswirkungen, die in diesem Abschnitt aufgeführt sind.Use of DirectQuery does have potentially negative implications, as detailed in this section. Einige dieser Einschränkungen unterscheiden sich geringfügig je nach der genauen Quelle, die verwendet wird.Some of those limitations are slightly different depending upon the exact source that is being used. Es wird ggf. darauf hingewiesen, und separate Themen behandeln diese Quellen, die sich wesentlich unterscheiden.This will be called out where applicable, and separate topics cover those sources that are substantially different.

Leistung von und Last auf der zugrunde liegenden QuellePerformance and load on the underlying source

Bei Verwendung von DirectQuery hängt die allgemeine Erfahrung sehr von der Leistung der zugrunde liegenden Datenquelle ab.When using DirectQuery, the overall experience depends very much on the performance of the underlying data source. Wenn jedes visuelle Element (z.B. nach Änderung eines Datenschnittwerts) einige Sekunden benötigt (< 5s), dann wäre die Erfahrung akzeptabel, würde aber möglicherweise etwas träge im Vergleich zur sofortigen Antwort wirken, die wir beim Importieren von Daten in Power BI gewohnt sind.If refreshing each visual (for example, after changing a slicer value) takes a few seconds (<5s) then the experience would be reasonable, yet might still feel sluggish compared to the immediate response we are used to when importing the data to Power BI. Wenn die Langsamkeit der Quelle stattdessen bedeutet, dass einzelne visuelle Elemente mehr Zeit brauchen (etwa zehn Sekunden), wird die Erfahrung extrem unzureichend, sodass auch die Zeitbegrenzung der Abfragen überschritten werden kann.If instead the slowness of the source means that individual visuals take longer than that (tens of seconds), then the experience becomes extremely poor, possibly even to the point of queries timing out.

Zusammen mit der Leistung der zugrunde liegenden Quelle sollte die Last, die darauf platziert wird (die natürlich dann oft die Leistung beeinträchtigt) sorgfältig abgewägt werden.Along with the performance of the underlying source, careful consideration should be paid to the load that will be placed upon it (that of course then often impacts the performance). Wie weiter unten dargestellt, übermittelt jeder Benutzer, der den freigegebenen Bericht öffnet, und jede Dashboardkachel, die regelmäßig aktualisiert wird, mindestens eine Abfrage pro visuellem Element an die zugrunde liegende Quelle.As discussed further below, each user that opens a shared report, and each dashboard tile that is periodically refreshed, will be sending at least one query per visual to the underlying source. Dies erfordert, dass die Quelle solch eine Abfragelast verarbeiten kann, während sie gleichzeitig eine akzeptable Leistung beibehält.This fact requires that the source be able to handle such a query load, while still maintaining reasonable performance.

Beschränkt auf eine einzelne QuelleLimited to a single source

Beim Importieren von Daten ist es möglich, Daten aus mehreren Quellen in einem einzelnes Modell zu kombinieren, um z.B. Daten aus einer SQL Server-Unternehmensdatenbank mit lokalen Daten, die in einer Excel-Datei verwaltet werden, einfach zu verbinden.When importing data, it is possible to combine data from multiple sources into a single model, for example, to easily join some data from a corporate SQL Server database with some local data maintained in an Excel file. Dies ist nicht möglich, wenn Sie DirectQuery verwenden.This is not possible when using DirectQuery. Wenn Sie DirectQuery für eine Quelle auswählen, wird nur möglich sein, Daten aus dieser einzelnen Quelle (z.B. eine einzelne SQL Server-Datenbank) zu verwenden.When selecting DirectQuery for a source, it will then only be possible to use data from that single source (such as a single SQL Server database).

Begrenzte DatentransformationenLimited data transformations

Es bestehen ähnliche Einschränkungen bei Datentransformationen, die innerhalb des Abfrage-Editors angewendet werden können.Similarly, there are limitations in the data transformations that can be applied within Query Editor. Mit importierten Daten kann eine ausgefeilte Reihe von Transformationen einfach angewendet werden, um die Daten zu bereinigen und neu zu gestalten, bevor diese zum Erstellen von visuellen Elementen verwendet werden (z.B. JSON-Dokumente analysieren oder Daten aus einer Spalte in eine zeilenorientierte Form pivotieren).With imported data, a sophisticated set of transformations can easily be applied to clean and re-shape the data before using it to create visuals (such as parsing JSON documents, or pivoting data from a column to a row orientated form). Diese Transformationen sind in DirectQuery beschränkter.Those transformations are more limited in DirectQuery. Zunächst können beim Herstellen einer Verbindung zu einer OLAP-Quelle wie SAP Business Warehouse gar keine Transformationen definiert werden, und das gesamte externe „Modell“ wird aus der Quelle übernommen.First, when connecting to an OLAP source like SAP Business Warehouse, no transformations can be defined at all, and the entire external ‘model’ is taken from the source. Für relationale Quellen wie SQL Server ist es noch immer möglich, eine Reihe von Transformationen pro Abfrage zu bestimmen. Diese Transformationen sind jedoch aus Leistungsgründen eingeschränkt.For relational sources like SQL Server, it is still possible to define a set of transformations per query, but those transformations are limited, for performance reasons. All diese Transformationen müssen auf jede Abfrage für die zugrunde liegende Quelle und nicht nur einmal auf die Datenaktualisierung angewendet werden, damit sie auf die Transformationen beschränkt sind, die halbwegs in eine einzelne native Abfrage übertragen werden können.Any such transformation will need to be applied on every query to the underlying source, rather than once on data refresh, so they are limited to those transformations that can reasonably be translated into a single native query. Wenn Sie eine Transformation verwenden, die zu komplex ist, erhalten Sie einen Fehler, der angibt, dass sie entweder gelöscht oder das Modell in den Importmodus versetzt werden muss.If you use a transformation that is too complex, then you will receive an error that either it must be deleted, or the model switched to Import mode.

Zusätzlich wird die Abfrage, die sich aus dem Dialogfeld Daten abrufen oder Abfrage-Editor ergibt, in einem untergeordneten SELECT-Ausdruck zusammen mit den generierten Abfragen verwendet und versendet, um die erforderlichen Daten für das visuelle Element zu empfangen.Additionally, the query that results from the Get Data dialog or Query Editor will be used in a subselect within the queries generated and sent to retrieve the necessary data for a visual. Daher muss die im Abfrage-Editor definierte Abfrage in diesem Kontext gültig sein.Thus the query defined in Query Editor must be valid within this context. Das bedeutet insbesondere, dass es weder möglich ist, eine Abfrage mithilfe von allgemeinen Tabellenausdrücken zu verwunden, noch eine Abfrage, die gespeicherte Prozeduren aufruft.In particular this means it is not possible to use a query using Common Table Expressions, nor that invokes Stored Procedures.

ModellierungseinschränkungenModelling limitations

Der Begriff Modellierung bezeichnet in diesem Kontext den Vorgang zum Verfeinern und Anreichern der Rohdaten im Rahmen der Erstellung von Berichten, in denen sie verwendet werden.The term modelling in this context means the act of refining and enriching the raw data, as part of authoring a report using it. Beispiele:Examples include:

  • Definieren von Beziehungen zwischen TabellenDefining relationships between tables
  • Hinzufügen von neuen Berechnungen (berechnete Spalten und Measures)Adding new calculations (calculated columns and measures)
  • Umbenennen und Ausblenden von Spalten und MeasuresRenaming and hiding columns and measures
  • Definieren von HierarchienDefining hierarchies
  • Definieren der Formatierung, Standardzusammenfassung und Sortierreihenfolge für eine SpalteDefining the formatting, default summarization and sort order for a column
  • Gruppierungs- oder ClusterwerteGrouping or clustering values

Wenn Sie DirectQuery verwenden, können viele dieser Modellanreicherungen noch immer vorgenommen werden, und es existiert sicherlich noch immer das Prinzip, dass die Rohdaten angereichert werden, um den späteren Verbrauch zu verbessern.When using DirectQuery, many of these model enrichments can still be made, and certainly there is still the principle that the raw data is being enriched, so as to improve later consumption. Allerdings sind einige Modellierungsfunktionen nicht verfügbar oder bei der Verwendung von DirectQuery eingeschränkt.However, there some modeling capabilities are not available, or are limited, when using DirectQuery. Im Allgemeinen werden Einschränkungen angewendet, um Leistungsprobleme zu vermeiden.The limitations are generally applied to avoid performance issues. Die Einschränkungen, die häufig für DirectQuery-Quellen angewendet werden, sind in der folgenden Liste aufgeführt.The set of limitations that are common to all DirectQuery sources are listed in the following bulleted list. Zusätzliche Einschränkungen gelten möglicherweise für einzelne Quellen, so wie am Ende dieses Artikels unter Datenquellenspezifische Details beschrieben wird.Additional limitations might apply to individual sources, as described in Data source specific details found near the end of this article.

  • Keine integrierte Datumshierarchie: Wenn Sie Daten importieren, erhält auch standardmäßig jede date/datetime-Spalte auch eine integrierte Datumshierarchie, die in der Standardeinstellung verfügbar ist.No Built in-date hierarchy: When importing data, then by default every date/datetime column will also have a built-in date hierarchy available by default. Wenn Sie z.B. eine Tabelle mit Verkaufsaufträgen importieren, die eine Spalte „OrderDate“ enthält, dann wird es vor der Verwendung von OrderDate in einem visuellen Element möglich sein, die zugehörige Ebene auszuwählen (Jahr, Monat, Tag), die verwendet werden soll.For example, if importing a table of sales orders including a column OrderDate, then upon using OrderDate in a visual, it will be possible to choose the appropriate level (Year, Month, Day) to use. Diese integrierte Datumshierarchie ist nicht verfügbar, wenn Sie den DirectQuery-Modus verwenden.This built-in date hierarchy is not available when using DirectQuery mode. Beachten Sie jedoch, dass wenn eine Datumstabelle in der zugrunde liegenden Quelle verfügbar ist (wie es in vielen Data Warehouses üblich ist), dann können die DAX Time Intelligence-Funktionen ganz normal verwendet werden.Note however that if there is Date table available in the underlying source (as is common in many data warehouses) then the DAX Time Intelligence functions can be used as normal.
  • Einschränkungen in berechneten Spalten: Berechnete Spalten sind darauf beschränkt, dass sie zeilenintern sind. Das bedeutet, dass sie sich nur auf Werte anderer Spalten derselben Tabelle beziehen können, ohne Aggregatfunktionen zu benutzen.Limitations in calculated columns: Calculated columns are limited to being intra-row, as in, they can only refer to values of other columns of the same table, without the use of any aggregate functions. Darüber hinaus werden die zugelassenen DAX-Skalarfunktionen (wie etwas LEFT()) auf die eingeschränkt, die einfach mithilfe von Push an die darunter liegenden Quelle übertragen werden. Ergebnisse können je nach den genauen Fähigkeiten der Quelle variieren.Additionally, the DAX scalar functions (such as LEFT()) that are allowed will be limited to those which can simply be pushed to the underlying source, hence will vary depending upon the exact capabilities of the source. Funktionen, die nicht unterstützt werden, werden nicht in AutoVervollständigen aufgelistet, wenn DAX für eine berechnete Tabelle erstellt wird, und würden bei Benutzung einen Fehler auslösen.Functions that are not supported will not be listed in autocomplete when authoring the DAX for a calculated column, and would result in an error if used.
  • Keine Unterstützung für über- und untergeordnete DAX-Funktionen: Wenn Sie sich im DirectQuery-Modell befinden, ist die Verwendung der DAX PATH()-Funktionsfamilie nicht möglich, die normalerweise die Strukturen der über- und untergeordneten Funktionen behandeln (etwa als Kontenplan oder Mitarbeiterhierarchien).No support for parent-child DAX functions: When in DirectQuery model, it is not possible to use the family of DAX PATH() functions, that generally handle Parent-Child structures (such as chart of accounts, or employee hierarchies).
  • Einschränkungen (standardmäßig) für Measures: Standardmäßig sind die DAX-Funktionen und -Ausdrücke, die in Measures verwendet werden können, eingeschränkt.Limitations (by default) for measures: By default, the DAX functions and expressions that can be used in measures is restricted. Erneut, wird AutoVervollständigen die aufgeführten einschränken, und es wird eine Fehler angezeigt, wenn eine ungültige Funktion oder ein ungültiger Ausdruck verwendet wird.Again, autocomplete will restrict the functions listed, and an error will occur if an invalid function or expression is used. Der einfache Grund dafür, ist, dass in der Standardeinstellung Measures auf einfache Measures eingeschränkt sind, die unwahrscheinlich alleine zu Leistungsproblemen führen.The reason is simply to ensure that, by default, measures are restricted to simple measures that are unlikely by themselves cause any performance issues. Fortgeschrittene Benutzer können sich entscheiden, diese Einschränkung zu umgehen, indem sie Datei > Optionen, dann Einstellungen > Optionen > DirectQuery und schließlich die Option Unbeschränkte Measures im DirectQuery-Modus zulassen auswählen.Advanced users can choose to bypass this limitation by selecting File > Options and then Settings > Options > DirectQuery, then selecting the option Allow unrestricted measures in DirectQuery mode. Wenn diese Option aktiviert ist, kann jeder DAX-Ausdruck, der für ein Measure gültig ist, verwendet werden.When that option is selected, any DAX expression that is valid for a measure can be used. Die Benutzer müssen sich jedoch bewusst sein, dass einige Ausdrücke, die bei importierten Daten eine gute Leistung zeigen, bei der Ausführung auf der Back-End-Quelle im DirectQuery-Modus zu sehr langsamen Abfragen führen können.Users must be aware, however, that some expressions that perform well when the data is imported may result in very slow queries to the backend source when in DirectQuery mode.

    • Beispiel, standardmäßig:For example, by default:

      • Es ist möglich, ein Measure erstellen, das den Umsatz einfach summiert:It would be possible to author a measure that simply summed the sales amount:

        SalesAmount = SUMX(Web_Sales, [ws_sales_price]* [ws_quantity])
        
      • Es ist jedoch nicht möglich, ein Measure zu erstellen, das dann mit SalesAmount über alle Elemente einen Mittelwert bildet:It would not be possible to author a measure that then averaged that SalesAmount over all of the Items:

        AverageItemSalesAmount = AVERAGEX('Item', [SalesAmount])
        

      Der Grund ist, dass ein solches Measure zu schlechten Leistungen führen könnte, gäbe es eine große Anzahl von Elementen.The reason is that such a measure could result in poor performance if there were a very large number of items.

  • Berechnete Tabellen werden nicht unterstützt: Die Möglichkeit zum Definieren einer berechneten Tabelle mithilfe eines DAX-Ausdrucks wird im DirectQuery-Modus nicht unterstützt.Calculated tables are not supported: The ability to define a calculated table using a DAX expression is not supported in DirectQuery mode.
  • Filtern von Beziehungen ist auf nur eine Richtung beschränkt: Bei Verwendung von DirectQuery ist es nicht möglich, die Kreuzfilterrichtung in einer Beziehung auf „Beide“ festzulegen.Relationship filtering is limited to a single direction: When using DirectQuery, it is not possible to set the Cross Filter direction on a relationship to “Both”. Beispielsweise würde es mit den drei Tabellen nicht möglich sein, ein visuelles Element zu erstellen, das jeden Kunden[Geschlecht] und die Anzahl der Produkte[Kategorie] zeigt, die von jedem Kunden gekauft werden.For example, with the three tables below, it would not be possible to build a visual showing each Customer[Gender], and the number of Product[Category] bought by each. Die Verwendung des bidirektionalen Filterns ist in diesem ausführlichen Whitepaper beschrieben (darin sind Beispiele im Kontext von SQL Server Analysis Services dargestellt, jedoch gelten die grundlegenden Punkte auch gleichermaßen für Power BI).Use of such bi-directional filtering is described in this detailed whitepaper (the paper presents examples in the context of SQL Server Analysis Services, but the fundamental points apply equally to Power BI).

    Erneut wird die Einschränkung aufgrund der Leistungsauswirkungen angewendet.Again, the limitation is imposed due to the performance implications. Eine besonders wichtige Anwendung davon ist, wenn die Sicherheit auf Zeilenebene als Teil des Berichts definiert wird. Und es ist ein verbreitetes Muster, eine m:n-Beziehung zwischen den Benutzern und den Entitäten zu besitzen, auf die zugegriffen werden kann. Die Verwendung des bidirektionalen Filterns ist nötig, um dies zu erzwingen.One particularly important application of this is when defining Row Level Security as part of the report, as a common pattern is to have a many-many relationship between the users and the entities they are allowed access to, and use of bi-directional filtering is necessary to enforce this. Allerdings sollte bidirektionales Filtern für DirectQuery-Modelle sinnvoll eingesetzt werden, mit sorgfältiger Beachtung jedes schädlichen Einflusses auf die Leistung.However, use of bi-directional filtering for DirectQuery models should be used judiciously, with careful attention paid to any detrimental impact on performance.

  • Kein Clustering: Bei Verwendung von DirectQuery ist es nicht möglich, die Clustering-Funktion zu verwenden, um Gruppen zu suchen.No Clustering: When using DirectQuery, it is not possible to use the Clustering capability, to automatically find groups

Einschränkungen bei der BerichterstattungReporting limitations

Fast alle Berichtsfunktionen werden für DirectQuery-Modelle unterstützt.Almost all reporting capabilities are supported for DirectQuery models. Daher ist es möglich, solange die zugrunde liegenden Datenquelle ein geeignetes Maß an Leistung bietet, den gleichen Satz von Visualisierungen zu verwenden.As such, so long as the underlying source offers a suitable level of performance, the same set of visualizations can be used. Es gibt jedoch einige wichtigen Einschränkungen in einigen der anderen Funktionen des Power BI-Diensts, nachdem ein Bericht veröffentlicht wird, wie in den folgenden Punkten beschrieben:However, there are some important limitations in some of the other capabilities offered in the Power BI service after a report is published, as described in the following bullets:

  • „Schnelleinblicke“ wird nicht unterstützt: Power BI-Schnelleinblicke durchsucht schnell verschiedene Teilmengen des Datasets unter Verwendung eines hoch entwickelten Algorithmus, um potenziell interessante Einblicke zu gewinnen.Quick Insights is not supported: Power BI Quick Insights searches different subsets of your dataset while applying a set of sophisticated algorithms to discover potentially-interesting insights. Da sehr leistungsstarke Abfragen vonnöten sind, ist diese Fähigkeit nicht für Datasets mit DirectQuery verfügbar.Given the need for very high performance queries, this capability is not available on datasets using DirectQuery.
  • Q&A wird nicht unterstützt: Die Funktion für Fragen und Antworten von Power BI ermöglicht Ihnen, Ihre Daten mithilfe intuitiver Möglichkeiten der natürlichen Sprache zu untersuchen und die entsprechenden Antworten in Form von Diagrammen und Grafiken zu erhalten.Q&A is not supported: Power BI Q&A enables you to explore your data using intuitive, natural language capabilities and receive answers in the form of charts and graphs. Jedoch wird dies derzeit nicht für Datasets mit DirectQuery unterstützt.However, it is currently not supported on datasets using DirectQuery.
  • Die Verwendung von „In Excel untersuchen“ führt wahrscheinlich zu einer schlechteren Leistung: Sie können Ihre Daten untersuchen, indem Sie die Funktion „Explore in Excel“ (In Excel untersuchen) verwenden.Using Explore in Excel will likely result in poorer performance: It is possible to explore your data by using the “Explore in Excel” capability on a dataset. Dadurch können PivotTables und PivotCharts in Excel erstellt werden.This will allow Pivot Tables and Pivot Charts to be created in Excel. Diese Funktion wird für Datasets mit DirectQuery unterstützt, die Leistung ist aber generell langsamer als beim Erstellen von visuellen Elementen in Power BI. Deshalb ist die Verwendung von Excel für Ihre Szenarios wichtig, darum sollten Sie diesen Punkt bei Ihrer Entscheidung, DirectQuery zu verwenden, bedenken.While this capability is supported on datasets using DirectQuery, the performance is generally slower than creating visuals in Power BI, and therefore if the use of Excel is important for your scenarios, this should be accounted for in your decision to use DirectQuery.

SicherheitSecurity

Wie weiter oben in diesem Artikel erläutert, wird ein Bericht mit DirectQuery nach dem Veröffentlichen zum Power BI-Dienst immer die gleichen festen Anmeldeinformationen zur Verbindung mit der zugrunde liegenden Datenquelle verwenden.As discussed earlier in this article, a report using DirectQuery will always use the same fixed credentials to connect to the underlying data source, after publish to the Power BI service. Beachten Sie erneut, dass sich dies speziell auf DirectQuery bezieht und nicht auf Liveverbindungen mit SQL Server Analysis Services, was sich in dieser Hinsicht unterscheidet.Again, note this refers specifically to DirectQuery, not to live connections to SQL Server Analysis Services, which is different in this respect. Daher ist es sofort nach Veröffentlichung eines DirectQuery-Berichts notwendig, die Anmeldeinformationen des Benutzers zu konfigurieren, die verwendet werden.Hence immediately after publish of a DirectQuery report, it is necessary to configure the credentials of the user that will be used. Bis dies erfolgt ist, würde das Öffnen des Berichts im Power BI-Dienst zu einem Fehler führen.Until this is done, opening the report on the Power BI service would result in an error.

Sobald die Anmeldeinformationen des Benutzers bereitgestellt werden, werden diese verwendet, ungeachtet vom Benutzer, der den Bericht öffnet.Once the user credentials are provided, then those credentials will be used, irrespective of the user who opens the report. In diesem Zusammenhang verhält es sich genauso wie bei importierten Daten: Jeder Benutzer sieht die gleichen Daten, es sei denn, die Sicherheit auf Zeilenebene wurde als Teil des Berichts definiert.In this regard it is exactly like imported data, in that every user will see the same data, unless Row Level Security has been defined as part of the report. Daher muss die gleiche Aufmerksamkeit dem Freigeben des Berichts gelten, falls Sicherheitsregeln in der zugrunde liegenden Quelle definiert sind.Hence the same attention must be paid to sharing the report, if there are any security rules defined in the underlying source.

Verhalten im Power BI-DienstBehavior in the Power BI service

Dieser Abschnitt beschreibt das Verhalten eines DirectQuery-Berichts im Power BI-Dienst in erster Linie so, dass Sie den Grad an Last verstehen können, der auf der Back-End-Datenquelle platziert wird, die Anzahl der Benutzer, mit denen der Bericht und das Dashboard geteilt werden, die Komplexität des Berichts und ob die Sicherheit auf Zeilenebene im Bericht definiert ist.This section describes the behavior of a DirectQuery report in the Power BI service, primarily so as to be able to understand the degree of load that will be placed on the back end data source, given the number of users that the report and dashboard will be shared with, the complexity of the report, and whether Row Level Security has been defined in the report.

Berichte öffnen, mit ihnen interagieren, sie bearbeitenReports – opening, interacting with, editing

Wenn ein Bericht geöffnet ist, werden alle visuellen Elemente auf der aktuell sichtbaren Seite aktualisiert.When a report is opened, then all the visuals on the currently visible page will refresh. Jedes visuelle Element erfordert in der Regel mindestens eine Abfrage für die zugrunde liegenden Datenquelle.Each visual will generally require at least one query to the underlying data source. Einige visuelle Elemente benötigen möglicherweise mehrere Abfragen (z.B. wenn darin Aggregatwerte aus zwei unterschiedliche Faktentabellen angezeigt werden oder ein komplexeres Measure oder Gesamtergebnisse eines nicht addititven Measures wie Count Distinct enthalten sind).Some visuals might require more than one query (for example, if it showed aggregate values from two different fact tables, or contained a more complex measure, or contained totals of a non-additive measure like Count Distinct). Wenn Sie auf eine neue Seite wechseln, werden diese visuellen Elemente aktualisiert, was dazu führt, dass in der zugrunde liegenden Quelle eine neue Reihe von Abfragen erstellt wird.Moving to a new page will result in those visuals being refreshed, resulting in a new set of queries to the underlying source.

Jedes Eingreifen des Benutzers in den Bericht führt möglicherweise dazu, dass visuelle Elemente aktualisiert werden.Every user interaction on the report might result in visuals being refreshed. Wenn Sie beispielsweise einen anderen Wert auf einem Datenschnitt auswählen, müssen Sie eine neue Reihe von Abfragen senden, um alle betroffenen visuellen Elemente zu aktualisieren.For example, selecting a different value on a slicer will require sending a new set of queries to refresh all of the effected visuals. Dasselbe gilt für das Klicken auf ein visuelles Element, um andere visuelle Elemente hervorzuheben oder einen Filter zu ändern.The same is true for clicking on a visual to cross-highlight other visuals, or changing a filter.

Ähnlich erfordert auch das Bearbeiten eines neuen Berichts natürlich, dass Abfragen für jeden Schritt auf dem Pfad gesendet werden, um letztendlich das erwünschte visuelle Element zu erstellen.Similarly of course, editing a new report with require queries to be sent for each step on the path to produce the final desired visual.

Einige Ergebnisse werden zwischengespeichert, damit die Aktualisierung eines visuellen Elements unmittelbar erfolgen kann, wenn genau die gleichen Ergebnisse zuvor abgerufen wurden.There is some caching of results, so that the refresh of a visual will be instantaneous if the exact same results have recently been obtained. Solche Caches werden nicht für Benutzer freigegeben, wenn Sicherheit auf Zeilenebene als Teil des Berichts definiert ist.Such caches are not shared across users, if there is any Row Level Security defined as part of the report.

DashboardaktualisierungDashboard Refresh

Einzelne visuelle Elemente oder die gesamte Seiten können als Kacheln an das Dashboard angeheftet werden.Individual visuals, or entire pages, can be pinned to dashboard as tiles. Kacheln,die auf DirectQuery-Datasets basieren, werden dann automatisch nach einem Zeitplan aktualisiert, was dazu führt, dass Abfragen an die Back-End-Datenquelle gesendet werden.Tiles based on DirectQuery datasets are then refreshed automatically according to a schedule, resulting in queries being sent to the backend data source. Standardmäßig geschieht dies einmal pro Stunde, kann aber als Teil der Dataset-Einstellungen für den Zeitraum wöchentlich oder alle 15 Minuten konfiguriert werden.By default, this occurs every hour, but can be configured as part of Dataset settings to be between weekly, and every 15 minutes.

Wenn keine Sicherheit auf Zeilenebene im Modell definiert ist, bedeutet das, dass jede Kachel einmal aktualisiert und die Ergebnisse an alle Benutzer verteilt werden würde.If no Row Level Security is defined in the model, this means that each tile would be refreshed once, and the results shared across all users. Wenn die Sicherheit auf Zeilenebene definiert ist, tritt möglicherweise ein großer Multiplikatoreffekt in Kraft: Jede Kachel erfordert separate Abfragen pro Benutzer, die an die zugrunde liegende Quelle gesendet werden.If Row Level Security is defined, then there can be a large multiplier effect – each tile requires separate queries per user to be sent to the underlying source.

Daher wäre das Ergebnis für ein Dashboard mit zehn Kacheln, das mit 100 Benutzern geteilt und auf einem Dataset mit DirectQuery mit Sicherheit auf Zeilenebene erstellt wird, und so konfiguriert ist, dass es alle 15 Minuten aktualisiert wird, das Senden von mindestens 1000 Abfragen an die Back-End-Quelle im Zeitraum von 15 Minuten.Hence a dashboard with ten tiles, shared with 100 users, created on a dataset using DirectQuery with Row Level Security, and configured to refresh every 15 minutes, would result in at least 1000 queries being sent every 15 minutes to the back end source.

Daher muss die Verwendung von Sicherheit auf Zeilenebene und die Konfiguration des Aktualisierungszeitplans sorgfältig überlegt sein.Hence careful consideration must be paid to the use of Row Level Security, and the configuring of the refresh schedule.

TimeoutsTimeouts

Ein Timeout von vier Minuten wird für einzelne Abfragen für den Power BI-Dienst angewendet, und Abfragen, die mehr Zeit benötigen, schlagen einfach fehl.A timeout of four minutes is applied to individual queries in the Power BI service, and queries taking longer than that will simply fail. Wie zuvor betont, wird empfohlen, dass DirectQuery für Quellen verwendet wird, die nahezu interaktive Abfrageleistung bieten. Diese Begrenzung soll also vermeiden, dass Probleme bei übermäßig langen Ausführungszeiten auftreten.As stressed earlier, it is recommended that DirectQuery be used for sources that provide near interactive query performance, so this limit is intended to prevent issues from overly long execution times.

Andere AuswirkungenOther implications

Einige allgemeine Auswirkungen der Verwendung von DirectQuery sind die folgenden:Some other general implications of using DirectQuery are the following:

  • Wenn sich Daten ändern, ist es notwendig, eine Aktualisierung durchzuführen, damit die neuesten Daten angezeigt werden: Hinsichtlich der Verwendung von Caches gibt es keine Garantie, dass das visuelle Element immer die neuesten Daten anzeigt.If data is changing, it is necessary to Refresh to ensure the latest data is shown: Given the use of caches, there is no guarantee that the visual is always showing the latest data. Ein visuelles Element kann möglicherweise die Transaktionen des letzten Tags anzeigen.For example, a visual might show the transactions in the last day. Da ein Datenschnitt geändert wird, kann ein visuelles Element aktualisiert werden, damit es die Transaktionen der letzten zwei Tage anzeigt, einschließlich einiger der neuesten eingegangenen Transaktionen.Then due to a slicer being changed, it might refresh to show the transactions for the last two days, including some very recent, newly arrived transactions. Die Umwandlung des Datenschnitts in seinen ursprünglichen Wert würde dazu führen, dass wieder die zuvor abgerufenen zwischengespeicherten Werte angezeigt werden, die die zuvor dargestellten neuesten Transaktionen nicht enthalten würden.Returning the slicer to its original value would result in it again showing the cached value previously obtained, that would not include the newly arrived transaction seen before.

    Wenn Sie „Aktualisieren“ auswählen, werden sämtliche Caches geleert, und alle visuellen Elemente auf der Seite werden aktualisiert, damit sie die neuesten Daten anzeigen.Selecting Refresh will clear any caches, and refresh all the visuals on the page to show the latest data.

  • Wenn Daten geändert werden, besteht keine Garantie der Konsistenz zwischen den visuellen Elementen: Andere visuelle Elemente, egal ob auf derselben Seite oder auf verschiedenen Seiten, werden möglicherweise zu unterschiedlichen Zeiten aktualisiert.If data is changing, there is no guarantee of consistency between visuals: Different visuals, whether on the same page or on different pages, might be refreshed at different times. Wenn also die Daten in der zugrunde liegenden Quelle geändert werden, kann nicht garantiert werden, dass jedes visuelle Elemente die Daten zu exakt demselben Zeitpunkt anzeigt.Thus if the data in the underlying source is changing, there is no guarantee that each visual will be showing the data at the exact same point of time. Wenn tatsächlich davon ausgegangen wird, dass manchmal mehr als eine Abfrage für ein einzelnes visuelles Element benötigt wird (beispielsweise um die Details und Gesamtwerte abzurufen), kann die Konsistenz auch für ein einzelnes visuelles Element nicht garantiert werden.Indeed, given that sometimes more than one query is required for a single visual (for example, to obtain the details and the totals) then consistency even within a single visual is not guaranteed. Damit diese gewährleistet werden kann, ist sobald ein visuelles Element aktualisiert wird, der Aktualisierungsaufwand aller visuellen Elemente erforderlich, zusammen mit dem Gebrauch der zahlungspflichtigen Funktionen wie der Momentaufnahme-Isolation in der zugrunde liegenden Quelle.To guarantee this would require the overhead of refreshing all visuals whenever any visual refreshed, in tandem with the use of costly features like Snapshot Isolation in the underlying data source.

    Dieses Problem kann weitgehend minimiert werden, indem Sie erneut „Aktualisieren“ auswählen, was alle visuellen Elemente auf der Seite aktualisieren wird.This issue can be mitigated to a large extent by again selecting Refresh, to will refresh all of the visuals on the page. Beachten Sie auch, dass auch wenn Sie den Importmodus verwenden, ein ähnliches Problem für die Garantie der Konsistenz besteht, wenn Sie Daten aus mehr als einer Tabelle importieren.And it should be noted that even if using Import mode, there is a similar problem of guaranteeing consistency if importing data from more than one table.

  • Die Aktualisierung in Power BI Desktop ist notwendig, um Änderungen bei Metadaten widerzuspiegeln: Nachdem ein Bericht veröffentlicht wurde, werden die visuellen Elemente im Bericht einfach aktualisiert.Refresh in Power BI Desktop is needed to reflect any metadata changes: After a report is published, Refresh will simply refresh the visuals in the report. Wenn das Schema der zugrunde liegenden Datenquelle geändert wurde, werden diese Änderungen nicht automatisch übernommen, um die verfügbaren Felder in der Feldliste zu ändern.If the schema of the underlying source has changed, then those changes are not automatically applied to change the available fields in the field list. Wenn Tabellen oder Spalten also aus der zugrunde liegenden Datenquelle entfernt wurden, kann es dazu kommen, dass die Abfrage bei der Aktualisierung fehlschlägt.Thus if tables or columns have been removed from the underlying source, it might result in query failure upon refresh. Wenn Sie einen Bericht in Power BI Desktop öffnen und „Aktualisieren“ auswählen, werden die Felder im Modell aktualisiert, damit Sie die Änderungen anzeigen.Opening the report in Power BI Desktop, and choosing Refresh, will update the fields in the model to reflect the changes.
  • Beschränkung von einer Millionen Zeilen, die auf eine beliebige Abfrage zurückgegeben werden: Es gibt eine festgelegte maximale Anzahl von einer Million Zeilen, die auf der Anzahl von Zeilen platziert sind, die in einer einzelnen Abfrage an die zugrunde liegende Quelle zurückgegeben wird.Limit of one million rows returned on any query: There is a fixed limit of one million rows placed on the number of rows that can be returned in any single query to the underlying source. Dies hat in der Regel keine praktische Auswirkung, und visuelle Elemente werden selbst nicht so viele Punkte anzeigen.This generally has no practical implications, and visuals themselves aren’t going to display that many points. Allerdings kann die Begrenzung in Fällen auftreten, in denen Power BI die gesendeten Abfragen nicht vollständig optimiert und Zwischenergebnisse angefragt werden, die diese Begrenzung übersteigen.However, the limit can occur in cases where Power BI is not fully optimizing the queries sent, and there is some intermediate result being requested that exceeds the limit. Sie kann auch während der Erstellung eines visuellen Elements auf dem Pfad zu einem akzeptableren Endzustand auftreten.It can also occur whilst building a visual, on the path to a more reasonable final state. Beispielsweise würde das Einschließen von „Customer“ und „TotalSalesQuantity“ diese Begrenzung erreichen, falls es mehr als eine Million Kunden gibt, bis einige Filter angewendet werden.For example, including Customer and TotalSalesQuantity would hit this limit if there were more than 1m customers, until some filter were applied.

    Der zurückgegebene Fehler wäre „Das Resultset einer Abfrage einer externen Datenquelle hat die maximal zulässige Größe von 1.000.000 Zeilen überschritten“.The error that would be returned would be “The resultset of a query to external data source has exceeded the maximum allowed size of '1000000' rows.”

  • Es kann nicht vom Import- in den DirectQuery-Modus gewechselt werden: Obwohl es in der Regel möglich ist, für ein Modell vom DirectQuery- in den Importmodus zu wechseln, beachten Sie, dass dies bedeutet, dass alle nötigen Daten importiert werden.Cannot change from import to DirectQuery mode: Note that while it's generally possible to switch a model from DirectQuery mode to use import mode, this means all the necessary data must be imported. Es ist auch nicht möglich, in den anderen Modus zurück zu wechseln (hauptsächlich aufgrund der Funktionen, die nicht im DirectQuery-Modus unterstützt werden).It is also not possible to switch back (primarily due to the set of features not supported in DirectQuery mode). Aufgrund der komplett anderen Behandlung externer Measures kann für DirectQuery-Modelle für mehrdimensionale Datenquellen wie SAP BW auch vom DirectQuery- in den Importmodus gewechselt werden.DirectQuery models over multidimensional sources like SAP BW also cannot be switched from DirectQuery to import, due to the completely different treatment of external measures.

DirectQuery im Power BI-DienstDirectQuery in the Power BI service

Alle Quellen werden von Power BI Desktop unterstützt.All sources are supported from Power BI Desktop. Einige Quellen sind auch direkt im Power BI-Dienst verfügbar.Some sources are also available directly from within the Power BI service. Beispielsweise ist es möglich, dass ein Geschäftsbenutzer Power BI zum Herstellen einer Verbindung mit den Daten in Salesforce verwendet und sofort ohne die Verwendung von Power BI Desktop ein Dashboard abrufen kann.For example, it is possible for a business user to use Power BI to connect to their data in Salesforce, and immediately get a dashboard, without use of Power BI Desktop.

Nur zwei der von DirectQuery aktivierten Quellen sind direkt im Dienst verfügbar.Only two of the DirectQuery enabled-sources are available directly in the service:

  • SparkSpark
  • Azure SQL Data WarehouseAzure SQL Data Warehouse

Allerdings es wird dringend empfohlen, dass jede Verwendung von DirectQuery über diese beiden Quellen innerhalb von Power BI Desktop stattfindet.However, it is strongly recommended that any use of DirectQuery over those two sources start within Power BI Desktop. Der Grund ist, dass viele wichtige Einschränkungen gelten, wenn die Verbindung erstmalig im Power BI-Dienst erfolgt ist. Das bedeutet, dass obwohl der Startpunkt einfach war (beginnend im Power BI-Dienst), es weiterhin Einschränkungen bei der Verbesserung des daraus folgenden Reports gibt (es ist z.B. nicht möglich, dann Berechnungen durchzuführen, viele analytische Funktionen zu verwenden oder auch nur die Metadaten zu aktualisieren, um Änderungen im zugrunde liegenden Schema anzuzeigen).The reason is that when the connection is initially made in the Power BI service, many key limitations will apply, meaning that while the start point was easy (starting in the Power BI service), there are limitations on enhancing the resulting report any further (for example, it's not possible then to create any calculations, or use many analytical features, or even refresh the metadata to reflect any changes to the underlying schema).

Leitfaden zur erfolgreichen Verwendung von DirectQueryGuidance for using DirectQuery successfully

Wenn Sie DirectQuery verwenden möchten, finden Sie in diesem Abschnitt ausführliche Anleitungen, mit deren Hilfe Sie diese Funktion erfolgreich ausführen können.If you're going to use DirectQuery, then this section provides you with some high level guidance on how to ensure success. Die Anleitung in diesem Abschnitt wurde auf Basis der Auswirkungen der Verwendung von DirectQuery geschrieben, die in diesem Artikel beschrieben wurden.The guidance in this section is derived from the implications of using DirectQuery that have been described in this article.

Leistung der Back-End-DatenquelleBackend data source performance

Es wird dringend empfohlen, sicherzustellen, dass einfache visuelle Elemente in einer angemessenen Zeit aktualisiert werden können.It is strongly recommended to validate that simple visuals will be able to refresh in a reasonable time. Die Aktualisierung sollte innerhalb von 5 Sekunden erfolgen, damit Sie eine akzeptable interaktive Erfahrung erhalten.This should be within 5 seconds to have a reasonable interactive experience. Wenn visuelle Elemente länger als 30 Sekunden brauchen, ist es sehr wahrscheinlich, dass weitere Probleme nach der Veröffentlichung des Berichts auftreten, wodurch die Lösung unausführbar wird.Certainly if visuals are taking longer than 30 seconds, then it's highly likely that further issues will occur following publication of the report, which will make the solution unworkable.

Wenn Abfragen langsam sind, ist der erste Punkt der Untersuchung die Überprüfung der Abfrage, die an die zugrunde liegende Quelle gesendet wird sowie der Grund, warum die Abfrageleistung überwacht wird.If queries are slow, then the first point of investigation is to examine the queries being sent to the underlying source, and the reason for the query performance being observed. In diesem Thema wird die breite Palette der bewährten Methoden zur Datenbankoptimierung für den gesamten Satz an potenziellen zugrunde liegenden Quellen nicht behandelt, jedoch gilt es für die grundlegenden Datenbankmethoden, die für die meisten Situationen gelten:This topic doesn't cover the wide range of database optimization best practices across the full set of potential underlying sources, but it does apply to the standard database practices that apply to most situations:

  • Beziehungen, die auf Integerspalten basieren, werden in der Regel besser ausgeführt, als Joins auf Spalten eines anderen Datentyps.Relationships based on integer columns generally perform better than joins on columns of other data types
  • Die entsprechenden Indizes sollten erstellt werden, was im Allgemeinen den Gebrauch von Columnstore-Indizes in den Quellen meint, die sie unterstützen (z.B. SQL Server).The appropriate indexes should be created, which generally means the use of column store indexes in those sources that support them (for example, SQL Server).
  • Es sollten alle notwendigen Statistiken in der Quelle aktualisiert werdenAny necessary statistics in the source should be updated

Leitfaden zum ModellentwurfModel Design Guidance

Wenn Sie das Modell definieren, denken Sie an Folgendes:When defining the model, consider doing the following:

  • Vermeiden Sie komplexe Abfragen im Abfrage-Editor.Avoid complex queries in Query Editor. Die Abfrage, die im Abfrage-Editor definiert ist, wird in eine einzelne SQL-Abfrage übertragen, die dann in jeden untergeordneten SELECT-Ausdruck jeder Abfrage eingeschlossen wird, die an die Tabelle gesendet wird.The query that's defined in the Query Editor will be translated into a single SQL query, that will then be included in the subselect of every query sent to that table. Wenn diese Abfrage also komplex ist, kann es zu Leistungsproblemen bei jeder gesendeten Abfrage kommen.If that query is complex, it might result in performance issues on ever query sent. Die aktuelle SQL-Abfrage für eine Reihe von Schritten erhalten Sie, indem Sie den letzten Schritt im Abfrage-Editor und dann View Native Query (Native Abfrage anzeigen) aus dem Kontextmenü auswählen.The actual SQL query for a set of steps can be obtained by selecting the last step in Query Editor, and choosing View Native Query from the context menu.
  • Halten Sie Measures einfach.Keep measures simple. Zumindest am Anfang wird empfohlen, Measures auf einfache Aggregate zu beschränken.At least initially, it is recommended to limit measures to simple aggregates. Wenn diese dann zufriedenstellend ausgeführt werden, können komplexere Measures definiert werden. Achten Sie jedoch auf die Leistung jedes Measures.Then if those perform in a satisfactory manner, more complex measures can be defined, but paying attention to the performance for each.
  • Vermeiden Sie Beziehungen in berechneten Spalten.Avoid relationships on calculated columns. Dies ist besonders relevant für die Datenbanken, in denen es erforderlich ist, mehrspaltige Joins auszuführen.This is particularly relevant to databases where it is necessary to perform multi-column joins. Power BI lässt heute nicht zu, dass eine Beziehung auf mehreren Spalten als FS/PS vergeben wird.Power BI today does not allow a relationship to be based on multiple columns as the FK/PK. Die am meisten verwendete Problemumgehung ist, die Spalten mithilfe einer berechneten Spalte zu verknüpfen und dann den Join darauf zu vergeben.The common workaround is to concatenate the columns together using a calculated column, and base the join on that. Während diese Problemumgehung für importierte Daten logisch ist, führt sie im Fall von DirectQuery zu einem Join auf einem Ausdruck, der meist die Verwendung von Indizes verhindert und zu schwacher Leistung führt.While this workaround is reasonable for imported data, in the case of DirectQuery it results in a join on an expression, that commonly prevents use of any indexes, and leads to poor performance. Die einzige Problemumgehung ist tatsächlich, die vielen Spalten in eine einzige Spalte in der zugrunde liegenden Datenbank zu materialisieren.The only workaround is to actually materialize the multiple columns into a single column in the underlying database.
  • Vermeiden Sie Beziehungen zwischen „uniqueidentifier“-Spalten.Avoid relationships on uniqueidentifier columns. Power BI unterstützt nicht nativ einen uniqueidentifier-Datentyp.Power BI does not natively support a datatype of uniqueidentifier. Somit führt die Definition einer Beziehung zwischen Spalten des Typs uniqueidentifier zu einer Abfrage mit einem Join, der eine Umwandlung zur Folge hat.Hence defining a relationship between columns of type uniqueidentifier column will result in a query with a join involving a Cast. In diesem Fall führt dies häufig zu schwacher Leistung.Again, this commonly leads to poor performance. Bis dieser Fall speziell optimiert ist, besteht die einzige Umgehung dieses Problems darin, Spalten eines alternativen Typs in der zugrunde liegenden Datenbank zu materialisieren.Until this case is specifically optimized, the only workaround is to materialize columns of an alternative type in the underlying database.
  • Blenden Sie die to-Spalte für Beziehungen aus.Hide the to column on relationships. Die to-Spalte für Beziehungen (häufig der Primärschlüssel in der to-Tabelle) muss ausgeblendet sein, damit sie nicht in der Feldliste erscheint und so auch nicht in visuellen Elementen verwendet werden kann.The to column on relationships (commonly the primary key on the to table) should be hidden, so that it does not appear in the field list, and therefore cannot be used in visuals. Häufig sind die Spalten, auf denen Beziehungen basieren, tatsächlich Systemspalten (z.B. Ersatzschlüssel in einem Data Warehouse), und das Ausblenden dieser Spalten ist sowieso eine gute Empfehlung.Often the columns on which relationships are based are in fact system columns (for example, surrogate keys in a data warehouse) and hiding such columns is good practice anyway. Wenn die Spalte von Bedeutung ist, führen Sie eine berechnete sichtbare Spalte ein, die über einen einfachen Ausdruck verfügt, wonach sie mit dem Primärschlüssel gleich ist.If the column does have meaning, then introduce a calculated column that is visible, and that has a simple expression of being equal to the primary key. Beispiel:For example:

    ProductKey_PK   (Destination of a relationship, hidden)
    ProductKey (= [ProductKey_PK],   visible)
    ProductName
    ...
    

    Der Grund hierfür besteht darin, ein Leistungsproblem zu vermeiden, das andernfalls auftreten kann, wenn ein visuelles Element die Primärschlüsselspalte enthält.The reason for doing this is simply to avoid a performance issue that can occur otherwise if a visual includes the primary key column.

  • Überprüfen Sie alle Vorkommen von berechneten Spalten und Änderungen des Datentyps.Examine all uses of calculated columns and data type changes. Die Verwendung dieser Funktionen ist nicht zwingend schädlich, jedoch führt dies dazu, dass Abfragen an die zugrunde liegende Quelle gesendet werden, die eher Ausdrücke als einfache Verweise auf Spalten enthält, was wiederum auch dazu führen kann, das Indizes nicht verwendet werden.Use of these capabilities are not necessarily harmful, they result in the queries sent to the underlying source containing expressions rather than simple references to columns, that again might result in indexes not being used.
  • Vermeiden Sie die Verwendung der bidirektionalen Kreuzfilterung (Vorschau) für Beziehungen.Avoid use of the (preview) bi-directional cross filtering on relationships.
  • Experimentieren Sie mit der Einstellung Referenzielle Integrität voraussetzen.Experiment with setting Assume referential integrity. Die Einstellung Referenzielle Integrität voraussetzen für Beziehungen lässt zu, dass Abfragen INNER JOIN-Anweisungen und nicht OUTER JOIN-Anweisungen verwenden.The Assume Referential Integrity setting on relationships enables queries to use INNER JOIN statements rather than OUTER JOIN. Die Abfrageleistung wird somit generell verbessert, obwohl dies nicht von den Eigenheiten der Datenquelle abhängt.This generally improves query performance, though it does depend on the specifics of the data source.
  • Verwenden Sie nicht die relative Datenfilterung im Abfrage-Editor.Do not use the relative data filtering in Query Editor. Es ist möglich, die relative Datenfilterung im Abfrage-Editor zu definieren.It's possible to define relative date filtering in Query Editor. Ein Beispiel dafür ist es, nach Zeilen zu filtern, in denen das Datum im Zeitraum der letzten 14 Tage liegt.For example, to filter to the rows where the date is in the last 14 days.

    Dies wird jedoch in einen Filter auf Grundlage des festgelegten Datums übersetzt, an dem die Abfrage geschrieben wurde.However, this will be translated into a filter based on the fixed date, as at the time the query was authored. Sie können dies in der nativen Abfrage anzeigen.This can be seen from viewing the native query.

    Das war sicherlich nicht so vorgesehen.This is almost certainly not what was wanted. Um sicherzustellen, dass der Filter basierend auf dem Datum angewendet wird, an dem der Bericht ausgeführt wird, wenden Sie stattdessen den Filter im Bericht als Berichtsfilter an.To ensure the filter is applied based upon the date as at the time the report is executed then instead apply the filter in the report as a Report Filter. Derzeit würde dies funktionieren, indem Sie eine berechnete Tabelle erstellen, die die Anzahl der vergangenen Tage berechnet (mithilfe der DAX DATE()-Funktion), und dann diese berechnete Spalte in einem Filter verwenden.Currently this would be done by creating a calculated column calculating the number of days ago (using the DAX DATE() function), and then using that calculated column in a filter.

Leitfaden zum BerichtsentwurfReport Design Guidance

Wenn Sie einen Bericht mithilfe einer DirectQuery-Verbindung erstellen, befolgen Sie die folgenden Leitlinien:When creating a report using a DirectQuery connection, adhere to the following guidance:

  • Wenden Sie zuerst Filter an: Wenden Sie immer verfügbare Filter zu Beginn der Erstellung eines visuellen Elements an.Apply filters first: Always apply any applicable filters at the start of building a visual. Wenden Sie z.B. den Filter „Jahr“ zu Beginn an, anstatt sich im TotalSalesAmount und ProductName zu bewegen und dann nach einem bestimmten Jahr zu filtern.For example, rather than drag in the TotalSalesAmount, and ProductName, then filter to a particular year, apply the filter on Year at the very start. Der Grund dafür ist, dass jeder Schritt zur Erstellung eines visuellen Elements eine Abfrage sendet. Obwohl es möglich ist, Änderungen durchzuführen, bevor die erste Abfrage abgeschlossen ist, bleibt jedoch noch viel unnötige Last auf der zugrunde liegenden Quelle liegen.This is because each step of building a visual will send a query, and whilst it is possible to then make another change before the first query has completed, this still leaves unnecessary load on the underlying source. Wenn Filter früh angewendet werden, werden diese zwischenzeitlichen Abfragen generell günstiger.By applying filters early, it generally makes those intermediate queries less costly. Darüber hinaus kann es dazu führen, dass die Begrenzung von einer Million Zeilen erreicht wird, wenn die Filter nicht früh angewendet werden.Also, failing to apply filters early can result in hitting the 1m row limit above.
  • Begrenzen Sie die Anzahl von visuellen Elementen auf einer Seite: Wenn eine Seite geöffnet wird (oder einige Datenschnitte auf Seitenebene oder Filter geändert wurden), werden alle visuellen Elemente auf einer Seite aktualisiert.Limit the number of visuals on a page: When a page is opened (or some page level slicer or filter changed) then all of the visuals on a page are refreshed. Es gibt auch eine Begrenzung für die Anzahl der Abfragen, die gleichzeitig gesendet werden, denn wenn die Anzahl der visuellen Elemente steigt, werden auch einige visuelle Elemente nacheinander aktualisiert, wodurch viel mehr Zeit für die Aktualisierung der gesamten Seite benötigt wird.There is also a limit on the number of queries that are sent in parallel, hence as the number of visuals increases, some of the visuals will be refreshed in a serial manner, increasing the time taken to refresh the entire page. Aus diesem Grund wird empfohlen, die Anzahl von visuellen Elementen auf einer Seite zu begrenzen, und stattdessen mehr einfachere Seiten zu haben.For this reason it's recommended to limit the number of visuals on a single page, and instead have more, simpler pages.
  • Überlegen Sie, die Interaktion zwischen visuellen Elementen zu deaktivieren: Standardmäßig können Visualisierungen auf einer Berichtsseite für die Kreuzfilterung und -hervorhebung der anderen Visualisierungen auf der Seite verwendet werden.Consider switching off interaction between visuals: By default, visualizations on a report page can be used to cross-filter and cross-highlight the other visualizations on the page. Wenn beispielsweise „1999“ auf dem Kreisdiagramm ausgewählt ist, wird das Säulendiagramm übergreifend hervorgehoben, um die Verkäufe nach Kategorie für „1999“ anzuzeigen.For example, having selected “1999” on the pie chart, the column chart is cross highlighted to show the sales by category for “1999”.

    Allerdings kann diese Interaktion, wie in diesem Artikel beschrieben, gesteuert werden.However, this interaction can be controlled as described in this article. In DirectQuery erfordert dieses Kreuzfiltern und übergreifendes Hervorheben, dass Abfragen an die zugrunde liegende Quelle gesendet werden, damit die Interaktion deaktiviert wird, sollte es ungewöhnlich lange dauern, auf die Auswahl von Benutzern zu reagieren.In DirectQuery such cross-filtering and cross-highlighting requires queries to be sent to the underlying source, so the interaction should be switched off if the time taken to respond to users' selections would be unreasonably long.

  • Erwägen Sie, nur den Bericht freizugeben: Es gibt mehrere Möglichkeiten, Inhalt nach der Veröffentlichung im Power BI-Dienst freizugeben.Consider sharing the report only: There are different ways of sharing content after publishing to the Power BI service. Im Fall von DirectQuery es ist ratsam, nur den abgeschlossenen Bericht freizugeben und anderen Benutzern nicht zu erlauben, neue Berichte zu schreiben (und womöglich Leistungsprobleme für die bestimmten visuellen Elemente, die sie erstellen, zu erkennen).In the case of DirectQuery, it's advisable to only considering sharing the finished report, rather than allow other users to author new reports (and potentially encounter performance issues for the particular visuals that they build).

Beachten Sie zusätzlich zu der oben aufgeführten Liste mit Vorschlägen, dass jede der nachfolgenden Berichtsfunktionen Leistungsprobleme auslösen kann.In addition to the above list of suggestions, note that each of the following reporting capabilities can cause performance issues:

  • Measurefilter: Visuelle Elemente, die Measures (oder Aggregate von Spalten) enthalten, können Filter in diesen Measures enthalten.Measure filters: Visuals containing measures (or aggregates of columns) can contain filters in those measures. Das visuelle Element unten zeigt z.B. „SalesAmount“ nach Kategorie an, aber nur einschließlich dieser Kategorien mit mehr als 20 Millionen Verkäufen.For example, the visual below shows SalesAmount by Category, but only including those Categories with more than 20M of sales.

    Dies führt dazu, dass zwei Abfragen an die zugrunde liegende Datenquelle gesendet werden:This will result in two queries being sent to the underlying source:

    • Die erste Abfrage ruft die Kategorien ab, die die Bedingungen erfüllen (Verkäufe > 20 Mio.).The first query will retrieve the Categories meeting the condition (Sales > 20M)
    • Die zweite Abfrage ruft die notwendigen Daten für das visuelle Element ab, einschließlich der Kategorien, die mit der Bedingung in der WHERE-Klausel übereinstimmen.The second query will then retrieve the necessary data for the visual, including the Categories that met the condition in the WHJERE clause.

    Dies funktioniert in der Regel gut, wenn es wie in diesem Beispiel hunderttausende Kategorien gibt.This generally performs just fine if there are hundreds or thousands of categories, as in this example. Die Leistung kann beeinträchtigt werden, wenn die Anzahl der Kategorien viel größer ist (tatsächlich schlägt die Abfrage fehl, wenn mehr als eine Million Kategorien die Bedingung erfüllen. Der Grund dafür ist die Begrenzung von einer Million Zeilen, die vorher erwähnt wurde).Performance can degrade if the number of categories is much larger (and indeed, the query will fail if there were more than a million categories meeting the condition, due to the one million row limit discussed earlier).

  • TopN-Filter: Erweiterte Filter können so definiert werden, dass sie nur die oberen (oder unteren) n-Werte nach einem Measure filtern, um beispielsweise nur die ersten 10 Kategorien im visuellen Element oben einzuschließen.TopN filters: Advanced filters can be defined to filter on only the Top (or Bottom) N values ranked by some measure, for example, to only include the Top 10 Categories in the visual above. Dies führt erneut zu zwei Abfragen, die an die zugrunde liegende Quelle gesendet werden.This will again result in two queries being sent to the underlying source. Allerdings gibt die erste Abfrage alle Kategorien der zugrunde liegenden Quelle zurück, dann werden die TopN basierend auf den zurückgegebenen Ergebnissen bestimmt.However, the first query will return all categories from the underlying source, and then the TopN are determined based on the returned results. Abhängigkeit von der Kardinalität der beteiligten Spalte kann dies zu Leistungsproblemen führen (oder Abfragefehlern aufgrund des Zeilengrenzwerts von 1 Mio.).Depending on the cardinality of the column involved, this can lead to performance issues (or query failures due to the 1m row limit).
  • Median: Generell wird jede Aggregation (Sum, Count Distinct usw.) per Push an die zugrunde liegende Quelle übermittelt.Median: Generally, any aggregation (Sum, Count Distinct, so on) is pushed to the underlying source. Dies gilt allerdings nicht für Median, da dieses Aggregat normalerweise nicht von der zugrunde liegenden Quelle unterstützt wird.However, this is not true for Median, as this aggregate is generally not supported by the underlying source. In solchen Fällen werden die Detaildaten aus der zugrunde liegenden Quelle abgerufen, und der Median wird aus den zurückgegebenen Ergebnissen berechnet.In such cases, the detail data is retrieved from the underlying source, and the Median calculated from the returned results. Dies ist sinnvoll, wenn der Median über eine relativ kleine Anzahl von Ergebnissen berechnet werden soll. Es treten jedoch Leistungsprobleme (oder Abfragefehler aufgrund der Zeilenbegrenzung von 1 Mio.) auf, wenn die Kardinalität groß ist.This is reasonable when the median is to be calculated over a relatively small number of results, but performance issues (or query failures due to the 1m row limit) will occur if the cardinality is large. Den Median der Bevölkerungszahl eines Landes zu ermitteln, kann sinnvoll sein, nicht jedoch die Ermittlung des Median von VerkaufspreisenFor example, Median Country Population might be reasonable, but Median Sales Price might not be.
  • Erweiterte Textfilter („enthält“ und ähnlich): Wenn auf einer Textspalte gefiltert wird, erlaubt das erweiterte Filtern Filter wie „enthält“ und „beginnt mit“ usw.Advanced text filters (‘contains’ and similar): When filtering on a text column, the advanced filtering allows filters like ‘contains’ and ‘begins with’ and so on. Diese Filter können sicherlich zu Leistungseinbußen bei einigen Datenquellen führen.These filters can certainly result in degraded performance for some data sources. Insbesondere sollte der Standardfilter „enthält“ nicht verwendet werden, falls wirklich nach einer exakten Übereinstimmung gesucht wird („ist“ oder „ist nicht“).In particular, the default ‘contains’ filter should not be used if what is really required is an exact match (‘is’ or ‘is not’). Obwohl das Ergebnis möglicherweise identisch ist, kann sich abhängig von den tatsächlichen Daten die Leistung aufgrund der Verwendung von Indizes erheblich unterscheiden.Although the results might be the same, depending on the actual data, the performance might be drastically different due to the use of indexes.
  • Datenschnitte mit Mehrfachauswahl: Standardmäßig erlauben Datenschnitte nur eine einzige Auswahl.Multi select slicers: By default, slicers only allow a single selection to be made. Das Zulassen einer Mehrfachauswahl in Filtern kann zu Leistungsproblemen führen, da der Benutzer einen Satz von Elementen im Datenschnitt auswählt (z.B. die zehn Produkte, an die der Benutzer interessiert ist) und jede Auswahl dazu führt, dass Abfragen an die Back-End-Quelle gesendet werden.Allowing multi selection in filters can cause some performance issues, because as the user selects a set of items in the slicer (for example, the ten products they are interested in), then each new selection will result in queries being sent to the backend source. Der Benutzer kann das nächste Element auswählen, bevor die Abfrage abgeschlossen ist, was zu zusätzlicher Last auf der zugrunde liegenden Quelle führen kann.Whilst the user can select the next item prior to the query completing, this does result in extra load on the underlying source.

Diagnostizieren von LeistungsproblemenDiagnosing performance issues

Dieser Abschnitt beschreibt, wie Sie Leistungsprobleme diagnostizieren oder weitere Informationen darüber erhalten können, wie Berichte optimiert werden.This section describes how to diagnose performance issues, or how to get more detailed information to allow the reports to be optimized.

Es wird dringend empfohlen, dass Sie die Diagnose von Leistungsproblemen in Power BI Desktop beginnen und nicht im Power BI-Dienst.It's strongly recommended that any diagnosis of performance issues starts in Power BI Desktop, rather than in the Power BI service. Es ist häufig der Fall, dass Leistungsprobleme einfach auf dem Leistungsgrad der zugrunde liegenden Quelle 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 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 im Power BI-Dienst 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 the Power BI service.

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.

Nehmen wir also an, dass die Schritte (in den vorherigen Paragrafen dieses Abschnitts) befolgt wurden, und wir nun über ein einzelnes visuelles Element auf einer Seite in Power BI Desktop verfügen, das noch immer träge ist.So, let's say those steps (in the previous paragraphs in this section) have been taken - we now have a single visual on a page in Power BI Desktop that is still sluggish. Um die Abfragen zu ermitteln, die durch Power BI Desktop an die zugrunde liegende Quelle gesendet werden, ist es möglich, Ablaufverfolgungen/Diagnoseinformationen anzuzeigen, die womöglich von dieser Quelle ausgegeben werden.To determine the queries that are sent to the underlying source by Power BI Desktop, it's possible to view traces/diagnostic information that might be emitted by that source. Solche Ablaufverfolgungen können auch nützliche Informationen über die Details über die Ausführung der Abfrage 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.

Bestimmen der Abfragen von Power BI DesktopDetermining the queries sent by Power BI Desktop

Standardmäßig protokolliert Power BI Desktop Ereignisse in einer Ablaufverfolgungsdatei mit dem Namen „FlightRecorderCurrent.trc“ während einer gegebenen Sitzung.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 hinzugefügt).For some DirectQuery sources, this log includes all queries sent to the underlying data source (the remaining DirectQuery sources will be included in the future). Die Quellen, die Abfragen an das Protokoll senden, lauten wie folgt:The sources that send 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 AppData-Ordner für den aktuellen Benutzer:The 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, diesen Ordner abzurufen: Wählen Sie in Power BI Desktop Datei > Optionen und Einstellungen > Optionen, und wählen Sie dann 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 Diagnostics. Das folgende Dialogfeld wird angezeigt:The following dialog window appears:

Wenn Sie den Link Ablaufverfolgungsordner öffnen unter Diagnoseoptionen auswählen, wird der folgende Ordner geöffnet:When you select the Open traces folder link, under Diagnostic Options, the following folder opens:

\<User>\AppData\Local\Microsoft\Power BI Desktop\Traces

Navigieren zum übergeordneten Ordner des Ordners, zeigt den Ordner an, 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 gelesen werden, das als kostenloser Download im Rahmen des SQL Server Management Studio verfügbar ist.The trace files can be read 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.

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.:Enter the path to the trace file for the currently open Power BI session, such as:

      C:\Users\<user>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data
    
  3. Öffnen Sie „FilghtRecorderCurrent.trc“.Open FilghtRecorderCurrent.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.

Andere interessante Spalten sind die folgenden:Other columns of interest are the following:

  • 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. Die Daten von TextData werden für das aktuell ausgewählte Ereignis auch im unteren Bereich angezeigt.The TextData for the currently selected event is also displayed in the region at the bottom.
  • EndTime: Wenn das Ereignis abgeschlossen ist.EndTime: When the event completed.
  • Duration (Dauer): 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 (Fehler): 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).

Beachten Sie, dass in der Abbildung oben einige weniger interessante Spalten verschmälert wurden, damit die interessanten Spalten einfacher gelesen werden können.Note that in the image above, some of the less interesting columns have 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 erneut 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 re-opened 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 sehr langen Sitzungen die Gefahr besteht, dass frühe Ereignisse gelöscht werden).Keep individual sessions reasonably small (ten 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 very long sessions there is a chance of early events being dropped).

Grundlegendes zur Form der Abfrage, die von Power BI Desktop gesendet wirdUnderstanding the form of query sent by Power BI Desktop

Die Allgemeine Form von Abfragen, die durch Power BI Desktop gesendet werden, verwendet Unterabfragen für alle referenzierten Tabellen, wobei diese Unterabfragen im Abfrage-Editor definiert werden.The general format of queries created and sent by Power BI Desktop use subselects for each of the tables referenced, where the subselect is as defined by the query defined in Query Editor. Nehmen wir z.B. an, dass die folgenden TPC-DS-Tabellen in SQL Server vorhanden sind:For example, assume the following TPC-DS tables in SQL Server:

Bedenken Sie die folgende Abfrage:Consider the following query:

Diese Abfrage ergibt folgendes visuelles Element:That query results in the following visual:

Wenn Sie dieses visuelle Element aktualisieren, ergibt dies eine SQL-Abfrage, die Sie im nächsten Paragraphen sehen können.Refreshing that visual will result in the SQL query shown below the next paragraph. Wie Sie erkennen können, gibt es drei untergeordnete SELECT-Ausdrücke für Web Sales, Item und Date_dim, die jeweils alle Spalten in der jeweiligen Tabelle zurückgeben, obwohl das visuelle Element tatsächlich nur auf vier Spalten verweist.As you can tell, there are three subselects for Web Sales, Item, and Date_dim, that each return all the columns on the respective table, even though only four columns are actually referenced by the visual. Diese Abfragen in den untergeordneten SELECT-Ausdrücken (schattiert) sind genau die Ergebnisse der Abfragen, die im Abfrage-Editor definiert sind.These queries in the subselects (they're shaded) are exactly the result of the queries defined in Query editor. Die Verwendung untergeordneter SELECT-Ausdrücke beeinträchtigt die Leistung nicht für Datenquellen, die bisher für DirectQuery unterstützt wurden.Use of subselects in this manner has not been found to impact performance, for the data sources so far supported for DirectQuery. Datenquellen wie SQL Server optimieren einfach die Verweise auf die anderen Spalten.Data sources like SQL Server simply optimize away the references to the other columns.

Ein Grund, warum Power BI dieses Muster übernimmt, ist, da die verwendete SQL-Abfrage direkt durch den Analyst bereitgestellt werden kann. Sie wird also „wie bereitgestellt“ verwendet, ohne dass versucht wird, sie umzuschreiben.One reason Power BI employs this pattern is because the SQL query used can be provided directly by the analyst, so it's used "as provided", without an attempt to rewrite it.

Nächste SchritteNext steps

Dieser Artikel beschreibt Aspekte von DirectQuery, die für alle Datenquellen gängig sind.This article describes aspects of DirectQuery that are common across all data sources. Es gibt bestimmte Details, die spezifisch für einzelne Datenquellen sind.There are certain details that are specific to individual sources. Informationen finden Sie in den folgenden Themen, die bestimmte Quellen abdecken:See the following topics covering specific sources:

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