Oversigt over evaluering af forespørgsler og forespørgselsdelegering i Power Query

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

M-script til Power Query

Alle forespørgsler, uanset om de er oprettet af Power Query, manuelt skrevet af dig i den avancerede editor eller angivet ved hjælp af et tomt dokument, består af funktioner og syntaks fra M-formelsproget i Power Query. Denne forespørgsel fortolkes og evalueres af Power Query-programmet for at give resultaterne. M-scriptet fungerer som det sæt instruktioner, der er nødvendige for at evaluere forespørgslen.

Tip

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 hjælp af Power Query-editoren. Når du f.eks. opretter forbindelse til en datakilde, f.eks. en SQL Server-database, vil du bemærke i højre side af skærmen, at der er et afsnit kaldet anvendte trin. I dette afsnit vises alle de trin eller transformeringer, der bruges i forespørgslen. I denne forstand fungerer Power Query-editor som en grænseflade, der hjælper dig med at oprette det relevante M-script til de transformationer, du er ude efter, og sikrer, at den kode, du bruger, er gyldig.

Bemærk

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

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

Billede 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 for kun at bevare et bestemt antal rækker øverst i tabellen.

Dette sæt trinnavne er en brugervenlig måde at få vist det M-script, som Power Query har oprettet for dig. Der er flere måder at få vist det fulde M-script på. I Power Query kan du vælge Avanceret editor under fanen Vis. Du kan også vælge Avanceret editor i gruppen Forespørgsel under fanen Hjem. I nogle versioner af Power Query kan du også ændre visningen af formellinjen for at få vist forespørgselsscriptet ved at gå til fanen Vis og vælge Scriptvisning>Forespørgselsscript i gruppen Layout.

Billede med det fulde M-script 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 ombrydes ekstra tegn 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 foretager 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 Behold de øverste rækker til top 20 rækker.

Billede med det anvendte trinnavn ændret til Top 20-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 redigere dele af M-scriptet. Hvis du vil vide mere om M-sproget, skal du gå til det officielle dokumentwebsted for M-sproget.

Bemærk

M-script, også kaldet M-kode, er et ord, der bruges til enhver kode, der bruger M-sproget. I forbindelse med denne artikel henviser M-scriptet også til den kode, der findes i en Power Query-forespørgsel, og som er tilgængelig via vinduet avanceret editor eller via scriptvisningen på formellinjen.

Evaluering af forespørgsler i Power Query

I følgende diagram udforskes den proces, der opstår, når en forespørgsel evalueres i Power Query.

Forespørgselsevalueringsdiagram som en oversigt.

  1. M-scriptet, der findes i den avancerede editor, sendes til Power Query-programmet. 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 besvarer anmodningen fra Power Query ved at overføre de ønskede data til Power Query.
  4. Power Query modtager de indgående data fra datakilden og udfører eventuelle transformationer ved hjælp af Power Query-programmet, hvis det er nødvendigt.
  5. De resultater, der er afledt af det forrige punkt, indlæses til en destination.

Bemærk

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øres scriptet via en optimeringsproces for at evaluere din forespørgsel mere effektivt. 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-programmet. Denne optimeringsproces kaldes forespørgselsdelegering, hvor Power Query forsøger at pushe så meget af den mulige udførelse til datakilden for at optimere udførelsen af forespørgslen.

Vigtigt

Alle regler fra M-formelsproget i Power Query (også kaldet 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.

Forespørgselsevalueringsdiagram, der forklarer optimeringsprocessen.

  1. M-scriptet, der findes i den avancerede editor, sendes til Power Query-programmet. 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. På baggrund af de modtagne metadata bestemmer forespørgselsdelegeringsmekanismen, hvilke oplysninger der skal udtrækkes fra datakilden, og hvilket sæt transformationer der skal ske i Power Query-programmet. Den sender instruktionerne til to andre komponenter, der tager sig af at hente dataene fra datakilden og transformere de indgående data i Power Query-programmet, hvis det er nødvendigt.
  4. Når instruktionerne er modtaget af de interne komponenter i Power Query, 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-programmet.
  6. Når dataene er i Power Query, udfører transformationsprogrammet i Power Query (også kaldet miksprogram) de transformationer, der ikke kunne foldes tilbage eller aflæses i datakilden.
  7. De resultater, der er afledt af det forrige punkt, indlæses til en destination.

Bemærk

Afhængigt af de transformationer og datakilder, der bruges i M-scriptet, bestemmer Power Query, om de indgående data streames eller gemmes i buffer.

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, der kan fortolkes og udføres af datakilden. Derefter sendes evalueringen til din datakilde, og resultatet af evalueringen sendes til Power Query.

Denne handling giver ofte en meget hurtigere udførelse af forespørgsler end at udtrække alle de påkrævede data fra din datakilde og køre alle de transformeringer, der kræves i Power Query-programmet.

Når du bruger hent dataoplevelsen, guider Power Query dig gennem den proces, der i sidste ende giver dig mulighed for at oprette forbindelse til din datakilde. Når du gør det, bruger Power Query en række funktioner på M-sproget, der er kategoriseret som adgang til datafunktioner. 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. Derefter kontrolleres det, om de kan aflæses i din datakilde i stedet for at blive behandlet ved hjælp af Power Query-programmet.

Vigtigt

Alle datakildefunktioner, der ofte vises som kildetrinnet i en forespørgsel, forespørger dataene på datakilden på det oprindelige sprog. Forespørgselsdelegeringsmekanismen bruges på alle transformeringer, der anvendes på din forespørgsel efter din datakildefunktion, så de kan oversættes og kombineres til en enkelt datakildeforespørgsel eller 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:

  • Fuld forespørgselsdelegering: Når alle dine forespørgselstransformationer skubbes tilbage til datakilden, og der sker minimal behandling i Power Query-programmet.
  • 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 et undersæt af dine transformationer i din datakilde, og resten af dine forespørgselstransformationer finder sted i Power Query-programmet.
  • 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 rådata fra din datakilde og bruger Power Query-programmet til at opnå det ønskede output ved at behandle de påkrævede transformeringer på power-forespørgselsprogramniveau.

Bemærk

Forespørgselsdelegeringsmekanismen er primært tilgængelig i connectors til strukturerede datakilder, f.eks., men ikke begrænset til, Microsoft SQL Server og OData-feed. I optimeringsfasen kan programmet nogle gange omarrangere trin i forespørgslen.

Hvis du udnytter en datakilde, der har flere behandlingsressourcer og har funktioner til forespørgselsdelegering, kan det fremskynde indlæsningstiden for din forespørgsel, efterhånden som behandlingen finder sted i datakilden og ikke i Power Query-programmet.

Næste trin

Du kan finde detaljerede eksempler på de tre mulige resultater af forespørgselsdelegeringsmekanismen ved at gå til Eksempler på forespørgselsdelegering.

Du kan finde oplysninger om forespørgselsdelegeringsindikatorer, der findes i ruden Anvendte trin , ved at gå til Forespørgselsdelegeringsindikatorer