Del via


Oversigt over query-evaluering og query folding i Power Query

Denne artikel indeholder en grundlæggende oversigt over, hvordan M-forespørgsler behandles og omdannes til datakildeanmodninger.

Power Query M script

Enhver forespørgsel, uanset om den er oprettet af Power Query, manuelt skrevet af dig i den avancerede editor eller indtastet via et tomt dokument, består af funktioner og syntaks fra Power Query M-formelsproget. Denne forespørgsel bliver fortolket og evalueret af Power Query-motoren for at give resultaterne. M-scriptet fungerer som det sæt instruktioner, der er nødvendige for at evaluere forespørgslen.

Tips

Du kan tænke på M-scriptet som en opskrift, der beskriver, hvordan du forbereder dine data.

Den mest almindelige måde at oprette et M-script på er ved at bruge Power Query-editoren. For eksempel, når du forbinder til en datakilde, såsom en SQL Server-database, så læg mærke til højre på skærmen, at der er en sektion kaldet anvendte skridt. I dette afsnit vises alle de trin eller transformeringer, der bruges i forespørgslen. I denne forstand fungerer Power Query-editoren som et interface, der hjælper dig med at skabe det passende M-script til de transformationer, du søger, og sikrer, at den kode, du bruger, er gyldig.

Seddel

M-scriptet bruges i Power Query-editoren til at:

  • Vis forespørgslen som en række trin, og tillad oprettelse eller ændring af nye trin.
  • Vis en diagramvisning.

Skærmbillede af de anvendte trin og visningen dataeksempel.

På det forrige billede fremhæves afsnittet anvendte trin, som indeholder følgende trin:

  • Kilde: Opretter forbindelse til datakilden. I dette tilfælde er det en forbindelse til en SQL Server-database.
  • Navigation: Navigerer til en bestemt tabel i databasen.
  • Fjernede andre kolonner: Vælger, hvilke kolonner fra tabellen der skal bevares.
  • Sorterede rækker: Sorterer tabellen ved hjælp af en eller flere kolonner.
  • Bevarede øverste rækker: Filtrerer tabellen, så nogle rækker kun bevares øverst i tabellen.

Dette sæt af skridtnavne er en venlig måde at se M-scriptet på, som Power Query har lavet til dig. Der er flere måder at få vist det fulde M-script på. I Power Query kan du vælge Avanceret editor i fanen View. Du kan også vælge Avanceret editor fra gruppen Query i fanen Home. I nogle versioner af Power Query kan du også ændre visningen af formellinjen, så den viser forespørgselsscriptet, ved at gå ind i fanen View og fra gruppen Layout vælge Script view>Query script.

Skærmbillede, der indeholder hele M-scriptet og de tilsvarende navne på de anvendte trin.

De fleste af de navne, der findes i ruden Anvendte trin , bruges også, som de er i M-scriptet. Trin i en forespørgsel navngives ved hjælp af noget, der kaldes identifikatorer på M-sproget. Nogle gange er ekstra tegn viklet omkring trinnavne i M, men disse tegn vises ikke i de anvendte trin. Et eksempel er #"Kept top rows", som er kategoriseret som et citeret id på grund af disse ekstra tegn. Et citeret id kan bruges til at tillade, at en sekvens på nul eller flere Unicode-tegn bruges som en identifikator, herunder nøgleord, mellemrum, kommentarer, operatorer og tegnsætningstegn. Hvis du vil vide mere om id'er på M-sproget, skal du gå til leksikalsk struktur.

Alle ændringer, du laver i din forespørgsel via Power Query-editoren, opdaterer automatisk M-scriptet for din forespørgsel. Hvis du f.eks. bruger det forrige billede som udgangspunkt, opdateres denne ændring automatisk i scriptvisningen, hvis du ændrer trinnet Beholdt øverste rækker til top 20 rækker.

Skærmbillede af det anvendte trinnavn, der er ændret til De 20 øverste rækker, som også opdaterer M-scriptet.

