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, kan du se 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.
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 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.
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-editor, 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.
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 Power Query. 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.
- 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.
- Power Query bestemmer, hvilke data der skal udtrækkes fra datakilden, og sender en anmodning til datakilden.
- Datakilden besvarer anmodningen fra Power Query ved at overføre de ønskede data til Power Query.
- 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.
- 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.
- 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.
- Forespørgselsdelegeringsmekanismen sender metadataanmodninger til datakilden for at bestemme egenskaberne for datakilden, tabelskemaer, relationer mellem forskellige tabeller i datakilden med mere.
- 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.
- Når de interne komponenter i Power Query modtager vejledningen, sender Power Query en anmodning til datakilden ved hjælp af en datakildeforespørgsel.
- Datakilden modtager anmodningen fra Power Query og overfører dataene til Power Query-programmet.
- 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.
- 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 bufferes.
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 hurtigere udførelse af forespørgsler end udtrækning af alle de påkrævede data fra din datakilde og kørsel af 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.
Relateret indhold
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