Abfragefaltungsbeispiele

Dieser Artikel enthält einige Beispielszenarien für jede der drei möglichen Ergebnisse für die Abfragefaltung. Es enthält auch einige Vorschläge, wie Sie den Abfragefalzmechanismus optimal aus dem Abfragefaltmechanismus herausholen können, und die Auswirkung, die sie in Ihren Abfragen haben kann.

Szenario

Stellen Sie sich ein Szenario vor, in dem Sie mithilfe der Datenbank "Wide World Importers" für Azure Synapse Analytics SQL-Datenbank eine Abfrage in Power Query erstellen, die eine Verbindung mit der fact_Sale Tabelle herstellt und die letzten 10 Verkäufe mit nur den folgenden Feldern abruft:

  • Verkaufsschlüssel
  • Kundenschlüssel
  • Rechnungsdatumsschlüssel
  • BESCHREIBUNG
  • Menge

Hinweis

Zu Demonstrationszwecken verwendet dieser Artikel die Datenbank, die im Lernprogramm zum Laden der Datenbank der Wide World Importers in Azure Synapse Analytics beschrieben wird. Der Hauptunterschied in diesem Artikel ist die Tabelle, die fact_Sale nur Daten für das Jahr 2000 enthält, mit insgesamt 3.644.356 Zeilen.

Obwohl die Ergebnisse möglicherweise nicht genau mit den Ergebnissen übereinstimmen, die Sie erhalten, indem Sie das Lernprogramm aus der dokumentation Azure Synapse Analytics folgen, besteht das Ziel dieses Artikels darin, die Kernkonzepte und Auswirkungen zu präsentieren, die die Abfragefaltung in Ihren Abfragen haben kann.

Beispielausgabetabelle, die aus der tabelle fact_Sale der Wide World Importers Azure Synapse Analytics-Datenbank abgeleitet wurde.

In diesem Artikel werden drei Möglichkeiten vorgestellt, um die gleiche Ausgabe mit unterschiedlichen Abfragefaltebenen zu erzielen:

  • Keine Abfragefaltung
  • Partielle Abfragefaltung
  • Vollständige Abfragefaltung

Kein Abfragefaltbeispiel

Wichtig

Abfragen, die ausschließlich auf unstrukturierte Datenquellen basieren oder kein Berechnungsmodul haben, z. B. CSV- oder Excel-Dateien, verfügen nicht über Abfragefaltfunktionen. Dies bedeutet, dass Power Query alle erforderlichen Datentransformationen mithilfe des Power Query-Moduls auswertet.

Nachdem Sie eine Verbindung mit Ihrer Datenbank hergestellt und zur fact_Sale Tabelle navigiert haben, wählen Sie die Transformation der unteren Zeilen in der Gruppe "Zeilen reduzieren " der Registerkarte " Start " aus.

Behalten Sie die Transformation der unteren Zeilen in der Gruppe

Nachdem Sie diese Transformation ausgewählt haben, wird ein neues Dialogfeld angezeigt. In diesem neuen Dialogfeld können Sie die Anzahl der Zeilen eingeben, die Sie beibehalten möchten. Geben Sie für diesen Fall den Wert 10 ein, und wählen Sie dann "OK" aus.

Geben Sie den Wert 10 in das Dialogfeld

Tipp

In diesem Fall führt die Ausführung dieses Vorgangs zum Ergebnis der letzten zehn Verkäufe. In den meisten Szenarien wird empfohlen, eine explizitere Logik bereitzustellen, die definiert, welche Zeilen zuletzt durch Anwenden eines Sortiervorgangs auf der Tabelle betrachtet werden.

Wählen Sie als Nächstes die Transformation " Spalten auswählen" in der Gruppe "Spalten verwalten " der Registerkarte " Start " aus. Anschließend können Sie die Spalten auswählen, die Sie aus der Tabelle behalten möchten, und den Rest entfernen.

Auswählen der Spaltentransformation für das Beispiel für keine Abfragefaltung.

Wählen Sie schließlich im Dialogfeld "Spalten auswählen" das Sale KeyDialogfeld DescriptionQuantityCustomer KeyInvoice Date Key"Spalten auswählen" aus, und wählen Sie dann "OK" aus.

Wählen Sie die Spalten

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 Abfragefaltung: Grundlegendes zur Abfrageauswertung