Selvom vi anbefaler, at du bruger Power Query-editoren til at oprette hele eller det meste af M-scriptet for dig, kan du manuelt tilføje eller ændre dele af dit M-script. Hvis du vil vide mere om M-sproget, skal du gå til det officielle dokumentwebsted for M-sproget.

Seddel

M-script, også kaldet M-kode, er et udtryk, der bruges om enhver kode, der bruger Power Query M-sproget. I denne artikels kontekst refererer M-script også til koden, der findes inde i en Power Query-forespørgsel og er tilgængelig via det avancerede redigeringsvindue eller gennem scriptvisningen i formellinjen.

Forespørgselsevaluering i Power Query

Følgende diagram udforsker processen, der sker, når en forespørgsel evalueres i Power Query.

Diagram, der viser stien for en forespørgselsevaluering fra M-script til det endelige output.

  1. M-scriptet, som findes i den avancerede editor, indsendes til Power Query-motoren. Andre vigtige oplysninger er også inkluderet, f.eks. legitimationsoplysninger og niveauer for beskyttelse af personlige oplysninger for datakilden.
  2. Power Query bestemmer, hvilke data der skal udtrækkes fra datakilden, og sender en anmodning til datakilden.
  3. Datakilden svarer på anmodningen fra Power Query ved at overføre de anmodede data til Power Query.
  4. Power Query modtager de indkommende data fra datakilden og udfører eventuelle transformationer ved hjælp af Power Query-motoren, hvis nødvendigt.
  5. De resultater, der er afledt af det forrige punkt, indlæses til en destination.

Seddel

Selvom dette eksempel viser en forespørgsel med en SQL Database som en datakilde, gælder begrebet for forespørgsler med eller uden en datakilde.

Når Power Query læser dit M-script, kører det scriptet gennem en optimeringsproces for mere effektivt at evaluere din forespørgsel. I denne proces bestemmer den, hvilke trin (transformeringer) fra forespørgslen der kan indlæses i datakilden. Den bestemmer også, hvilke andre trin der skal evalueres ved hjælp af Power Query-motoren. Denne optimeringsproces kaldes query folding, hvor Power Query forsøger at sende så meget af den mulige udførelse over til datakilden for at optimere udførelsen af din forespørgsel.

Vigtigt

Alle regler fra Power Query M-formelsproget (også kendt som M-sproget) følges. Dovne evalueringer spiller især en vigtig rolle under optimeringsprocessen. I denne proces forstår Power Query, hvilke specifikke transformationer fra din forespørgsel der skal evalueres. Power Query forstår også, hvilke andre transformationer der ikke behøver at blive evalueret, fordi de ikke er nødvendige i outputtet af din forespørgsel.

Når der er flere kilder involveret, tages der desuden hensyn til niveauet for beskyttelse af personlige oplysninger for hver datakilde, når forespørgslen evalueres. Flere oplysninger: Bag kulisserne i Firewall til beskyttelse af personlige oplysninger

I følgende diagram vises de trin, der udføres i denne optimeringsproces.

Diagram, der viser optimeringsprocessen under forespørgselsevaluering.

  1. M-scriptet, som findes i den avancerede editor, indsendes til Power Query-motoren. Der leveres også andre vigtige oplysninger, f.eks. legitimationsoplysninger og niveauer for beskyttelse af personlige oplysninger for datakilden.
  2. Forespørgselsdelegeringsmekanismen sender metadataanmodninger til datakilden for at bestemme egenskaberne for datakilden, tabelskemaer, relationer mellem forskellige tabeller i datakilden med mere.
  3. Baseret på de modtagne metadata bestemmer query folding-mekanismen, hvilken information der skal udtrækkes fra datakilden, og hvilket sæt transformationer der skal ske inde i Power Query-motoren. Den sender instruktionerne til to andre komponenter, som tager sig af at hente data fra datakilden og omdanne de indkommende data i Power Query-motoren, hvis nødvendigt.
  4. Når de interne komponenter i Power Query modtager instruktionerne, sender Power Query en anmodning til datakilden ved hjælp af en datakildeforespørgsel.
  5. Datakilden modtager anmodningen fra Power Query og overfører dataene til Power Query-motoren.
  6. Når dataene er inde i Power Query, udfører transformationsmotoren i Power Query (også kendt som mashup-motoren) transformationerne, som ikke kunne foldes tilbage eller overføres til datakilden.
  7. De resultater, der er afledt af det forrige punkt, indlæses til en destination.

