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.
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.
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.
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.
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.
Das Hinzufügen weiterer Schritte, die von Jeden Schritt groß schreiben abhängen, wird weiterhin nicht funktionieren.
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.