Unter "Angewendete Schritte im Power Query-Editor" werden Sie feststellen, dass die Abfragefaltindikatoren für die untersten Zeilen beibehalten und Spalten auswählen als Schritte gekennzeichnet sind, die außerhalb der Datenquelle ausgewertet werden, oder anders ausgedrückt durch das Power Query-Modul.

Bereich

Sie können mit der rechten Maustaste auf den letzten Schritt Ihrer Abfrage, den namen " Spalten auswählen" klicken und die Option auswählen, die den Ansichtsabfrageplan liest. Das Ziel des Abfrageplans besteht darin, Ihnen eine detaillierte Ansicht der Ausführung Ihrer Abfrage bereitzustellen. Weitere Informationen zu diesem Feature finden Sie im Abfrageplan.

Abfrageplan für die erstellte Abfrage mit mehreren Knoten, von denen sich zwei in einem Rechteck befinden, das die Knoten darstellt, die vom Power Query-Modul ausgewertet werden.

Jedes Feld im vorherigen Bild wird als Knoten bezeichnet. Ein Knoten stellt die Vorgangsaufschlüsselung dar, um diese Abfrage zu erfüllen. Knoten, die Datenquellen darstellen, z. B. SQL Server im obigen Beispiel und der Value.NativeQuery Knoten, stellen dar, welcher Teil der Abfrage in die Datenquelle geladen wird. Die restlichen Knoten, in diesem Fall Table.LastN und Table.SelectColumns hervorgehoben im Rechteck im vorherigen Bild, werden vom Power Query-Modul ausgewertet. Diese beiden Knoten stellen die beiden Transformationen dar, die Sie hinzugefügt haben, beibehaltene untere Zeilen und Spalten auswählen. Der Rest der Knoten stellt Vorgänge dar, die auf Datenquellenebene auftreten.

Um die genaue Anforderung anzuzeigen, die an Ihre Datenquelle gesendet wird, wählen Sie " Details anzeigen " im Value.NativeQuery Knoten aus.

SQL-Anweisung innerhalb von Value.NativeQuery, die eine Anforderung aller Felder und Datensätze aus der fact_Sale Tabelle in der Datenbank darstellt.

Diese Datenquellenanforderung befindet sich in der muttersprachen Sprache Ihrer Datenquelle. In diesem Fall ist diese Sprache SQL und diese Anweisung stellt eine Anforderung für alle Zeilen und Felder aus der fact_Sale Tabelle dar.

Die Beratung dieser Datenquellenanfrage kann Ihnen helfen, den Artikel besser zu verstehen, den der Abfrageplan vermittelt:

  • Sql.Database: Dieser Knoten stellt den Datenquellenzugriff dar. Stellt eine Verbindung mit der Datenbank bereit und sendet Metadatenanforderungen, um seine Funktionen zu verstehen.
  • Value.NativeQuery: Stellt die Anforderung dar, die von Power Query generiert wurde, um die Abfrage zu erfüllen. Power Query sendet die Datenanforderungen in einer nativen SQL-Anweisung an die Datenquelle. In diesem Fall stellt das alle Datensätze und Felder (Spalten) aus der fact_Sale Tabelle dar. Für dieses Szenario ist dieser Fall unerwünschter Fall, da die Tabelle Millionen von Zeilen enthält und das Interesse nur in den letzten 10 liegt.
  • Table.LastN: Sobald Power Query alle Datensätze aus der fact_Sale Tabelle empfängt, verwendet es das Power Query-Modul, um die Tabelle zu filtern und nur die letzten 10 Zeilen beizubehalten.
  • Table.SelectColumns: Power Query verwendet die Ausgabe des Table.LastN Knotens und wendet eine neue Transformation Table.SelectColumnsan, die die spezifischen Spalten auswählt, die Sie von einer Tabelle beibehalten möchten.

Für die Auswertung musste diese Abfrage alle Zeilen und Felder aus der fact_Sale Tabelle herunterladen. Diese Abfrage dauerte durchschnittlich 6 Minuten und 1 Sekunde, um in einer Standardinstanz von Power BI-Datenflüssen verarbeitet zu werden (was die Auswertung und das Laden von Daten in Datenflüsse berücksichtigt).

Beispiel für partielle Abfragefaltung

