Overzicht van queryevaluatie en het vouwen van query's in Power Query
Dit artikel bevat een basisoverzicht van hoe M-query's worden verwerkt en omgezet in gegevensbronaanvragen.
Elke query, gemaakt door Power Query, handmatig door u geschreven in de geavanceerde editor of ingevoerd met behulp van een leeg document, bestaat uit functies en syntaxis uit de Power Query M-formuletaal. Deze query wordt geïnterpreteerd en geëvalueerd door de Power Query-engine om de resultaten ervan uit te voeren. Het M-script fungeert als de set instructies die nodig zijn om de query te evalueren.
Tip
U kunt het M-script beschouwen als een recept dat beschrijft hoe u uw gegevens voorbereidt.
De meest voorkomende manier om een M-script te maken, is met behulp van de Power Query-editor. Wanneer u bijvoorbeeld verbinding maakt met een gegevensbron, zoals een SQL Server-database, ziet u aan de rechterkant van het scherm dat er een sectie is met de naam Toegepaste stappen. In deze sectie worden alle stappen of transformaties weergegeven die in uw query worden gebruikt. In deze zin fungeert de Power Query-editor als een interface om u te helpen bij het maken van het juiste M-script voor de transformaties die u volgt en zorgt ervoor dat de code die u gebruikt geldig is.
Notitie
Het M-script wordt gebruikt in de Power Query-editor voor het volgende:
- De query weergeven als een reeks stappen en het maken of wijzigen van nieuwe stappen toestaan.
- Een diagramweergave weergeven.
In de vorige afbeelding wordt de sectie toegepaste stappen benadrukt, die de volgende stappen bevat:
- Bron: Maakt de verbinding met de gegevensbron. In dit geval is het een verbinding met een SQL Server-database.
- Navigatie: Hiermee gaat u naar een specifieke tabel in de database.
- Andere kolommen zijn verwijderd: hiermee selecteert u welke kolommen uit de tabel u wilt behouden.
- Gesorteerde rijen: hiermee sorteert u de tabel met behulp van een of meer kolommen.
- Bovenste rijen bewaard: hiermee filtert u de tabel om alleen enkele rijen boven aan de tabel te houden.
Deze set stapnamen is een beschrijvende manier om het M-script weer te geven dat door Power Query voor u is gemaakt. Er zijn verschillende manieren om het volledige M-script weer te geven. In Power Query kunt u Geavanceerde editor selecteren op het tabblad Weergave. U kunt ook Geavanceerde editor selecteren in de groep Query op het tabblad Start. In sommige versies van Power Query kunt u ook de weergave van de formulebalk wijzigen om het queryscript weer te geven door naar het tabblad Weergave te gaan en vanuit de groep Indeling de scriptweergavequery>te selecteren.
De meeste namen in het deelvenster Toegepaste stappen worden ook gebruikt zoals in het M-script. Stappen van een query worden benoemd met behulp van id's in de M-taal. Soms worden er extra tekens rond stapnamen in M verpakt, maar deze tekens worden niet weergegeven in de toegepaste stappen. Een voorbeeld is #"Kept top rows"
, dat is gecategoriseerd als een aanhalingsteken-id vanwege deze extra tekens. Een aanhalingsteken-id kan worden gebruikt om elke reeks nul of meer Unicode-tekens als id te gebruiken, waaronder trefwoorden, witruimte, opmerkingen, operators en interpuncties. Ga naar lexicale structuur voor meer informatie over id's in de M-taal.
Wijzigingen die u aanbrengt in uw query via de Power Query-editor, werken het M-script voor uw query automatisch bij. Als u bijvoorbeeld de vorige afbeelding als uitgangspunt gebruikt, wordt deze wijziging automatisch bijgewerkt in de scriptweergave als u de naam van de stap Top 20 rijen van de bovenste rijen wijzigt.
Hoewel u wordt aangeraden de Power Query-editor te gebruiken om het hele of grootste deel van het M-script voor u te maken, kunt u handmatig stukken van uw M-script toevoegen of wijzigen. Ga naar de officiële docs-site voor de M-taal voor meer informatie over de M-taal.
Notitie
M-script, ook wel M-code genoemd, is een term die wordt gebruikt voor elke code die gebruikmaakt van de Power Query M-taal. In de context van dit artikel verwijst M-script ook naar de code die in een Power Query-query is gevonden en toegankelijk is via het geavanceerde editorvenster of via de scriptweergave in de formulebalk.
In het volgende diagram wordt het proces verkend dat optreedt wanneer een query wordt geëvalueerd in Power Query.
- Het M-script, gevonden in de geavanceerde editor, wordt verzonden naar de Power Query-engine. Andere belangrijke informatie wordt ook opgenomen, zoals referenties en privacyniveaus voor gegevensbronnen.
- Power Query bepaalt welke gegevens moeten worden geëxtraheerd uit de gegevensbron en verzendt een aanvraag naar de gegevensbron.
- De gegevensbron reageert op de aanvraag van Power Query door de aangevraagde gegevens over te dragen naar Power Query.
- Power Query ontvangt de binnenkomende gegevens van de gegevensbron en voert indien nodig transformaties uit met behulp van de Power Query-engine.
- De resultaten die zijn afgeleid van het vorige punt, worden geladen naar een bestemming.
Notitie
Hoewel in dit voorbeeld een query met een SQL Database als gegevensbron wordt weergegeven, is het concept van toepassing op query's met of zonder gegevensbron.
Wanneer Power Query uw M-script leest, wordt het script uitgevoerd via een optimalisatieproces om uw query efficiënter te evalueren. In dit proces wordt bepaald welke stappen (transformaties) van uw query kunnen worden offload naar uw gegevensbron. Ook wordt bepaald welke andere stappen moeten worden geëvalueerd met behulp van de Power Query-engine. Dit optimalisatieproces wordt query folding genoemd, waarbij Power Query zoveel mogelijk uitvoering naar de gegevensbron probeert te pushen om de uitvoering van uw query te optimaliseren.
Belangrijk
Alle regels uit de Power Query M-formuletaal (ook wel de M-taal genoemd) worden gevolgd. Met name luie evaluatie speelt een belangrijke rol tijdens het optimalisatieproces. In dit proces begrijpt Power Query welke specifieke transformaties van uw query moeten worden geëvalueerd. Power Query begrijpt ook welke andere transformaties niet hoeven te worden geëvalueerd, omdat ze niet nodig zijn in de uitvoer van uw query.
Bovendien wordt bij het evalueren van de query rekening gehouden met het privacyniveau van de gegevens van elke gegevensbron wanneer er meerdere bronnen betrokken zijn. Meer informatie: Achter de schermen van de Data Privacy Firewall
In het volgende diagram ziet u de stappen die in dit optimalisatieproces worden uitgevoerd.
- Het M-script, gevonden in de geavanceerde editor, wordt verzonden naar de Power Query-engine. Andere belangrijke informatie wordt ook verstrekt, zoals referenties en privacyniveaus voor gegevensbronnen.
- Het query folding-mechanisme verzendt metagegevensaanvragen naar de gegevensbron om de mogelijkheden van de gegevensbron, tabelschema's, relaties tussen verschillende tabellen in de gegevensbron en meer te bepalen.
- Op basis van de ontvangen metagegevens bepaalt het mechanisme voor het vouwen van query's welke informatie uit de gegevensbron moet worden geëxtraheerd en welke set transformaties er in de Power Query-engine moet worden uitgevoerd. De instructies worden verzonden naar twee andere onderdelen die ervoor zorgen dat de gegevens uit de gegevensbron worden opgehaald en de binnenkomende gegevens in de Power Query-engine zo nodig worden getransformeerd.
- Zodra de interne onderdelen van Power Query de instructies ontvangen, verzendt Power Query een aanvraag naar de gegevensbron met behulp van een gegevensbronquery.
- De gegevensbron ontvangt de aanvraag van Power Query en draagt de gegevens over naar de Power Query-engine.
- Zodra de gegevens zich in Power Query bevinden, voert de transformatie-engine in Power Query (ook wel mashup-engine genoemd) de transformaties uit die niet kunnen worden teruggevouwen of offload naar de gegevensbron.
- De resultaten die zijn afgeleid van het vorige punt, worden geladen naar een bestemming.
Notitie
Afhankelijk van de transformaties en gegevensbron die in het M-script worden gebruikt, bepaalt Power Query of deze de binnenkomende gegevens streamt of buffert.
Het doel van het vouwen van query's is het offloaden of pushen van een query naar een gegevensbron die de transformaties van uw query kan berekenen.
Het query folding-mechanisme bereikt dit doel door uw M-script te vertalen naar een taal die kan worden geïnterpreteerd en uitgevoerd door uw gegevensbron. Vervolgens wordt de evaluatie naar uw gegevensbron gepusht en wordt het resultaat van die evaluatie naar Power Query verzonden.
Deze bewerking biedt vaak een snellere uitvoering van query's dan het extraheren van alle vereiste gegevens uit uw gegevensbron en het uitvoeren van alle transformaties die zijn vereist in de Power Query-engine.
Wanneer u de ervaring voor het ophalen van gegevens gebruikt, begeleidt Power Query u bij het proces waarmee u uiteindelijk verbinding kunt maken met uw gegevensbron. Als u dit doet, gebruikt Power Query een reeks functies in de M-taal die is gecategoriseerd als toegang tot gegevensfuncties. Deze specifieke functies gebruiken mechanismen en protocollen om verbinding te maken met uw gegevensbron met behulp van een taal die uw gegevensbron kan begrijpen.
De stappen die in uw query worden gevolgd, zijn echter de stappen of transformaties die het query folding-mechanisme probeert te optimaliseren. Vervolgens wordt gecontroleerd of ze kunnen worden offload naar uw gegevensbron in plaats van te worden verwerkt met behulp van de Power Query-engine.
Belangrijk
Alle gegevensbronfuncties, die vaak worden weergegeven als de bronstap van een query, voert een query uit op de gegevens in de gegevensbron in de systeemeigen taal. Het query folding-mechanisme wordt gebruikt voor alle transformaties die zijn toegepast op uw query na uw gegevensbronfunctie, zodat ze kunnen worden vertaald en gecombineerd in één gegevensbronquery of zoveel transformaties die kunnen worden offload naar de gegevensbron.
Afhankelijk van hoe de query is gestructureerd, kunnen er drie mogelijke resultaten zijn voor het mechanisme voor het vouwen van query's:
- Volledige query folding: wanneer al uw querytransformaties naar de gegevensbron worden gepusht en minimale verwerking plaatsvindt in de Power Query-engine.
- Gedeeltelijk vouwen van query's: als er slechts een paar transformaties in uw query zijn en niet alle transformaties, kunnen ze terug worden gepusht naar de gegevensbron. In dit geval wordt alleen een subset van uw transformaties uitgevoerd op uw gegevensbron en worden de rest van uw querytransformaties uitgevoerd in de Power Query-engine.
- Geen query folding: wanneer de query transformaties bevat die niet kunnen worden vertaald naar de systeemeigen querytaal van uw gegevensbron, omdat de transformaties niet worden ondersteund of de connector geen ondersteuning biedt voor het vouwen van query's. In dit geval haalt Power Query de onbewerkte gegevens op uit uw gegevensbron en gebruikt u de Power Query-engine om de gewenste uitvoer te bereiken door de vereiste transformaties op het niveau van de Power Query-engine te verwerken.
Notitie
Het query folding-mechanisme is voornamelijk beschikbaar in connectors voor gestructureerde gegevensbronnen, zoals, maar niet beperkt tot, Microsoft SQL Server en OData-feed. Tijdens de optimalisatiefase kan de engine soms de volgorde van de stappen in de query wijzigen.
Door gebruik te maken van een gegevensbron met meer verwerkingsresources en mogelijkheden voor het vouwen van query's, kunt u de laadtijden van query's versnellen wanneer de verwerking plaatsvindt in de gegevensbron en niet bij de Power Query-engine.
Voor gedetailleerde voorbeelden van de drie mogelijke resultaten van het mechanisme voor het vouwen van query's gaat u naar Voorbeelden van Query Folding.
Ga naar Indicatoren voor het vouwen van query's in het deelvenster Toegepaste stappen naar Indicatoren voor het vouwen van query's