Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In Power Query kunt u een systeemeigen query definiëren en uitvoeren op uw gegevensbron. In het artikel Gegevens importeren uit een database met behulp van een systeemeigen databasequery wordt uitgelegd hoe u dit proces kunt uitvoeren met meerdere gegevensbronnen. Maar met behulp van het proces dat in dat artikel wordt beschreven, profiteert uw query niet van query folding in de daaropvolgende stappen van de query.
In dit artikel wordt een alternatieve methode beschreven om systeemeigen query's te maken voor uw gegevensbron met behulp van de functie Value.NativeQuery en het query folding-mechanisme actief te houden voor volgende stappen van uw query.
Opmerking
We raden u aan de documentatie over het vouwen van query's en de indicatoren voor het vouwen van query's te lezen om meer inzicht te krijgen in de concepten die in dit artikel worden gebruikt.
Ondersteunde gegevensconnectors
De methode die in de volgende secties wordt beschreven, is van toepassing op de volgende gegevensconnectors:
- Amazon Redshift
- Dataverse(bij gebruik van verbeterde rekenkracht)
- Google BigQuery
- PostgreSQL
- SAP HANA
- Snowflake
- SQL Server
Verbinding maken met het doel vanuit een gegevensbron
Opmerking
Om dit proces te laten zien, maakt dit artikel gebruik van de SQL Server-connector en de voorbeelddatabase AdventureWorks2019. De ervaring kan variëren tussen verschillende connectors, maar in dit artikel worden de basisprincipes beschreven van het inschakelen van de functie voor het vouwen van query’s met behulp van native queries voor de ondersteunde connectors.
Wanneer u verbinding maakt met de gegevensbron, is het belangrijk dat u verbinding maakt met het knooppunt of het niveau waarop u uw systeemeigen query wilt uitvoeren. Voor het voorbeeld in dit artikel is dat knooppunt het databaseniveau op de server.
Nadat u de verbindingsinstellingen hebt gedefinieerd en de referenties voor uw verbinding hebt opgegeven, wordt het navigatiedialoogvenster voor uw gegevensbron geopend. Het navigatiedialoogvenster bevat alle beschikbare objecten waarmee u verbinding kunt maken.
In deze lijst moet u het object selecteren waarop de systeemeigen query wordt uitgevoerd (ook wel het doel genoemd). In dit voorbeeld is dat object het databaseniveau.
Selecteer en houd in het navigatorvenster in Power Query het databaseknooppunt in het navigatorvenster ingedrukt (of klik erop met de rechtermuisknop) en selecteer de optie Gegevens transformeren . Als u deze optie selecteert, wordt een nieuwe query gemaakt van de algehele weergave van uw database. Dit is het doel dat u nodig hebt om uw systeemeigen query uit te voeren.
Zodra uw query in de Power Query-editor terechtkomt, moet alleen de bronstap worden weergegeven in het deelvenster Toegepaste stappen. Deze stap bevat een tabel met alle beschikbare objecten in uw database, vergelijkbaar met de manier waarop ze werden weergegeven in het navigatorvenster.
De functie Value.NativeQuery gebruiken
Het doel van dit proces is het uitvoeren van de volgende SQL-code en het toepassen van meer transformaties met Power Query die weer naar de bron kunnen worden gevouwen.
SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'
De eerste stap was het definiëren van het juiste doel, in dit geval de database waarin de SQL-code wordt uitgevoerd.
Zodra een stap het juiste doel heeft, kunt u die stap selecteren( in dit geval bron in toegepaste stappen) en vervolgens de fx-knop in de formulebalk selecteren om een aangepaste stap toe te voegen. Vervang in dit voorbeeld de Source formule door de volgende formule:
Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development' ", null, [EnableFolding = true])
Het belangrijkste onderdeel van deze formule is het gebruik van de optionele record voor de vierde parameter van de functie waarvoor het veld EnableFolding-record is ingesteld op true.
Opmerking
Meer informatie over de functie Value.NativeQuery vindt u in het officiële documentatieartikel.
Nadat u de formule hebt ingevoerd, verschijnt er een waarschuwing die aangeeft dat u systeemeigen query's moet inschakelen om te kunnen worden uitgevoerd voor uw specifieke stap. Selecteer Doorgaan om deze stap te evalueren.
Deze SQL-instructie levert een tabel met slechts drie rijen en twee kolommen op.
Testen van query folding
Als u wilt testen of er query folding optreedt in uw query, kunt u proberen een filter toe te passen op een van uw kolommen en controleren of de query folding-indicator in de sectie Toegepaste stappen de stap als gevouwen weergeeft. In dit geval kunt u de kolom DepartmentID filteren op waarden die niet gelijk zijn aan twee.
Nadat u dit filter hebt toegevoegd, kunt u controleren of de indicatoren voor query folding nog steeds aangeven dat query folding plaatsvindt in deze nieuwe stap.
Als u verder wilt valideren welke query naar de gegevensbron wordt verzonden, kunt u de stap gefilterde rijen selecteren en vasthouden (of erop klikken met de rechtermuisknop) en de optie Queryplan weergeven selecteren om het queryplan voor die stap te controleren.
In de queryplanweergave ziet u dat er een knooppunt met de naam Value.NativeQuery is dat een hyperlink Details bekijken heeft. U kunt deze hyperlink selecteren om de exacte query weer te geven die naar de SQL Server-database wordt verzonden.
De native query wordt ingebed in een andere SELECT-instructie om een subquery van het origineel te maken. Power Query doet het beste om de meest optimale query te maken op basis van de gebruikte transformaties en de systeemeigen query.
Aanbeveling
Voor scenario's waarin u fouten krijgt omdat het vouwen van query's niet mogelijk was, raden we u aan om uw stappen te valideren als een subquery van uw oorspronkelijke systeemeigen query om te controleren of er syntaxis- of contextconflicten kunnen zijn.