Nachdem Sie eine Verbindung mit der Datenbank hergestellt und zur fact_Sale Tabelle navigiert haben, wählen Sie zunächst die Spalten aus, die Sie von der Tabelle beibehalten möchten. Wählen Sie die Transformation " Spalten auswählen " in der Gruppe "Spalten verwalten" auf der Registerkarte " Start " aus. Mit dieser Transformation können Sie die Spalten explizit auswählen, die Sie von der Tabelle beibehalten möchten, und den Rest entfernen.

Auswählen der Spaltentransformation für das Teilabfragefaltbeispiel.

Wählen Sie im Dialogfeld "Spalten auswählen" das Sale KeyCustomer KeyDescriptionInvoice Date KeyQuantity Dialogfeld "Spalten auswählen" aus, und wählen Sie dann "OK" aus.

Wählen Sie die Spalten

Sie erstellen jetzt Logik, die die Tabelle sortiert, um den letzten Umsatz am unteren Rand der Tabelle zu haben. Wählen Sie die Sale Key Spalte aus, wobei es sich um den Primärschlüssel und die inkrementelle Sequenz oder den Index der Tabelle handelt. Sortieren Sie die Tabelle nur mithilfe dieses Felds in aufsteigender Reihenfolge aus dem Kontextmenü für die Spalte.

Sortieren Sie das Feld

Wählen Sie als Nächstes das Kontextmenü der Tabelle aus, und wählen Sie die Transformation der unteren Zeilen beibehalten aus.

Wählen Sie die Option

Geben Sie in den unteren Zeilen den Wert 10 ein, und wählen Sie dann "OK" aus.

Dialogfeld

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"

Partielles Abfragefaltungsbeispiel: Grundlegendes zur Abfrageauswertung

Wenn Sie den angewendeten Schrittebereich überprüfen, stellen Sie fest, dass die Abfragefalzindikatoren zeigen, dass die letzte hinzugefügte Transformation als Schritt gekennzeichnet ist, Kept bottom rowsder außerhalb der Datenquelle ausgewertet wird oder mit anderen Worten vom Power Query-Modul.

Angewendeter Schrittebereich für die Abfrage mit den Abfragefalzindikatoren, die zeigen, dass die untersten Zeilen als Schritt gekennzeichnet sind, der außerhalb der Datenquelle ausgewertet wird.

Sie können mit der rechten Maustaste auf den letzten Schritt Ihrer Abfrage, den benannten Kept bottom rowsSchritt klicken und die Option " Abfrageplan " auswählen, um besser zu verstehen, wie Ihre Abfrage ausgewertet werden kann.

Abfrageplan mit mehreren Knoten, in denen der Knoten

Jedes Feld im vorherigen Bild wird als Knoten bezeichnet. Ein Knoten stellt jeden Prozess dar, der (von links nach rechts) erfolgen muss, damit Ihre Abfrage ausgewertet werden kann. Einige dieser Knoten können in Ihrer Datenquelle ausgewertet werden, während andere, z. B. der Knoten für Table.LastN, dargestellt durch den Schritt "Beibehaltene untere Zeilen", mithilfe des Power Query-Moduls ausgewertet werden.

Um die genaue Anforderung anzuzeigen, die an Ihre Datenquelle gesendet wird, wählen Sie " Details anzeigen " im Value.NativeQuery Knoten aus.

SQL-Anweisung innerhalb von Value.NativeQuery, die eine Anforderung für alle Datensätze darstellt, wobei nur die angeforderten Felder aus der tabelle fact_Sales in der Datenbank sortiert nach aufsteigender Reihenfolge nach dem Feld

Diese Anforderung befindet sich in der Muttersprache Ihrer Datenquelle. Für diesen Fall ist diese Sprache SQL und diese Anweisung stellt eine Anforderung für alle Zeilen dar, wobei nur die angeforderten Felder aus der fact_Sale Tabelle sortiert nach dem Sale Key Feld angeordnet sind.

