Overzicht van query-evaluatie en query folding in Power Query
Dit artikel biedt een eenvoudig overzicht van hoe M-query's worden verwerkt en omgezet in gegevensbronaanvragen.
Power Query M-script
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 van de formuletaal Power Query M. Deze query wordt geïnterpreteerd en geëvalueerd door de Power Query engine om de resultaten 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 zien 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 een sectie met de naam Toegepaste stappen. In deze sectie worden alle stappen of transformaties weergegeven die in uw query worden gebruikt. In dat opzicht fungeert de Power Query-editor als een interface om u te helpen het juiste M-script te maken voor de transformaties die u wilt uitvoeren en om ervoor te zorgen dat de code die u gebruikt geldig is.
Notitie
Het M-script wordt in de Power Query gebruikt voor het volgende:
- Geef de query weer als een reeks stappen en sta het maken of wijzigen van nieuwe stappen toe.
- 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 navigeert u naar een specifieke tabel in de database.
- Andere kolommen verwijderd: hiermee selecteert u welke kolommen uit de tabel moeten worden behouden.
- Gesorteerde rijen: sorteert de tabel met behulp van een of meer kolommen.
- Bewaarde bovenste rijen: filtert de tabel om alleen een bepaald aantal rijen boven aan de tabel te behouden.
Deze reeks stapnamen is een gebruiksvriendelijke manier om het M-script weer te geven dat Power Query voor u heeft gemaakt. Er zijn verschillende manieren om het volledige M-script te bekijken. 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. Ga naar het tabblad Weergave en selecteer in de groep Indeling de optie Scriptweergave > Queryscript.

De meeste namen in het deelvenster Toegepaste stappen worden ook gebruikt zoals in het M-script. Stappen van een query krijgen een naam met behulp van id's in de M-taal. Soms worden extra tekens rond stapnamen in M verpakt, maar deze tekens worden niet weergegeven in de toegepaste stappen. Een voorbeeld is , dat vanwege deze extra tekens #"Kept top rows" wordt gecategoriseerd als een id tussen aangehaalde tekens. Een id tussen aangehaalde tekens kan worden gebruikt om toe te staan dat elke reeks van nul of meer Unicode-tekens wordt gebruikt als id, waaronder trefwoorden, witruimte, opmerkingen, operators en leestekens. Ga naar lexicale structuur voor meer informatie over id's in de M-taal.
Alle wijzigingen die u aan uw query aanmaakt via de Power Query editor, werken automatisch het M-script voor uw query bij. Als u bijvoorbeeld de vorige afbeelding als uitgangspunt gebruikt en de stapnaam Van de bovenste rijen behouden wijzigt in Bovenste 20 rijen, wordt deze wijziging automatisch bijgewerkt in de scriptweergave.

Hoewel het raadzaam is om de Power Query-editor te gebruiken om alle of het grootste deel van het M-script voor u te maken, kunt u handmatig delen 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 code die gebruikmaakt van de 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.
Query-evaluatie in Power Query
In het volgende diagram wordt het proces verkend dat zich voordoet wanneer een query wordt geëvalueerd in Power Query.

- Het M-script, gevonden in de geavanceerde editor, wordt verzonden naar de Power Query engine. Er is ook andere belangrijke informatie opgenomen, zoals referenties en privacyniveaus voor gegevensbron.
- Power Query bepaalt welke gegevens moeten worden geëxtraheerd uit de gegevensbron en verstuurt 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 maakt indien nodig transformaties met behulp van Power Query engine.
- De resultaten die zijn afgeleid van het vorige punt, worden in een doel geladen.
Notitie
In dit voorbeeld wordt een query met een SQL Database als een gegevensbron getoond, maar het concept is van toepassing op query's met of zonder een gegevensbron.
Wanneer Power Query 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 naar uw gegevensbron kunnen worden ge-offload. Ook wordt bepaald welke andere stappen moeten worden geëvalueerd met behulp van Power Query engine. Dit optimalisatieproces wordt query folding genoemd, waarbij Power Query probeert zoveel mogelijk van de mogelijke uitvoering naar de gegevensbron te pushen om de uitvoering van uw query te optimaliseren.
Belangrijk
Alle regels uit de Power Query M-formuletaal (ook wel bekend als de M-taal) worden gevolgd. Vooral luie evaluatie speelt een belangrijke rol tijdens het optimalisatieproces. In dit proces 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.
Wanneer er meerdere bronnen bij betrokken zijn, wordt bovendien rekening gehouden met het gegevens privacyniveau van elke gegevensbron bij het evalueren van de query. Meer informatie: Achter de schermen van de Data Privacy Firewall
In het volgende diagram worden de stappen gedemonstreerd die in dit optimalisatieproces plaatsvinden.

