Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen gir en grunnleggende oversikt over hvordan M-spørringer behandles og gjøres om til datakildeforespørsler.
Power Query M-skriptet
Enhver spørring, enten laget av Power Query, skrevet manuelt av deg i avansert redigerer, eller skrevet inn med et blankt dokument, består av funksjoner og syntaks fra Power Query M-formelspråket. Denne spørringen blir tolket og evaluert av Power Query-motoren for å gi resultatene. M-skriptet fungerer som settet med instruksjoner som kreves for å evaluere spørringen.
Tips
Du kan tenke på M-skriptet som en oppskrift som beskriver hvordan du klargjør dataene.
Den vanligste måten å lage et M-skript på er ved å bruke Power Query-editoren. For eksempel, når du kobler til en datakilde, som en SQL Server-database, legg merke til på høyre side av skjermen at det er en seksjon som heter applied steps. Denne delen viser alle trinnene eller transformeringene som brukes i spørringen. I denne sammenheng fungerer Power Query-editoren som et grensesnitt som hjelper deg å lage det riktige M-skriptet for transformasjonene du er ute etter, og sikrer at koden du bruker er gyldig.
Merk deg
M-skriptet brukes i Power Query-editoren til å:
- Vis spørringen som en rekke trinn, og tillat oppretting eller endring av nye trinn.
- Vis en diagramvisning.
Det forrige bildet fremhever delen brukte trinn, som inneholder følgende trinn:
- Kilde: Kobler til datakilden. I dette tilfellet er det en tilkobling til en SQL Server-database.
- Navigasjon: Navigerer til en bestemt tabell i databasen.
- Fjernet andre kolonner: Merker hvilke kolonner fra tabellen som skal beholdes.
- Sorterte rader: Sorterer tabellen ved hjelp av én eller flere kolonner.
- Beholdt øverste rader: Filtrerer tabellen for å bare beholde noen rader fra toppen av tabellen.
Dette settet med stegnavn er en vennlig måte å se M-skriptet som Power Query har laget for deg. Det finnes flere måter å vise hele M-skriptet på. I Power Query kan du velge avansert redigering i fanen View. Du kan også velge avansert redigering fra gruppen Query i fanen Home. I noen versjoner av Power Query kan du også endre visningen av formellinjen for å vise spørringsskriptet ved å gå inn i fanen View og fra gruppen Layout velge Script view>Query script.
De fleste navnene som finnes i ruten Brukte trinn , brukes også som de er i M-skriptet. Trinnene i en spørring kalles ved hjelp av noe som kalles identifikatorer på M-språket. Noen ganger er ekstra tegn pakket rundt stegnavn i M, men disse tegnene vises ikke i de anvendte trinnene. Et eksempel er #"Kept top rows", som er kategorisert som en sitert identifikator på grunn av disse ekstra tegnene. En sitert identifikator kan brukes til å tillate at en sekvens med null eller flere Unicode-tegn brukes som identifikator, inkludert nøkkelord, mellomrom, kommentarer, operatorer og tegnsettingstegn. Hvis du vil lære mer om identifikatorer på M-språket, kan du gå til leksikalsk struktur.
Alle endringer du gjør i spørringen din gjennom Power Query-editoren oppdaterer automatisk M-skriptet for spørringen din. Hvis du for eksempel bruker det forrige bildet som utgangspunkt, oppdateres denne endringen automatisk i skriptvisningen hvis du endrer navnet på beholdte øverste rader til de øverste 20 radene.
Selv om vi anbefaler at du bruker Power Query-editoren for å lage hele eller mesteparten av M-skriptet for deg, kan du manuelt legge til eller endre deler av M-skriptet ditt. Hvis du vil lære mer om M-språket, kan du gå til det offisielle dokumentnettstedet for M-språket.
Merk deg
M-skript, også kalt M-kode, er et begrep som brukes for all kode som bruker Power Query M-språket. I denne artikkelens kontekst refererer M-script også til koden som finnes i en Power Query-spørring og er tilgjengelig via det avanserte redigeringsvinduet eller gjennom skriptvisningen i formellinjen.
Spørringsevaluering i Power Query
Følgende diagram utforsker prosessen som skjer når en spørring evalueres i Power Query.
- M-skriptet, som finnes i den avanserte editoren, sendes til Power Query-motoren. Annen viktig informasjon er også inkludert, for eksempel legitimasjon og personvernnivåer for datakilder.
- Power Query avgjør hvilke data som må hentes fra datakilden og sender en forespørsel til datakilden.
- Datakilden svarer på forespørselen fra Power Query ved å overføre de forespurte dataene til Power Query.
- Power Query mottar innkommende data fra datakilden og utfører eventuelle transformasjoner ved hjelp av Power Query-motoren om nødvendig.
- Resultatene som er avledet fra forrige punkt, lastes inn til et mål.
Merk deg
Selv om dette eksemplet viser en spørring med en SQL-database som datakilde, gjelder konseptet for spørringer med eller uten en datakilde.
Når Power Query leser M-skriptet ditt, kjører skriptet gjennom en optimaliseringsprosess for å evaluere spørringen din mer effektivt. I denne prosessen bestemmer den hvilke trinn (transformeringer) fra spørringen som kan avlastes til datakilden. Den avgjør også hvilke andre steg som må evalueres ved hjelp av Power Query-motoren. Denne optimaliseringsprosessen kalles query folding, hvor Power Query prøver å sende så mye mulig av den mulige utførelsen til datakilden for å optimalisere utførelsen av spørringen din.
Viktig!
Alle regler fra Power Query M-formelspråket (også kjent som M-språket) følges. Spesielt spiller lat evaluering en viktig rolle under optimaliseringsprosessen. I denne prosessen forstår Power Query hvilke spesifikke transformasjoner fra spørringen din som må evalueres. Power Query forstår også hvilke andre transformasjoner som ikke trenger å evalueres fordi de ikke trengs i utdataene av spørringen din.
Når flere kilder er involvert, tas personvernnivået for hver datakilde i tillegg i betraktning når du evaluerer spørringen. Mer informasjon: Bak kulissene i brannmuren for datavern
Diagrammet nedenfor viser trinnene som finner sted i denne optimaliseringsprosessen.
- M-skriptet, som finnes i den avanserte editoren, sendes til Power Query-motoren. Annen viktig informasjon leveres også, for eksempel legitimasjon og personvernnivåer for datakilder.
- Spørringsdelegeringsmekanismen sender metadataforespørsler til datakilden for å bestemme egenskapene til datakilden, tabellskjemaer, relasjoner mellom ulike tabeller i datakilden og mer.
- Basert på metadataene som mottas, bestemmer query folding-mekanismen hvilken informasjon som skal hentes ut fra datakilden og hvilket sett med transformasjoner som må skje inne i Power Query-motoren. Den sender instruksjonene til to andre komponenter som tar seg av å hente dataene fra datakilden og transformere de innkommende dataene i Power Query-motoren om nødvendig.
- Når de interne komponentene i Power Query mottar instruksjonene, sender Power Query en forespørsel til datakilden ved hjelp av en datakildeforespørsel.
- Datakilden mottar forespørselen fra Power Query og overfører dataene til Power Query-motoren.
- Når dataene er inne i Power Query, utfører transformasjonsmotoren i Power Query (også kjent som mashup-motor) transformasjonene som ikke kunne brettes tilbake eller overføres til datakilden.
- Resultatene som er avledet fra forrige punkt, lastes inn til et mål.
Merk deg
Avhengig av transformasjonene og datakilden som brukes i M-skriptet, avgjør Power Query om den strømmer eller buffrer de innkommende dataene.
Oversikt over spørringsdelegering
Målet med spørringsdelegering er å avlaste eller sende så mye av evalueringen av en spørring til en datakilde som kan beregne transformasjonene av spørringen.
Spørringsdelegeringsmekanismen oppnår dette målet ved å oversette M-skriptet til et språk som datakilden kan tolke og kjøre. Den sender deretter evalueringen til datakilden din og sender resultatet av evalueringen til Power Query.
Denne operasjonen gir ofte en raskere spørringskjøring enn å hente ut all nødvendig data fra datakilden din og kjøre alle transformasjoner som kreves i Power Query-motoren.
Når du bruker get data experience, guider Power Query deg gjennom prosessen som til slutt lar deg koble til datakilden din. Når dette gjøres, bruker Power Query en serie funksjoner i M-språket kategorisert som tilgangsdatafunksjoner. Disse spesifikke funksjonene bruker mekanismer og protokoller for å koble til datakilden ved hjelp av et språk som datakilden kan forstå.
Trinnene som følger i spørringen, er imidlertid trinnene eller transformasjonene som spørringsdelegeringsmekanismen forsøker å optimalisere. Deretter sjekker den om de kan overføres til datakilden din i stedet for å bli behandlet med Power Query-motoren.
Viktig!
Alle datakildefunksjoner, vanligvis vist som kildetrinnet i en spørring, spør dataene på datakilden på sitt opprinnelige språk. Spørringsdelegeringsmekanismen brukes på alle transformeringer som brukes på spørringen etter datakildefunksjonen. De kan deretter oversettes og kombineres til én enkelt datakildespørring eller så mange transformeringer som kan avlastes til datakilden.
Avhengig av hvordan spørringen er strukturert, kan det være tre mulige resultater for spørringsdelegeringsmekanismen:
- Full query folding: Når alle spørringstransformasjonene dine blir skjøvet tilbake til datakilden og minimal behandling skjer i Power Query-motoren.
- Delvis spørringsdelegering: Når bare noen få transformasjoner i spørringen, og ikke alle, kan sendes tilbake til datakilden. I dette tilfellet gjøres bare en delmengde av transformasjonene dine i datakilden din, og resten av spørringstransformasjonene skjer i Power Query-motoren.
- Ingen spørringsdelegering: Når spørringen inneholder transformasjoner som ikke kan oversettes til det opprinnelige spørringsspråket for datakilden, enten fordi transformasjonene ikke støttes eller koblingen ikke støtter spørringsdelegering. I dette tilfellet henter Power Query rådataene fra datakilden din og bruker Power Query-motoren for å oppnå ønsket resultat ved å behandle nødvendige transformasjoner på Power Query-motornivå.
Merk deg
Spørringsfoldingsmekanismen er primært tilgjengelig i koblinger for strukturerte datakilder som, men ikke begrenset til, SQL Server og OData Feed. I løpet av optimaliseringsfasen kan motoren noen ganger endre rekkefølgen på trinnene i spørringen.
Å bruke en datakilde med flere prosesseringsressurser og spørringsfolding-muligheter kan fremskynde lastetidene for spørringene dine, siden behandlingen skjer ved datakilden og ikke ved Power Query-motoren.