Die Beratung dieser Datenquellenanforderung kann Ihnen helfen, die Geschichte, die der vollständige Abfrageplan vermittelt, besser zu verstehen. Die Reihenfolge der Knoten ist ein sequenzieller Prozess, der beginnt, indem die Daten aus Ihrer Datenquelle angefordert werden:

  • Sql.Database: Stellt eine Verbindung mit der Datenbank bereit und sendet Metadatenanforderungen, um seine Funktionen zu verstehen.
  • Value.NativeQuery: Stellt die Anforderung dar, die von Power Query generiert wurde, um die Abfrage zu erfüllen. Power Query sendet die Datenanforderungen in einer nativen SQL-Anweisung an die Datenquelle. Für diesen Fall stellt das alle Datensätze dar, wobei nur die angeforderten Felder aus der Tabelle in der fact_Sale Datenbank nach aufsteigender Reihenfolge nach dem Sales Key Feld sortiert sind.
  • Table.LastN: Sobald Power Query alle Datensätze aus der fact_Sale Tabelle empfängt, verwendet es das Power Query-Modul, um die Tabelle zu filtern und nur die letzten 10 Zeilen beizubehalten.

Für die Auswertung musste diese Abfrage alle Zeilen und nur die erforderlichen Felder aus der fact_Sale Tabelle herunterladen. Es dauerte durchschnittlich 3 Minuten und 4 Sekunden, um in einer Standardinstanz von Power BI-Datenflüssen verarbeitet zu werden (was die Auswertung und das Laden von Daten in Datenflüsse berücksichtigt).

Beispiel für vollständige Abfragefaltung

Nachdem Sie eine Verbindung mit der Datenbank hergestellt und zur fact_Sale Tabelle navigiert haben, wählen Sie zunächst die Spalten aus, die Sie von der Tabelle beibehalten möchten. Wählen Sie die Transformation " Spalten auswählen " in der Gruppe "Spalten verwalten" auf der Registerkarte " Start " aus. Mit dieser Transformation können Sie die Spalten explizit auswählen, die Sie von der Tabelle beibehalten möchten, und den Rest entfernen.

Auswählen der Spaltentransformation für das vollständige Abfragefaltbeispiel.

Wählen Sie in "Spalten auswählen" die Invoice Date KeyDescriptionCustomer KeySale KeySpalten , und Quantity Spalten aus, und wählen Sie dann "OK" aus.

Wählen Sie die Spalten

Sie erstellen jetzt Logik, die die Tabelle sortiert, um den letzten Umsatz oben in der Tabelle zu haben. Wählen Sie die Sale Key Spalte aus, wobei es sich um den Primärschlüssel und die inkrementelle Sequenz oder den Index der Tabelle handelt. Sortieren Sie die Tabelle nur mithilfe dieses Felds in absteigender Reihenfolge aus dem Kontextmenü für die Spalte.

Sortieren Sie das Feld

Wählen Sie als Nächstes das Kontextmenü der Tabelle aus, und wählen Sie die Transformation der oberen Zeilen aus.

Option für obere Zeilen im Kontextmenü der Tabelle beibehalten.

Geben Sie in den oberen Zeilen den Wert 10 ein, und wählen Sie dann "OK" aus.

Halten Sie das Dialogfeld

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"

Vollständiges Abfragefaltungsbeispiel: Grundlegendes zur Abfrageauswertung

Beim Überprüfen des angewendeten Schrittebereichs werden Sie feststellen, dass die Abfragefalzindikatoren zeigen, dass die von Ihnen hinzugefügten Transformationen, Die Spalten auswählen, sortierte Zeilen und die obersten Zeilen beibehalten werden, als Schritte gekennzeichnet werden, die an der Datenquelle ausgewertet werden.

Alle Abfrageschritte weisen das Symbol auf, das zeigt, dass sie wieder in die Datenquelle gefaltet werden können.

Sie können mit der rechten Maustaste auf den letzten Schritt Ihrer Abfrage, die mit dem Namen "Beibehaltene obere Zeilen" klicken und die Option auswählen, die den Abfrageplan liest.

SQL-Anweisung innerhalb von Value.NativeQuery, die eine Anforderung der obersten zehn Datensätze der fact_Sale Tabelle darstellt, die mithilfe des Felds

Diese Anforderung befindet sich in der Muttersprache Ihrer Datenquelle. In diesem Fall ist diese Sprache SQL und diese Anweisung stellt eine Anforderung für alle Zeilen und Felder aus der fact_Sale Tabelle dar.

