Beispiele für das Query Folding
Dieser Artikel enthält einige Beispielszenarien für jedes der drei möglichen Ergebnisse von Query Folding. Er enthält auch einige Vorschläge, wie Sie den Mechanismus zum Query Folding optimal nutzen können und welche Auswirkungen er auf Ihre Abfragen haben kann.
Das Szenario
Stellen Sie sich ein Szenario vor, in dem Sie unter Verwendung der Wide World Importers-Datenbank für Azure Synapse Analytics SQL-Datenbankeine Abfrage in Power Query erstellen sollen, die eine Verbindung zur Tabelle fact_Sale
herstellt und die letzten 10 Verkäufe mit nur den folgenden Feldern abruft:
- Verkauf Schlüssel
- Kundenschlüssel
- Rechungsdatumsschlüssel
- Beschreibung
- Menge
Hinweis
Zu Demonstrationszwecken wird in diesem Artikel die Datenbank verwendet, die im Tutorial zum Laden der Wide World Importers-Datenbank in Azure Synapse Analytics beschrieben ist. Der Hauptunterschied in diesem Artikel ist, dass die Tabelle fact_Sale
nur Daten für das Jahr 2000 enthält, mit insgesamt 3.644.356 Zeilen.
Auch wenn die Ergebnisse nicht genau mit den Ergebnissen übereinstimmen, die Sie erhalten, wenn Sie die Anleitung aus der Azure Synapse Analytics-Dokumentation befolgen, ist es das Ziel dieses Artikels, die Kernkonzepte und die Auswirkungen, die das Query Folding auf Ihre Abfragen haben kann, zu zeigen.
In diesem Artikel werden drei Möglichkeiten aufgezeigt, wie man mit verschiedenen Stufen von Query Folding das gleiche Ergebnis erzielen kann:
- Kein Query Folding
- Teilweise Faltung der Abfrage
- Vollständiges Query Folding
Kein Beispiel für das Query Folding
Wichtig
Abfragen, die sich ausschließlich auf unstrukturierte Datenquellen stützen oder nicht über eine Berechnungsmaschine verfügen, wie z. B. CSV- oder Excel-Dateien, verfügen nicht über Abfrage-Faltfunktionen. Das bedeutet, dass Power Query alle erforderlichen Datentransformationen mit Hilfe der Power Query Engine auswertet.
Nachdem Sie eine Verbindung zu Ihrer Datenbank hergestellt und zur Tabelle fact_Sale
navigiert haben, wählen Sie die Transformation Keep bottom rows, die sich in der Gruppe Reduce rows der Registerkarte Home befindet.
Nach Auswahl dieser Transformation erscheint ein neuer Dialog. In diesem neuen Dialogfeld können Sie die Anzahl der Zeilen eingeben, die Sie beibehalten möchten. Geben Sie in diesem Fall den Wert 10 ein und wählen Sie dann OK.
Tipp
In diesem Fall ergibt die Durchführung dieser Operation das Ergebnis der letzten zehn Verkäufe. In den meisten Szenarien empfehlen wir, dass Sie eine explizitere Logik bereitstellen, die definiert, welche Zeilen als letzte betrachtet werden, indem Sie eine Sortieroperation auf die Tabelle anwenden.
Wählen Sie dann die Transformation Spalten auswählen aus, die sich in der Gruppe Spalten verwalten der Registerkarte Home befindet. Sie können dann die Spalten auswählen, die Sie in Ihrer Tabelle behalten möchten, und den Rest entfernen.
Schließlich wählen Sie im Dialgofeld Choose columns die Spalten Sale Key
, Customer Key
, Invoice Date Key
, Description
und Quantity
und wählen Sie anschließend OK.
Das folgende Codebeispiel ist das vollständige M-Skript für die von Ihnen erstellte Abfrage:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Kept bottom rows" = Table.LastN(Navigation, 10),
#"Choose columns" = Table.SelectColumns(#"Kept bottom rows", {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"})
in
#"Choose columns""
Keine Faltung der Abfrage: Die Auswertung der Abfrage verstehen
Unter Angewandte Schritte im Power Query-Editor werden Sie feststellen, dass die Abfrage-Faltkennzeichen für Beibehaltene untere Zeilen und Spalten auswählen als Schritte markiert sind, die außerhalb der Datenquelle oder, mit anderen Worten, von der Power Query-Engine ausgewertet werden.
Sie können mit der rechten Maustaste auf den letzten Schritt Ihrer Abfrage klicken, den Schritt mit der Bezeichnung Spalten auswählen, und die Option Abfrageplan anzeigenauswählen. Das Ziel des Abfrageplans ist es, Ihnen einen detaillierten Überblick über den Ablauf Ihrer Abfrage zu geben. Weitere Informationen zu dieser Funktion finden Sie unter Abfrageplan.
Jedes Kästchen im vorherigen Bild wird als Knotenbezeichnet. Ein Knoten stellt die Aufschlüsselung des Vorgangs zur Erfüllung dieser Abfrage dar. Knoten, die Datenquellen darstellen, wie SQL Server im obigen Beispiel und der Knoten Value.NativeQuery
, stellen dar, welcher Teil der Abfrage an die Datenquelle ausgelagert wird. Die übrigen Knoten, in diesem Fall Table.LastN
und Table.SelectColumns
, die in dem Rechteck in der vorherigen Abbildung hervorgehoben sind, werden von der Power Query Engine ausgewertet. Diese beiden Knoten stehen für die beiden Transformationen, die Sie hinzugefügt haben: Kept bottom rows und Choose columns. Die übrigen Knoten stellen Vorgänge dar, die auf der Ebene Ihrer Datenquelle stattfinden.
Um die genaue Anfrage zu sehen, die an Ihre Datenquelle gesendet wird, wählen Sie Details anzeigen im Knoten Value.NativeQuery
.
Diese Datenquellenanforderung ist in der Muttersprache Ihrer Datenquelle. In diesem Fall ist diese Sprache SQL, und diese Anweisung stellt eine Anfrage für alle Zeilen und Felder der Tabelle fact_Sale
dar.
Die Konsultation dieser Datenquellenanforderung kann Ihnen helfen, die Aussage des Abfrageplans besser zu verstehen:
Sql.Database
: Dieser Knoten stellt den Zugriff auf die Datenquelle dar. Stellt eine Verbindung zur Datenbank her und sendet Metadatenanfragen, um deren Fähigkeiten zu verstehen.Value.NativeQuery
: Stellt die Anfrage dar, die von Power Query erzeugt wurde, um die Abfrage zu erfüllen. Power Query sendet die Datenanforderungen in einer Native-SQL-Anweisung an die Datenquelle. In diesem Fall sind das alle Datensätze und Felder (Spalten) aus der Tabellefact_Sale
. Für dieses Szenario ist dieser Fall unerwünscht, da die Tabelle Millionen von Zeilen enthält und nur die letzten 10 Zeilen von Interesse sind.Table.LastN
: Sobald Power Query alle Datensätze aus der Tabellefact_Sale
erhalten hat, verwendet es die Power Query Engine, um die Tabelle zu filtern und nur die letzten 10 Zeilen zu behalten.Table.SelectColumns
: Power Query verwendet die Ausgabe des KnotensTable.LastN
und wendet eine neue Transformation namensTable.SelectColumns
an, die die spezifischen Spalten auswählt, die Sie aus einer Tabelle behalten möchten.
Für ihre Auswertung musste diese Abfrage alle Zeilen und Felder aus der Tabelle fact_Sale
herunterladen. Die Verarbeitung dieser Abfrage in einer Standardinstanz von Power BI Dataflows dauerte durchschnittlich 6 Minuten und 1 Sekunde (was die Auswertung und das Laden von Daten in Dataflows berücksichtigt).
Beispiel für das Falten einer Teilabfrage
Nachdem Sie eine Verbindung zur Datenbank hergestellt und zur Tabelle fact_Sale
navigiert haben, wählen Sie zunächst die Spalten aus, die Sie aus Ihrer Tabelle übernehmen möchten. Wählen Sie die Transformation Spalten auswählen aus, die sich in der Gruppe Spalten verwalten auf der Registerkarte Home befindet. Diese Transformation hilft Ihnen, explizit die Spalten auszuwählen, die Sie in Ihrer Tabelle behalten wollen, und den Rest zu entfernen.
Wählen Sie im Dialogfeld Choose columns die Spalten Sale Key
, Customer Key
, Invoice Date Key
, Description
und Quantity
, dann wählen Sie OK.
Sie erstellen nun eine Logik, mit der die Tabelle so sortiert wird, dass die letzten Verkäufe am Ende der Tabelle stehen. Wählen Sie die Spalte Sale Key
, die den Primärschlüssel und die inkrementelle Reihenfolge oder den Index der Tabelle darstellt. Sortieren Sie die Tabelle nur nach diesem Feld in aufsteigender Reihenfolge über das Kontextmenü der Spalte.
Wählen Sie dann das Kontextmenü der Tabelle und wählen Sie die Transformation Keep bottom rows.
In Keep bottom rowsgeben Sie den Wert 10 ein und wählen dann OK.
Das folgende Codebeispiel ist das vollständige M-Skript für die von Ihnen erstellte Abfrage:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Choose columns" = Table.SelectColumns(Navigation, {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}),
#"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Ascending}}),
#"Kept bottom rows" = Table.LastN(#"Sorted rows", 10)
in
#"Kept bottom rows"
Beispiel für die teilweise Faltung von Abfragen: Die Auswertung der Abfrage verstehen
Im Bereich „Angewandte Schritte“ (Applied Steps) werden Sie feststellen, dass die Query Folding-Indikatoren anzeigen, dass die letzte von Ihnen hinzugefügte Transformation Kept bottom rows
als ein Schritt markiert ist, der außerhalb der Datenquelle oder, mit anderen Worten, von der Power Query Engine ausgewertet wird.
Sie können mit der rechten Maustaste auf den letzten Schritt Ihrer Abfrage ( Kept bottom rows
) klicken und die Option Abfrageplan wählen, um besser zu verstehen, wie Ihre Abfrage ausgewertet werden könnte.
Jedes Kästchen im vorherigen Bild wird als Knotenbezeichnet. Ein Knoten repräsentiert jeden Prozess, der stattfinden muss (von links nach rechts), damit Ihre Abfrage ausgewertet werden kann. Einige dieser Knoten können in Ihrer Datenquelle ausgewertet werden, während andere, wie der Knoten für Table.LastN
, der durch den Schritt Kept bottom rows dargestellt wird, mit Hilfe der Power Query Engine ausgewertet werden.
Um die genaue Anfrage zu sehen, die an Ihre Datenquelle gesendet wird, wählen Sie Details anzeigen im Knoten Value.NativeQuery
.
Diese Anfrage ist in der Muttersprache Ihrer Datenquelle. In diesem Fall ist die Sprache SQL, und diese Anweisung stellt eine Anforderung für alle Zeilen dar, wobei nur die angeforderten Felder aus der Tabelle fact_Sale
nach dem Feld Sale Key
geordnet sind.
Die Konsultation dieser Datenquellenanforderung kann Ihnen helfen, die Aussage des vollständigen Abfrageplans besser zu verstehen. Die Reihenfolge der Knoten ist ein sequentieller Prozess, der mit der Abfrage der Daten aus Ihrer Datenquelle beginnt:
Sql.Database
: Stellt eine Verbindung zur Datenbank her und sendet Metadatenanfragen, um deren Fähigkeiten zu verstehen.Value.NativeQuery
: Stellt die Anfrage dar, die von Power Query erzeugt wurde, um die Abfrage zu erfüllen. Power Query sendet die Datenanforderungen in einer Native-SQL-Anweisung an die Datenquelle. In diesem Fall sind das alle Datensätze, wobei nur die angeforderten Felder aus der Tabellefact_Sale
in der Datenbank in aufsteigender Reihenfolge nach dem FeldSales Key
sortiert sind.Table.LastN
: Sobald Power Query alle Datensätze aus der Tabellefact_Sale
erhalten hat, verwendet es die Power Query Engine, um die Tabelle zu filtern und nur die letzten 10 Zeilen zu behalten.
Für ihre Auswertung musste diese Abfrage alle Zeilen und nur die erforderlichen Felder aus der Tabelle fact_Sale
herunterladen. Die Verarbeitung in einer Standardinstanz von Power BI Dataflows dauerte durchschnittlich 3 Minuten und 4 Sekunden (was die Auswertung und das Laden von Daten in Dataflows berücksichtigt).
Beispiel für das Falten einer vollständigen Abfrage
Nachdem Sie eine Verbindung zur Datenbank hergestellt und zur Tabelle fact_Sale
navigiert haben, wählen Sie zunächst die Spalten aus, die Sie aus Ihrer Tabelle übernehmen möchten. Wählen Sie die Transformation Spalten auswählen aus, die sich in der Gruppe Spalten verwalten auf der Registerkarte Home befindet. Diese Transformation hilft Ihnen, explizit die Spalten auszuwählen, die Sie in Ihrer Tabelle behalten wollen, und den Rest zu entfernen.
Wählen Sie unter Choose columns die Spalten Sale Key
, Customer Key
, Invoice Date Key
, Description
und Quantity
und wählen Sie anschließend OK.
Sie erstellen nun eine Logik, die die Tabelle so sortiert, dass die letzten Verkäufe ganz oben in der Tabelle stehen. Wählen Sie die Spalte Sale Key
, die den Primärschlüssel und die inkrementelle Reihenfolge oder den Index der Tabelle darstellt. Sortieren Sie die Tabelle nur nach diesem Feld in absteigender Reihenfolge über das Kontextmenü für die Spalte.
Wählen Sie dann das Kontextmenü der Tabelle und wählen Sie die Transformation Keep top rows.
In Keep top rowsgeben Sie den Wert 10 ein und wählen dann OK.
Das folgende Codebeispiel ist das vollständige M-Skript für die von Ihnen erstellte Abfrage:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Choose columns" = Table.SelectColumns(Navigation, {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}),
#"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Descending}}),
#"Kept top rows" = Table.FirstN(#"Sorted rows", 10)
in
#"Kept top rows"
Beispiel für das Falten einer vollständigen Abfrage: Die Auswertung der Abfrage verstehen
Wenn Sie den Bereich „Angewandte Schritte“ überprüfen, werden Sie feststellen, dass die Query Folding-Indikatoren anzeigen, dass die von Ihnen hinzugefügten Transformationen Spalten auswählen, Sortierte Zeilenund Obere Zeilen behaltenals Schritte markiert sind, die in der Datenquelle ausgewertet werden.
Sie können mit der rechten Maustaste auf den letzten Schritt Ihrer Abfrage klicken, den Schritt mit der Bezeichnung Kept top rows, und die Option Query planauswählen.
Diese Anfrage ist in der Muttersprache Ihrer Datenquelle. In diesem Fall ist diese Sprache SQL, und diese Anweisung stellt eine Anfrage für alle Zeilen und Felder der Tabelle fact_Sale
dar.
Die Konsultation dieser Datenquellenabfrage kann Ihnen helfen, die Aussage des vollständigen Abfrageplans besser zu verstehen:
Sql.Database
: Stellt eine Verbindung zur Datenbank her und sendet Metadatenanfragen, um deren Fähigkeiten zu verstehen.Value.NativeQuery
: Stellt die Anfrage dar, die von Power Query erzeugt wurde, um die Abfrage zu erfüllen. Power Query sendet die Datenanforderungen in einer Native-SQL-Anweisung an die Datenquelle. In diesem Fall bedeutet dies, dass nur die ersten 10 Datensätze der Tabellefact_Sale
abgefragt werden, und zwar nur die erforderlichen Felder, nachdem sie mit Hilfe des FeldesSale Key
in absteigender Reihenfolge sortiert wurden.
Hinweis
Während es in der Sprache T-SQL keine Klausel gibt, mit der man die untersten Zeilen einer Tabelle SELECT kann, gibt es eine TOP-Klausel, die die obersten Zeilen einer Tabelle abruft.
Für die Auswertung lädt diese Abfrage nur 10 Zeilen herunter, mit nur den Feldern, die Sie aus der Tabelle fact_Sale
angefordert haben. Die Verarbeitung dieser Abfrage dauerte in einer Standardinstanz von Power BI Dataflows durchschnittlich 31 Sekunden (was die Auswertung und das Laden von Daten in Dataflows berücksichtigt).
Leistungsvergleich
Um besser zu verstehen, wie sich das Query Folding auf diese Abfragen auswirkt, können Sie Ihre Abfragen aktualisieren, die Zeit aufzeichnen, die für die vollständige Aktualisierung jeder Abfrage benötigt wird, und sie vergleichen. Der Einfachheit halber werden in diesem Artikel die durchschnittlichen Aktualisierungszeiten angegeben, die mit der Aktualisierungsmechanik für Power BI-Dataflows bei der Verbindung mit einer dedizierten Azure Synapse Analytics-Umgebung mit DW2000c als Serviceebene erfasst wurden.
Die Aktualisierungszeit für jede Abfrage war wie folgt:
Beispiel | Label | Zeit in Sekunden. |
---|---|---|
Kein Query Folding | Kein | 361 |
Teilweise Faltung der Abfrage | Teilweise | 184 |
Vollständiges Query Folding | Vollständig | 31 |
Oft ist eine Abfrage, die vollständig auf die Datenquelle zurückgeführt wird, leistungsfähiger als ähnliche Abfragen, die nicht vollständig auf die Datenquelle zurückgeführt werden. Dafür kann es viele Gründe geben. Diese Gründe reichen von der Komplexität der Transformationen, die Ihre Abfrage durchführt, bis hin zu den Abfrageoptimierungen, die in Ihrer Datenquelle implementiert sind, wie z. B. Indizes und spezielle Rechen- und Netzwerkressourcen. Dennoch gibt es zwei spezifische Schlüsselprozesse, die Query Folding zu verwenden versucht, um die Auswirkungen dieser beiden Prozesse auf Power Query zu minimieren:
- Daten während der Übertragung
- Von der Power Query Engine ausgeführte Transformationen
In den folgenden Abschnitten wird erläutert, wie sich diese beiden Prozesse auf die oben genannten Abfragen auswirken.
Daten während der Übertragung
Wenn eine Abfrage ausgeführt wird, versucht sie als einen ihrer ersten Schritte, die Daten aus der Datenquelle zu holen. Welche Daten aus der Datenquelle geholt werden, wird durch den Mechanismus zum Query Folding festgelegt. Dieser Mechanismus identifiziert die Schritte der Abfrage, die an die Datenquelle ausgelagert werden können.
In der folgenden Tabelle ist die Anzahl der aus der Tabelle fact_Sale
der Datenbank angeforderten Zeilen aufgeführt. Die Tabelle enthält auch eine kurze Beschreibung der SQL-Anweisung, mit der diese Daten von der Datenquelle angefordert werden.
Beispiel | Label | Angefragte Zeilen | Beschreibung |
---|---|---|---|
Kein Query Folding | Kein | 3644356 | Abfrage aller Felder und aller Datensätze aus der Tabelle fact_Sale |
Teilweise Faltung der Abfrage | Teilweise | 3644356 | Anforderung aller Datensätze, aber nur der erforderlichen Felder aus der Tabelle fact_Sale , nachdem sie nach dem Feld Sale Key sortiert wurde |
Vollständiges Query Folding | Vollständig | 10 | Abfrage nur der erforderlichen Felder und der TOP 10 Datensätze der Tabelle fact_Sale , nachdem sie nach dem Feld Sale Key absteigend sortiert wurden |
Wenn Daten von einer Datenquelle angefordert werden, muss die Datenquelle die Ergebnisse für die Anforderung berechnen und dann die Daten an den Anforderer senden. Während die Computerressourcen bereits erwähnt wurden, können die Netzwerkressourcen für das Verschieben der Daten von der Datenquelle zu Power Query und die anschließende Fähigkeit von Power Query, die Daten effektiv zu empfangen und für die lokal stattfindenden Transformationen vorzubereiten, je nach Größe der Daten einige Zeit in Anspruch nehmen.
Für die gezeigten Beispiele musste Power Query über 3,6 Millionen Zeilen aus der Datenquelle abfragen, und zwar für die Beispiele ohne Query Folding und für das partielle Query Folding. Für das Beispiel der vollständigen Abfrage wurden nur 10 Zeilen angefordert. Für die abgefragten Felder hat das Beispiel ohne Abfrage alle verfügbaren Felder der Tabelle abgefragt. Sowohl bei der teilweisen als auch bei der vollständigen Abfrage werden nur die benötigten Felder abgefragt.
Achtung
Wir empfehlen, dass Sie für Abfragen oder Tabellen mit großen Datenmengen inkrementelle Aktualisierungslösungen implementieren, die das Query Folding nutzen. Verschiedene Produktintegrationen von Power Query implementieren Timeouts, um lang laufende Abfragen zu beenden. Einige Datenquellen setzen auch Timeouts für lange laufende Sitzungen ein, wenn sie versuchen, teure Abfragen auf ihren Servern auszuführen. Weitere Informationen: Verwendung der inkrementellen Aktualisierung mit Dataflows und Inkrementelle Aktualisierung für semantische Modelle
Von der Power Query Engine ausgeführte Transformationen
In diesem Artikel wurde gezeigt, wie Sie den Abfrageplan verwenden können, um besser zu verstehen, wie Ihre Abfrage ausgewertet werden könnte. Im Abfrageplan können Sie die genauen Knoten der Transformationsoperationen sehen, die von der Power Query Engine ausgeführt werden.
Die folgende Tabelle zeigt die Knoten aus den Abfrageplänen der vorherigen Abfragen, die von der Power Query Engine ausgewertet worden wären.
Beispiel | Label | Power Query Engine Transformationsknoten |
---|---|---|
Kein Query Folding | Kein | Table.LastN , Table.SelectColumns |
Teilweise Faltung der Abfrage | Teilweise | Table.LastN |
Vollständiges Query Folding | Vollständig | – |
Bei den in diesem Artikel vorgestellten Beispielen erfordert das vollständige Abfrage-Faltbeispiel keine Transformationen innerhalb der Power Query-Engine, da die erforderliche Ausgabetabelle direkt aus der Datenquelle stammt. Im Gegensatz dazu mussten bei den beiden anderen Abfragen einige Berechnungen in der Power Query Engine durchgeführt werden. Aufgrund der Datenmenge, die von diesen beiden Abfragen verarbeitet werden muss, nimmt der Prozess für diese Beispiele mehr Zeit in Anspruch als das Beispiel für das Falten der vollständigen Abfrage.
Transformationen können in die folgenden Kategorien eingeteilt werden:
Typ des Betreibers | Beschreibung |
---|---|
Remote | Operatoren, die Datenquellenknoten sind. Die Auswertung dieser Operatoren erfolgt außerhalb von Power Query. |
Streaming | Die Marktteilnehmer sind Durchlauferhitzer. Zum Beispiel kann Table.SelectRows mit einem einfachen Filter die Ergebnisse filtern, während sie den Operator durchlaufen, und muss nicht alle Zeilen erfassen, bevor die Daten verschoben werden. Table.SelectColumns und Table.ReorderColumns sind weitere Beispiele für diese Art von Operatoren. |
Vollständiger Scan | Operatoren, die alle Zeilen erfassen müssen, bevor die Daten an den nächsten Operator in der Kette weitergegeben werden können. Um beispielsweise Daten zu sortieren, muss Power Query alle Daten erfassen. Weitere Beispiele für Full-Scan-Operatoren sind Table.Group , Table.NestedJoin und Table.Pivot . |
Tipp
Zwar ist nicht jede Transformation gleich leistungsfähig, aber in den meisten Fällen ist es besser, weniger Transformationen zu haben.
Überlegungen und Vorschläge
- Befolgen Sie bei der Erstellung einer neuen Abfrage die bewährten Verfahren, die unter Best Practices in Power Queryaufgeführt sind.
- Verwenden Sie die Abfrage-Faltindikatoren, um zu überprüfen, welche Schritte Ihre Abfrage am Falten hindern. Ordnen Sie sie gegebenenfalls neu an, um die Faltung zu erhöhen.
- Verwenden Sie den Abfrageplan, um festzustellen, welche Transformationen in der Power Query Engine für einen bestimmten Schritt durchgeführt werden. Erwägen Sie, Ihre bestehende Abfrage zu ändern, indem Sie die Schritte neu anordnen. Prüfen Sie dann den Abfrageplan des letzten Schritts Ihrer Abfrage erneut und sehen Sie, ob der Abfrageplan besser aussieht als der vorherige. Der neue Abfrageplan hat zum Beispiel weniger Knoten als der vorherige, und die meisten Knoten sind „Streaming“-Knoten und keine „Full Scan“-Knoten. Bei Datenquellen, die Folding unterstützen, stellen alle Knoten im Abfrageplan außer
Value.NativeQuery
und Datenquellen-Zugriffsknoten Transformationen dar, die nicht gefaltet wurden. - Wenn verfügbar, können Sie die Option View Native Query (oder View data source query) verwenden, um sicherzustellen, dass Ihre Abfrage in die Datenquelle zurückverwandelt werden kann. Wenn diese Option für Ihren Schritt deaktiviert ist und Sie eine Quelle verwenden, in der sie normalerweise aktiviert ist, haben Sie einen Schritt erstellt, der das Query Folding verhindert. Wenn Sie eine Quelle verwenden, die diese Option nicht unterstützt, können Sie sich auf die Abfrage-Faltindikatoren und den Abfrageplan verlassen.
- Verwenden Sie die Abfragediagnosetools, um die an Ihre Datenquelle gesendeten Anfragen besser zu verstehen, wenn für den Connector Abfrage-Faltfunktionen verfügbar sind.
- Bei der Kombination von Daten, die aus der Verwendung mehrerer Connectors stammen, versucht Power Query, so viel Arbeit wie möglich auf beide Datenquellen zu verteilen und dabei die für jede Datenquelle definierten Datenschutzstufen einzuhalten.
- Lesen Sie den Artikel privacy levels, um Ihre Abfragen vor einem Fehler der Data Privacy Firewall zu schützen.
- Verwenden Sie andere Tools, um die Faltung der Abfrage aus der Perspektive der von der Datenquelle empfangenen Anfrage zu überprüfen. Anhand des Beispiels in diesem Artikel können Sie den Microsoft SQL Server Profiler verwenden, um die von Power Query gesendeten und vom Microsoft SQL Server empfangenen Anfragen zu überprüfen.
- Wenn Sie einen neuen Schritt zu einer vollständig gefalteten Abfrage hinzufügen und der neue Schritt ebenfalls gefaltet wird, sendet Power Query möglicherweise eine neue Anfrage an die Datenquelle, anstatt eine zwischengespeicherte Version des vorherigen Ergebnisses zu verwenden. In der Praxis kann dieser Prozess dazu führen, dass scheinbar einfache Operationen an einer kleinen Datenmenge in der Vorschau länger dauern als erwartet. Diese längere Aktualisierungszeit ist darauf zurückzuführen, dass Power Query die Datenquelle neu abfragt, anstatt mit einer lokalen Kopie der Daten zu arbeiten.