Freigeben über


Query Folding-Indikatoren

Hinweis

Bevor Sie diesen Artikel lesen, empfehlen wir Ihnen die Lektüre von Übersicht über die Abfrageauswertung und das Query Folding in Power Query, um besser zu verstehen, wie das Folding in Power Query funktioniert.

Query Folding-Indikatoren helfen Ihnen, die Schritte zu verstehen, die gefoldet oder nicht gefoldet werden.

Bei Query Folding-Indikatoren wird es offensichtlich, wenn Sie eine Änderung vornehmen, die das Folding unterbricht. Diese Funktion hilft Ihnen dabei, Probleme schnell zu lösen, Leistungsprobleme von vornherein zu vermeiden und einen besseren Einblick in Ihre Abfragen zu erhalten. In den meisten Fällen gibt es bei Schritten „Folding“ oder „Kein Folding“. Es gibt jedoch viele Fälle, in denen das Ergebnis nicht so offensichtlich ist. Diese Fälle werden in Schrittdiagnose-Indikatoren (Dynamisch, Undurchsichtig und Unbekannt) behandelt.

Hinweis

Die Query Folding-Indikatoren-Funktion ist nur für Power Query Online verfügbar.

Interpretation der Query Folding-Diagnose

Wenn Sie den Indikator für das Query Folding neben einem Schritt untersuchen, ist das Wichtigste, dass der Diagnosestatus nicht sequentiell ist. Mit anderen Worten, der Indikator für diesen Schritt beschreibt, ob die Abfrage als Ganzes, bis zu diesem Punkt, ausfällt oder nicht. Wenn Sie einen Indikator haben, der anzeigt, dass das Query Folding für die Abfrage nicht möglich ist, gefolgt von einem Indikator, der anzeigt, dass es doch möglich ist, bedeutet dies, dass das Query Folding für Ihre Abfrage bis zu diesem Punkt möglich ist.

Diese Interpretation funktioniert sogar mit einer einfachen Abfrage gegen eine SQL-Quelle. Verwenden Sie zum Beispiel die AdventureWorks-Beispieldatenbank, stellen Sie eine Verbindung zur Tabelle Production.Product her und laden Sie Daten. Wenn Sie dieses Beispiel über den Power Query Navigator laden, erhalten Sie die folgende Abfrage:

let
  Source = Sql.Database("ServerName", "AdventureWorks"),
  Navigation = Source{[Schema = "Production", Item = "Product"]}[Data]
in
  Navigation

Wenn Sie untersuchen, wie dieser Code in den Query-Folding-Indikatoren angezeigt wird, werden Sie feststellen, dass der erste Schritt nicht schlüssig ist. Aber der zweite Schritt ist ein Fold, was bedeutet, dass die Abfrage bis zu diesem Punkt ein Fold ist.

Screenshot der Schritte „Quelle und Navigation“ im Bereich „Folding-Indikator“.

In diesem Beispiel kann nicht bestätigt werden, dass die anfänglichen Schritte gefoldet werden (sie sind nicht schlüssig), aber beim letzten Schritt, der beim Laden der Daten erzeugt wird, findet ein Folding statt. Wie die ersten Schritte (Quelle und manchmal weitere Navigations-Schritte) gehandhabt werden, hängt vom Konnektor ab. Bei SQL zum Beispiel wird er als Katalogtabellenwert behandelt, bei dem das Folding nicht möglich ist. Sobald Sie jedoch Daten für diesen Konnektor auswählen, findet bei diesem das Folding statt.

Umgekehrt kann dies auch bedeuten, dass bei Ihrer Abfrage bis zu einem bestimmten Punkt das Folding stattfindet und dann aufhört. Anders als in dem Fall, in dem Sie einen Folding-Indikator für den Schritt haben, der anzeigt, dass alles gefoldet wird, bedeutet ein Nicht-Folding-Indikator nicht, dass alles nicht gefoldet wird. Stattdessen bedeutet es, dass „nicht alles“ gefoldet wird. In der Regel wird alles bis zum letzten Folding-Indikator gefoldet, danach finden weitere Vorgänge statt.

In Abwandlung des vorherigen Beispiels können Sie eine Transformation angeben, die niemals gefoldet wird – Großschreibung jedes Wortes.

let
  Source = Sql.Database("ServerName", "AdventureWorks"),
  Navigation = Source{[Schema = "Production", Item = "Product"]}[Data],
  #"Capitalized each word" = Table.TransformColumns(Navigation, {{"Name", each Text.Proper(_), type text}})
in
  #"Capitalized each word"

In den Query Folding-Indikatoren haben Sie die gleichen Indikatoren wie zuvor, nur dass der letzte Schritt nicht gefoldet wird. Alles bis zu diesem letzten Schritt wird in der Datenquelle ausgeführt, während der letzte Schritt lokal ausgeführt wird.