Durch die Beratung dieser Datenquellenabfrage können Sie die Geschichte besser verstehen, die der vollständige Abfrageplan vermittelt:

  • Sql.Database: Stellt eine Verbindung mit der Datenbank bereit und sendet Metadatenanforderungen, um seine Funktionen zu verstehen.
  • Value.NativeQuery: Stellt die Anforderung dar, die von Power Query generiert wurde, um die Abfrage zu erfüllen. Power Query sendet die Datenanforderungen in einer nativen SQL-Anweisung an die Datenquelle. Für diesen Fall stellt das eine Anforderung nur für die obersten 10 Datensätze der fact_Sale Tabelle dar, wobei nur die erforderlichen Felder nach der Sortierung in absteigender Reihenfolge mithilfe des Sale Key Felds angegeben wurden.

Hinweis

Es gibt zwar keine Klausel, die verwendet werden kann, um die unteren Zeilen einer Tabelle in der T-SQL-Sprache auszuwählen, es gibt jedoch eine TOP-Klausel, die die oberen Zeilen einer Tabelle abruft.

Für die Auswertung lädt diese Abfrage nur 10 Zeilen mit nur den Feldern herunter, die Sie aus der fact_Sale Tabelle angefordert haben. Diese Abfrage hat einen Durchschnitt von 31 Sekunden benötigt, um in einer Standardinstanz von Power BI-Datenflüssen verarbeitet zu werden (was die Auswertung und das Laden von Daten in Datenflüsse berücksichtigt).

Leistungsvergleich

Um die Auswirkungen auf die Abfragefaltung in diesen Abfragen besser zu verstehen, können Sie Ihre Abfragen aktualisieren, die Zeit aufzeichnen, die benötigt wird, um jede Abfrage vollständig zu aktualisieren und sie zu vergleichen. Aus Gründen der Einfachheit bietet dieser Artikel die durchschnittliche Aktualisierungszeitdauer, die mithilfe der Power BI-Datenflüsseaktualisierungsmechanik erfasst wird, während eine Verbindung mit einer dedizierten Azure Synapse Analytics-Umgebung mit DW2000c als Dienstebene hergestellt wird.

Die Aktualisierungszeit für jede Abfrage lautete wie folgt:

Beispiel Bezeichnung Zeit in Sekunden
Keine Abfragefaltung Keine 361
Partielle Abfragefaltung Teilweise 184
Vollständige Abfragefaltung Vollständig 31

Diagramm, das die Aktualisierungszeit der keine Faltabfrage mit 361 Sekunden vergleicht, die partielle Abfragefaltung mit 184 Sekunden und die voll gefaltete Abfrage mit 31 Sekunden.

Es ist häufig der Fall, dass eine Abfrage, die vollständig in die Datenquelle zurückgefaltet wird, ähnliche Abfragen ausgibt, die nicht vollständig zurück zur Datenquelle gefaltet werden. Es könnte viele Gründe geben, warum dies der Fall ist. Diese Gründe reichen von der Komplexität der Von Ihrer Abfrage ausgeführten Transformationen bis hin zu den Abfrageoptimierungen, die in Ihrer Datenquelle implementiert wurden, z. B. Indizes und dedizierte Computing- und Netzwerkressourcen. Dennoch gibt es zwei spezifische Schlüsselprozesse, mit denen die Abfragefaltung versucht, die Auswirkungen zu minimieren, die beide Prozesse mit Power Query haben:

  • Daten während der Übertragung
  • Transformationen, die vom Power Query Modul ausgeführt werden

In den folgenden Abschnitten werden die Auswirkungen erläutert, die diese beiden Prozesse in den zuvor erwähnten Abfragen haben.

Daten während der Übertragung

Wenn eine Abfrage ausgeführt wird, versucht sie, die Daten aus der Datenquelle als einen der ersten Schritte abzurufen. Welche Daten aus der Datenquelle abgerufen werden, wird durch den Abfragefalzmechanismus definiert. Dieser Mechanismus identifiziert die Schritte aus der Abfrage, die in die Datenquelle geladen werden kann.

In der folgenden Tabelle sind die Anzahl der Zeilen aufgeführt, die aus der fact_Sale Tabelle der Datenbank angefordert wurden. Die Tabelle enthält auch eine kurze Beschreibung der SQL-Anweisung, die an diese Daten aus der Datenquelle gesendet wird.