Seddel

Afhængigt af transformationerne og datakilden, der bruges i M-scriptet, afgør Power Query, om den streamer eller buffer de indkommende data.

Oversigt over forespørgselsdelegering

Målet med forespørgselsdelegering er at aflaste eller overføre så meget af evalueringen af en forespørgsel til en datakilde, der kan beregne transformationerne af din forespørgsel.

Forespørgselsdelegeringsmekanismen opnår dette mål ved at oversætte dit M-script til et sprog, som din datakilde kan fortolke og udføre. Den sender derefter evalueringen til din datakilde og sender resultatet af denne evaluering til Power Query.

Denne operation giver ofte en hurtigere forespørgselsudførelse end at udtrække alle de nødvendige data fra din datakilde og køre alle transformationer, der kræves i Power Query-motoren.

Når du bruger get data experience, guider Power Query dig gennem processen, der i sidste ende gør det muligt for dig at forbinde til din datakilde. Når Power Query gør dette, bruger en række funktioner i M-sproget kategoriseret som adgangsdatafunktioner. Disse specifikke funktioner bruger mekanismer og protokoller til at oprette forbindelse til datakilden ved hjælp af et sprog, som din datakilde kan forstå.

De trin, der følger i din forespørgsel, er dog de trin eller transformationer, som forespørgselsdelegeringsmekanismen forsøger at optimere. Den tjekker derefter, om de kan aflastes til din datakilde i stedet for at blive behandlet via Power Query-motoren.

Vigtigt

Alle datakildefunktioner, der ofte vises som kildetrinnet i en forespørgsel, forespørger dataene på datakilden på det oprindelige sprog. Forespørgselsdelegeringsmekanismen anvendes på alle transformeringer, der anvendes på din forespørgsel efter din datakildefunktion. De kan derefter oversættes og kombineres til en enkelt datakildeforespørgsel eller lige så mange transformeringer, der kan indlæses i datakilden.

Afhængigt af hvordan forespørgslen er struktureret, kan der være tre mulige resultater af forespørgselsdelegeringsmekanismen:

  • Full query folding: Når alle dine forespørgselstransformationer bliver skubbet tilbage til datakilden, og minimal behandling sker i Power Query-engine.
  • Delvis forespørgselsdelegering: Når det kun er nogle få transformationer i din forespørgsel og ikke alle, der kan sendes tilbage til datakilden. I dette tilfælde udføres kun en delmængde af dine transformationer ved din datakilde, og resten af dine forespørgselstransformationer sker i Power Query-motoren.
  • Ingen forespørgselsdelegering: Når forespørgslen indeholder transformationer, der ikke kan oversættes til datakildens oprindelige forespørgselssprog, enten fordi transformationerne ikke understøttes, eller fordi connectoren ikke understøtter forespørgselsdelegering. I dette tilfælde henter Power Query de rå data fra din datakilde og bruger Power Query-motoren til at opnå det ønskede output ved at behandle de nødvendige transformationer på Power Query-motorniveau.

Seddel

Forespørgselsfoldningsmekanismen er primært tilgængelig i forbindelser til strukturerede datakilder såsom, men ikke begrænset til, SQL Server og OData Feed. I optimeringsfasen kan programmet nogle gange omarrangere trin i forespørgslen.

At bruge en datakilde med flere behandlingsressourcer og forespørgselsfoldningsmuligheder kan fremskynde dine forespørgselsindlæsningstider, da behandlingen sker ved datakilden og ikke i Power Query-motoren.