- Het M-script, gevonden in de geavanceerde editor, wordt verzonden naar de Power Query engine. Er wordt ook andere belangrijke informatie verstrekt, zoals referenties en privacyniveaus voor gegevensbron.
- Het Query Folding-mechanisme verstuurt aanvragen voor metagegevens naar de gegevensbron om de mogelijkheden van de gegevensbron, tabelschema's, relaties tussen verschillende entiteiten in de gegevensbron te bepalen en meer.
- Op basis van de ontvangen metagegevens bepaalt het mechanisme voor het vouwen van query's welke informatie moet worden geëxtraheert uit de gegevensbron en welke set transformaties er moet plaatsvinden in de Power Query engine. Deze stuurt de instructies naar twee andere onderdelen die ervoor zorgen dat de gegevens uit de gegevensbron worden opgehaald en de inkomende gegevens in de Power Query-engine indien nodig worden getransformeerd.
- Zodra de instructies zijn ontvangen door de interne onderdelen van Power Query, 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, worden de transformatie-engine in Power Query (ook wel mashup-engine genoemd) transformaties gedaan die niet terug kunnen worden gevouwen of ge-offload naar de gegevensbron.
- De resultaten die zijn afgeleid van het vorige punt, worden in een doel geladen.
Notitie
Afhankelijk van de transformaties en gegevensbron die in het M-script worden gebruikt, bepaalt Power Query of de binnenkomende gegevens worden gestreamd of gebufferd.
Overzicht van Query Folding
Het doel van het vouwen van query's is om een groot deel van de evaluatie van een query te offloaden of te pushen naar een gegevensbron die de transformaties van uw query kan berekenen.
Het mechanisme voor het vouwen van query's 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 pusht en wordt het resultaat van die evaluatie naar de Power Query.
Deze bewerking biedt vaak een veel snellere queryuitvoering 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 Gegevens krijgen gebruikt,Power Query u door het proces waarmee u uiteindelijk verbinding kunt maken met uw gegevensbron. Wanneer u dit doet, gebruikt Power Query een reeks functies in de M-taal die zijn 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 volgende stappen in uw query zijn echter de stappen of transformaties die het query folding-mechanisme probeert te optimaliseren. Vervolgens wordt gecontroleerd of ze naar uw gegevensbron kunnen worden ge-offload in plaats van te worden verwerkt met behulp van Power Query engine.
Belangrijk
Alle gegevensbronfuncties, vaak weergegeven als de bronstap van een query, voeren query's uit op de gegevens in de gegevensbron in de eigen taal. Het mechanisme voor het vouwen van query's wordt gebruikt voor alle transformaties die na uw gegevensbronfunctie op uw query worden toegepast, zodat ze kunnen worden vertaald en gecombineerd in één gegevensbronquery of net zoveel transformaties die naar de gegevensbron kunnen worden ge-offload.
Afhankelijk van hoe de query is gestructureerd, kunnen er drie mogelijke resultaten zijn voor het mechanisme voor het vouwen van query's:
- Volledig vouwen van query's: wanneer al uw querytransformaties worden terugge pusht naar de gegevensbron en er minimale verwerking plaatsvindt op Power Query engine.
- Gedeeltelijk vouwen van query's: Wanneer er slechts enkele transformaties in uw query en niet alle transformaties zijn, kan deze worden terugge pusht naar de gegevensbron. In dit geval wordt er slechts een subset van uw transformaties uitgevoerd in uw gegevensbron en vinden de rest van uw querytransformaties plaats in de Power Query engine.
- Geen query folding: wanneer de query transformaties bevat die niet kunnen worden vertaald naar de native querytaal van uw gegevensbron, ofwel omdat de transformaties niet worden ondersteund of omdat 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 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 mechanisme voor het vouwen van query's 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 stappen in de query opnieuw ordenen.
Het gebruik van een gegevensbron met meer verwerkingsresources en mogelijkheden voor het vouwen van query's kan de laadtijden van query's versnellen wanneer de verwerking plaatsvindt bij de gegevensbron en niet bij de Power Query-engine.
Volgende stappen
Ga naar Query Folding-voorbeelden voor gedetailleerde voorbeelden van de drie mogelijke resultaten van het mechanisme voor het vouwen van query's.