Beispiel Bezeichnung Angeforderte Zeilen Beschreibung
Keine Abfragefaltung Keine 3644356 Anforderung für alle Felder und alle Datensätze aus der fact_Sale Tabelle
Partielle Abfragefaltung Teilweise 3644356 Anforderung für alle Datensätze, aber nur erforderliche Felder aus der fact_Sale Tabelle, nachdem sie nach dem Sale Key Feld sortiert wurde
Vollständige Abfragefaltung Vollständig 10 Anforderung nur für die erforderlichen Felder und die TOP 10-Datensätze der fact_Sale Tabelle nach der Sortierung in absteigender Reihenfolge nach dem Sale Key Feld

Diagramm mit der Menge der zeilen, die aus der Datenbank für keine Abfragefaltung, teilweise Abfragefaltung und vollständige Abfragefaltung gesammelt wurden.

Beim Anfordern von Daten aus einer Datenquelle muss die Datenquelle die Ergebnisse für die Anforderung berechnen und dann die Daten an den Anforderer senden. Während die Rechenressourcen bereits erwähnt wurden, können die Netzwerkressourcen, die Daten aus der Datenquelle in Power Query verschieben, und dann Power Query die Daten effektiv empfangen und für die Transformationen vorbereiten, die lokal auftreten, je nach Größe der Daten einige Zeit dauern können.

Für die vorgestellten Beispiele musste Power Query mehr als 3,6 Millionen Zeilen aus der Datenquelle anfordern, um keine Abfragefaltungs- und Teilabfragefaltungsbeispiele zu erhalten. Für das vollständige Abfragefaltbeispiel wurde nur 10 Zeilen angefordert. Für die angeforderten Felder hat das Beispiel für die Abfragefaltung alle verfügbaren Felder aus der Tabelle angefordert. Sowohl die partielle Abfragefaltung als auch die vollständigen Abfragefaltungsbeispiele haben nur eine Anforderung für genau die felder übermittelt, die sie benötigt haben.

Achtung

Es wird empfohlen, inkrementelle Aktualisierungslösungen zu implementieren, die die Abfragefaltung für Abfragen oder Entitäten mit großen Datenmengen nutzen. Verschiedene Produktintegrationen von Power Query implementieren Timeouts, um lange ausgeführte Abfragen zu beenden. Einige Datenquellen implementieren auch Timeouts für lange Ausgeführte Sitzungen, um teure Abfragen für ihre Server auszuführen. Weitere Informationen: Verwenden der inkrementellen Aktualisierung mit Datenflüssen und inkrementellerAktualisierung für Datasets

Transformationen, die vom Power Query Modul ausgeführt werden

In diesem Artikel wird gezeigt, wie Sie den Abfrageplan verwenden können, um besser zu verstehen, wie Ihre Abfrage ausgewertet werden kann. Innerhalb des Abfrageplans können Sie die genauen Knoten der Transformationsvorgänge sehen, die vom Power Query Modul ausgeführt werden.

In der folgenden Tabelle werden die Knoten aus den Abfrageplänen der vorherigen Abfragen angezeigt, die vom Power Query-Modul ausgewertet wurden.

Beispiel Bezeichnung Power Query Modultransformationsknoten
Keine Abfragefaltung Keine Table.LastN, Table.SelectColumns
Partielle Abfragefaltung Teilweise Table.LastN
Vollständige Abfragefaltung Vollständig

Diagramm mit den Gesamttransformationen, die vom Power Query-Modul ohne Abfragefaltung, partielle Abfragefaltung und vollständige Abfragefaltung ausgeführt werden.

Für die beispiele, die in diesem Artikel dargestellt werden, erfordert das vollständige Abfragefaltungsbeispiel keine Transformationen innerhalb des Power Query-Moduls, da die erforderliche Ausgabetabelle direkt aus der Datenquelle stammt. Im Gegensatz dazu benötigten die anderen beiden Abfragen eine Berechnung an der Power Query Engine. Aufgrund der Datenmenge, die von diesen beiden Abfragen verarbeitet werden muss, dauert der Prozess für diese Beispiele mehr Zeit als das vollständige Abfragefaltbeispiel.

Transformationen können in die folgenden Kategorien gruppiert werden:

