Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Power Query können Sie eine systemeigene Abfrage definieren und für Ihre Datenquelle ausführen. Im Artikel zum Importieren von Daten aus einer Datenbank mithilfe eines systemeigenen Datenbankabfrageartikels wird erläutert, wie Sie diesen Vorgang mit mehreren Datenquellen ausführen. Mithilfe des in diesem Artikel beschriebenen Prozesses nutzt Ihre Abfrage jedoch kein Query Folding aus nachfolgenden Abfrageschritten.
In diesem Artikel wird eine alternative Methode zum Erstellen nativer Abfragen für Ihre Datenquelle mithilfe der Funktion Value.NativeQuery vorgestellt und der Abfragefaltungsmechanismus für nachfolgende Schritte der Abfrage aktiv gehalten.
Hinweis
Es wird empfohlen, die Dokumentation zur Abfragefaltung und den Abfragefaltungsindikatoren zu lesen, um die in diesem Artikel verwendeten Konzepte besser zu verstehen.
Unterstützte Datenconnectors
Die in den nächsten Abschnitten beschriebene Methode gilt für die folgenden Datenanschlüsse:
- Amazon Redshift
- Dataverse(bei Verwendung von erweitertem Rechnen)
- Google BigQuery
- PostgreSQL
- SAP HANA
- Snowflake
- SQL Server
Verbindung zum Ziel von der Datenquelle herstellen
Hinweis
Um diesen Prozess zu präsentieren, verwendet dieser Artikel den SQL Server-Connector und die AdventureWorks2019-Beispieldatenbank. Die Erfahrung kann von Konnektor zu Konnektor variieren, aber dieser Artikel zeigt die Grundlagen auf, wie man Query-Faltung für native Abfragen bei den unterstützten Konnektoren aktiviert.
Beim Herstellen einer Verbindung mit der Datenquelle ist es wichtig, dass Sie eine Verbindung mit dem Knoten oder der Ebene herstellen, an dem Sie die Native Query ausführen möchten. Für das Beispiel in diesem Artikel ist dieser Knoten die Datenbankebene innerhalb des Servers.
Nachdem Sie die Verbindungseinstellungen definiert und die Anmeldeinformationen für Ihre Verbindung angeben, wird das Navigationsdialogfeld für Ihre Datenquelle geöffnet. Das Navigationsdialogfeld enthält alle verfügbaren Objekte, mit denen Sie eine Verbindung herstellen können.
In dieser Liste müssen Sie das Objekt auswählen, in dem die systemeigene Abfrage ausgeführt wird (auch als Ziel bezeichnet). In diesem Beispiel ist dieses Objekt die Datenbankebene.
Wählen Sie im Navigatorfenster in Power Query den Datenbankknoten im Navigatorfenster aus und halten Sie den Datenbankknoten gedrückt (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie die Option "Daten transformieren " aus. Wenn Sie diese Option auswählen, wird eine neue Abfrage der Gesamtansicht Ihrer Datenbank erstellt, bei der es sich um das Ziel handelt, das Sie zum Ausführen der systemeigenen Abfrage benötigen.
Sobald Ihre Abfrage im Power Query-Editor landet, sollte nur der Quellschritt im Bereich "Angewendete Schritte" angezeigt werden. Dieser Schritt enthält eine Tabelle mit allen verfügbaren Objekten in Ihrer Datenbank, ähnlich wie sie im Navigatorfenster angezeigt wurden.
Verwenden der Funktion Value.NativeQuery
Das Ziel dieses Prozesses besteht darin, den folgenden SQL-Code auszuführen und weitere Transformationen mit Power Query anzuwenden, die wieder an die Quelle gefaltet werden können.
SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'
Der erste Schritt bestand darin, das richtige Ziel zu definieren, was in diesem Fall die Datenbank ist, in der der SQL-Code ausgeführt wird.
Sobald ein Schritt das richtige Ziel hat, können Sie diesen Schritt auswählen – in diesem Fall "Quelle in angewendeten Schritten", und wählen Sie dann in der Bearbeitungsleiste die Schaltfläche "fx " aus, um einen benutzerdefinierten Schritt hinzuzufügen. Ersetzen Sie in diesem Beispiel die Source Formel durch die folgende Formel:
Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development' ", null, [EnableFolding = true])
Die wichtigste Komponente dieser Formel ist die Verwendung des optionalen Datensatzes für den vierten Parameter der Funktion, dessen EnableFolding-Feld auf true gesetzt ist.
Hinweis
Weitere Informationen zur Funktion Value.NativeQuery finden Sie im offiziellen Dokumentationsartikel.
Nachdem Sie die Formel eingegeben haben, wird eine Warnung angezeigt, in der Sie die Ausführung systemeigener Abfragen für Den jeweiligen Schritt aktivieren müssen. Wählen Sie "Weiter" aus, damit dieser Schritt ausgewertet werden soll.
Diese SQL-Anweisung liefert eine Tabelle mit nur drei Zeilen und zwei Spalten.
Testen der Abfragefaltung
Um die Abfragefaltung Ihrer Abfrage zu testen, können Sie versuchen, einen Filter auf eine der Spalten anzuwenden und festzustellen, ob die Abfragefaltungsanzeige im Abschnitt mit den angewendeten Schritten den Schritt als gefaltet anzeigt. In diesem Fall können Sie die Spalte "DepartmentID" filtern, um Werte zu haben, die nicht gleich zwei sind.
Nachdem Sie diesen Filter hinzugefügt haben, können Sie überprüfen, ob die Abfragefaltungsindikatoren bei diesem neuen Schritt weiterhin die Abfragefaltung anzeigen.
Um weiter zu überprüfen, welche Abfrage an die Datenquelle gesendet wird, können Sie den Schritt " Gefilterte Zeilen " auswählen und gedrückt halten (oder mit der rechten Maustaste darauf klicken), und die Option " Abfrageplan anzeigen " auswählen, um den Abfrageplan für diesen Schritt zu überprüfen.
In der Abfrageplanansicht können Sie sehen, dass ein Knoten mit dem Namen Value.NativeQuery mit einem Hyperlink " Details anzeigen " vorhanden ist. Sie können diesen Link auswählen, um die genaue Abfrage anzuzeigen, die an die SQL Server-Datenbank gesendet wird.
Die native Abfrage wird mit einer anderen SELECT-Anweisung eingeschlossen, um eine Unterabfrage des Originals zu erstellen. Power Query bemüht sich, die optimale Abfrage zu erstellen, basierend auf den verwendeten Transformationen und der bereitgestellten nativen Abfrage.
Tipp
Für Szenarien, in denen Fehler auftreten, da die Abfragefaltung nicht möglich war, empfehlen wir, die Schritte als Unterabfrage Ihrer ursprünglichen nativen Abfrage zu überprüfen, um zu überprüfen, ob Syntax- oder Kontextkonflikte auftreten könnten.