Screenshot des Bereichs „Quelle“, „Navigation“ und „Großschreibung jedes Worts“ im Bereich „Folding-Indikator“.

Stufendiagnose-Indikatoren

Query Folding-Indikatoren verwenden einen zugrundeliegenden Abfrageplan und setzen voraus, dass sie Informationen über die Abfrage erhalten können, um sie zu melden. Derzeit unterstützt der Abfrageplan nur Tabellen, so dass einige Fälle (Listen, Datensätze, Primitive) nicht als gefoldet oder nicht gefoldet gemeldet werden. Ähnlich verhält es sich mit konstanten Tabellen, die als undurchsichtig gemeldet werden.

Indikator Schaltfläche Beschreibung
Folding Der Folding-Indikator zeigt Ihnen an, dass die Abfrage bis zu diesem Schritt von der Datenquelle ausgewertet wird.
Nicht-Folding Der Indikator für das Nicht-Folding zeigt Ihnen, dass ein Teil der Abfrage bis zu diesem Schritt außerhalb der Datenquelle ausgewertet wird. Sie können ihn mit dem letzten Folding-Indikator vergleichen, falls es einen gibt, um zu sehen, ob Sie Ihre Abfrage so umgestalten können, dass sie leistungsfähiger ist.
Folding möglich „Folding möglich“-Indikatoren sind unüblich. Sie bedeuten, dass bei einer Abfrage ein Folding möglich sein könnte. Sie geben an, dass entweder das Folding oder das Nicht-Folding zur Laufzeit bestimmt wird, wenn die Ergebnisse aus der Abfrage abgerufen werden, und dass der Abfrageplan dynamisch ist. Diese Indikatoren werden wahrscheinlich nur bei ODBC- oder OData-Verbindungen angezeigt.
Undurchsichtig Undurchsichtige Indikatoren zeigen Ihnen an, dass der resultierende Abfrageplan aus irgendeinem Grund nicht schlüssig ist. Im Allgemeinen bedeutet dies, dass es eine echte „konstante“ Tabelle gibt oder dass diese Transformation oder dieser Konnektor nicht von den Indikatoren und dem Abfrageplan-Tool unterstützt wird.
Unbekannt Unbekannte Indikatoren stehen für das Fehlen eines Abfrageplans, entweder aufgrund eines Fehlers oder des Versuchs, die Abfrageplanauswertung auf etwas anderem als einer Tabelle (z. B. einem Datensatz, einer Liste oder einem Primitiv) durchzuführen.

Beispielanalyse

Für eine Beispielanalyse beginnen Sie mit einer Verbindung zur Tabelle Production.Product in Adventure Works (SQL). Das anfängliche Laden, ähnlich dem obigen Beispiel, sieht wie die folgende Abbildung aus.

Screenshot der Indikatoren für den ersten Schritt zum Laden der Produkttabelle.

Wenn Sie weitere Schritte hinzufügen, bei denen gefoldet wird, wird die grüne Linie auf der rechten Seite verlängert. Diese Erweiterung erfolgt, weil auch dieser Schritt gefoldet wird.

Screenshot, der zeigt, wie das Hinzufügen eines Schritts zum Entfernen einer Spalte zur vorherigen Abfrage die grüne Folding-Indikator-Linie erweitert.

Wenn Sie einen Schritt hinzufügen, bei dem das Folding nicht möglich ist, wird ein anderer Indikator angezeigt. Zum Beispiel: Jedes Wort groß schreiben wird nie gefoldet. Die Anzeige ändert sich und zeigt an, dass das Folding ab diesem Schritt beendet ist. Wie bereits erwähnt, können Sie die vorherigen Schritte trotzdem durchführen.

Screenshot, der zeigt, wie das Hinzufügen des Schritts „Großschreibung jedes Worts“ das Folding umbricht.

Das Hinzufügen weiterer Schritte, die von Jeden Schritt groß schreiben abhängen, wird weiterhin nicht funktionieren.

Screenshot, der zeigt, wie das Folding nach dem Hinzufügen weiterer Schritte nicht auftritt.

Wenn Sie jedoch die Spalte, auf die Sie die Großschreibung angewendet haben, entfernen, sodass der optimierte Abfrageplan wieder gefoldet werden kann, erhalten Sie ein Ergebnis wie in der folgenden Abbildung. Allerdings ist so etwas eher ungewöhnlich. Dieses Bild veranschaulicht, dass es nicht nur auf die Reihenfolge der Schritte ankommt, sondern auch auf die tatsächlichen Transformationen.

Screenshot, der zeigt, wie das Entfernen der problematischen Spalte das Folding ermöglicht, ohne den Schritt zu entfernen.