Operatortyp Beschreibung
Remote Operatoren, die Datenquellenknoten sind. Die Auswertung dieser Operatoren tritt außerhalb von Power Query auf.
Streaming Operatoren sind Pass-Through-Operatoren. Table.SelectRows Beispielsweise kann mit einem einfachen Filter die Ergebnisse normalerweise beim Durchlaufen des Operators gefiltert werden, und es muss nicht alle Zeilen gesammelt werden, bevor die Daten verschoben werden. Table.SelectColumns und Table.ReorderColumns sind weitere Beispiele für diese Art von Operatoren.
Vollständige Überprüfung Operatoren, die alle Zeilen sammeln müssen, bevor die Daten zum nächsten Operator in der Kette wechseln können. Um beispielsweise Daten zu sortieren, muss Power Query alle Daten sammeln. Weitere Beispiele für vollständige Scanoperatoren sind Table.Group, Table.NestedJoinund Table.Pivot.

Tipp

Obwohl nicht jede Transformation von einem Leistungsstand aus gleich ist, ist es in den meisten Fällen besser, weniger Transformationen zu haben.

Überlegungen und Vorschläge

  • Befolgen Sie die bewährten Methoden beim Erstellen einer neuen Abfrage, wie in bewährten Methoden in Power Query angegeben.
  • Verwenden Sie die Abfragefaltungsindikatoren , um zu überprüfen, welche Schritte ihre Abfrage vor dem Falten verhindern. Ordnen Sie sie bei Bedarf neu an, um die Faltung zu erhöhen.
  • Verwenden Sie den Abfrageplan, um zu bestimmen, welche Transformationen im Power Query-Modul für einen bestimmten Schritt ausgeführt werden. Erwägen Sie, Ihre vorhandene Abfrage zu ändern, indem Sie Ihre Schritte neu anordnen. Überprüfen Sie dann den Abfrageplan des letzten Schritts der Abfrage erneut, und überprüfen Sie, ob der Abfrageplan besser aussieht als die vorherige. Beispielsweise verfügt der neue Abfrageplan über weniger Knoten als die vorherige, und die meisten Knoten sind "Streaming"-Knoten und nicht "vollständiger Scan". Für Datenquellen, die das Falten unterstützen, stellen alle Knoten im Abfrageplan außer Value.NativeQuery und Datenquellenzugriffsknoten Transformationen dar, die nicht gefaltet wurden.
  • Wenn verfügbar, können Sie die Option "Native Abfrage anzeigen" (oder " Datenquellenabfrage anzeigen") verwenden, um sicherzustellen, dass Ihre Abfrage wieder in die Datenquelle gefaltet werden kann. Wenn diese Option für Ihren Schritt deaktiviert ist und Sie eine Quelle verwenden, die es normalerweise aktiviert, haben Sie einen Schritt erstellt, der die Abfragefaltung beendet. Wenn Sie eine Quelle verwenden, die diese Option nicht unterstützt, können Sie sich auf die Abfragefalzindikatoren und den Abfrageplan verlassen.
  • Verwenden Sie die Abfragediagnosetools, um die Anforderungen, die an Ihre Datenquelle gesendet werden, besser zu verstehen, wenn Abfragefaltfunktionen für den Connector verfügbar sind.
  • Beim Kombinieren von Datenquellen, die aus der Verwendung mehrerer Connectors stammen, versucht Power Query, möglichst viel Arbeit an beide Datenquellen zu übertragen und gleichzeitig die für jede Datenquelle definierten Datenschutzstufen einzuhalten.
  • Lesen Sie den Artikel über Datenschutzebenen , um Ihre Abfragen vor einem Fehler der Datenschutzfirewall zu schützen.
  • Verwenden Sie andere Tools, um die Abfragefaltung anhand der Perspektive zu überprüfen, die von der Datenquelle empfangen wird. Basierend auf dem Beispiel in diesem Artikel können Sie die Microsoft-SQL Server Profiler verwenden, um die Anforderungen zu überprüfen, die von Power Query gesendet und von der Microsoft-SQL Server empfangen werden.
  • Wenn Sie einer vollständig gefalteten Abfrage einen neuen Schritt hinzufügen und der neue Schritt ebenfalls gefaltet wird, kann Power Query eine neue Anforderung an die Datenquelle senden, anstatt eine zwischengespeicherte Version des vorherigen Ergebnisses zu verwenden. In der Praxis kann dieser Prozess zu scheinbar einfachen Vorgängen in einer kleinen Menge von Daten führen, die länger dauern, bis sie in der Vorschau aktualisiert werden als erwartet. Diese längere Aktualisierung ist auf Power Query erneutes Abfragen der Datenquelle zurückzuführen, anstatt eine lokale Kopie der Daten zu deaktivieren.