Översikt över frågeutvärdering och frågedelegering i Power Query

Den här artikeln innehåller en grundläggande översikt över hur M-frågor bearbetas och omvandlas till datakällans begäranden.

Power Query M-skript

Alla frågor, oavsett om de har skapats av Power Query, skrivits manuellt av dig i den avancerade redigeraren eller angetts med ett tomt dokument, består av funktioner och syntax från formelspråket Power Query M. Den här frågan tolkas och utvärderas av Power Query-motorn för att ge ut sina resultat. M-skriptet fungerar som den uppsättning instruktioner som behövs för att utvärdera frågan.

Dricks

Du kan se M-skriptet som ett recept som beskriver hur du förbereder dina data.

Det vanligaste sättet att skapa ett M-skript är att använda Power Query-redigeraren. När du till exempel ansluter till en datakälla, till exempel en SQL Server-databas, ser du till höger på skärmen att det finns ett avsnitt som kallas tillämpade steg. I det här avsnittet visas alla steg eller transformeringar som används i din fråga. I den meningen fungerar Power Query-redigeraren som ett gränssnitt som hjälper dig att skapa lämpligt M-skript för de transformeringar som du är efter och ser till att koden du använder är giltig.

Kommentar

M-skriptet används i Power Query-redigeraren för att:

  • Visa frågan som en serie steg och tillåt att nya steg skapas eller ändras.
  • Visa en diagramvy.

Bild av de tillämpade stegen och dataförhandsgranskningsvyn.

Föregående bild framhäver avsnittet tillämpade steg, som innehåller följande steg:

  • Källa: Gör anslutningen till datakällan. I det här fallet är det en anslutning till en SQL Server-databas.
  • Navigering: Navigerar till en specifik tabell i databasen.
  • Andra kolumner har tagits bort: Väljer vilka kolumner från tabellen som ska behållas.
  • Sorterade rader: Sorterar tabellen med en eller flera kolumner.
  • Bevarade översta rader: Filtrerar tabellen för att endast behålla ett visst antal rader överst i tabellen.

Den här uppsättningen med stegnamn är ett användarvänligt sätt att visa M-skriptet som Power Query har skapat åt dig. Det finns flera sätt att visa det fullständiga M-skriptet. I Power Query kan du välja Avancerad redigerare på fliken Visa. Du kan också välja Avancerad redigerare från gruppen Fråga på fliken Start. I vissa versioner av Power Query kan du också ändra vyn för formelfältet så att frågeskriptet visas genom att gå till fliken Visa och från gruppen Layout väljer du Skriptvy>Frågeskript.

Bild med det fullständiga M-skriptet och motsvarande namn på de tillämpade stegen.

De flesta av namnen som finns i fönstret Tillämpade steg används också som i M-skriptet. Steg i en fråga namnges med något som kallas identifierare på M-språket. Ibland omsluts extra tecken runt stegnamn i M, men dessa tecken visas inte i de tillämpade stegen. Ett exempel är #"Kept top rows", som kategoriseras som en citerad identifierare på grund av dessa extra tecken. En citerad identifierare kan användas för att tillåta att valfri sekvens med noll eller fler Unicode-tecken används som identifierare, inklusive nyckelord, blanksteg, kommentarer, operatorer och skiljetecken. Om du vill veta mer om identifierare på M-språket går du till lexikal struktur.

Ändringar som du gör i din fråga via Power Query-redigeraren uppdaterar automatiskt M-skriptet för din fråga. Om du till exempel använder den föregående bilden som startpunkt, om du ändrar steget Behållna översta rader till De 20 översta raderna, uppdateras den här ändringen automatiskt i skriptvyn.

Bild med det tillämpade stegnamnet ändrat till De 20 översta raderna, som även uppdaterar M-skriptet.

Vi rekommenderar att du använder Power Query-redigeraren för att skapa hela eller större delen av M-skriptet åt dig, men du kan lägga till eller ändra delar av M-skriptet manuellt. Om du vill veta mer om M-språket går du till den officiella docs-webbplatsen för M-språket.

Kommentar

M-skript, även kallat M-kod, är en term som används för all kod som använder M-språket. I den här artikeln refererar M-skriptet även till koden som finns i en Power Query-fråga och som är tillgänglig via fönstret avancerad redigerare eller via skriptvyn i formelfältet.

Frågeutvärdering i Power Query

Följande diagram utforskar processen som inträffar när en fråga utvärderas i Power Query.

Frågeutvärderingsdiagram som en översikt.

  1. M-skriptet, som finns i den avancerade redigeraren, skickas till Power Query-motorn. Annan viktig information ingår också, till exempel autentiseringsuppgifter och sekretessnivåer för datakällor.
  2. Power Query avgör vilka data som behöver extraheras från datakällan och skickar en begäran till datakällan.
  3. Datakällan svarar på begäran från Power Query genom att överföra begärda data till Power Query.
  4. Power Query tar emot inkommande data från datakällan och utför eventuella transformeringar med power query-motorn om det behövs.
  5. Resultaten som härleddes från föregående punkt läses in till ett mål.

Kommentar

I det här exemplet visas en fråga med en SQL Database som datakälla, men konceptet gäller för frågor med eller utan en datakälla.

När Power Query läser ditt M-skript körs skriptet via en optimeringsprocess för att mer effektivt utvärdera din fråga. I den här processen avgör den vilka steg (transformeringar) från din fråga som kan avlastas till datakällan. Det avgör också vilka andra steg som behöver utvärderas med hjälp av Power Query-motorn. Den här optimeringsprocessen kallas frågedelegering, där Power Query försöker skicka så mycket av den möjliga körningen till datakällan för att optimera körningen av frågan.

Viktigt!

Alla regler från formelspråket Power Query M (även kallat M-språk) följs. Framför allt spelar lat utvärdering en viktig roll under optimeringsprocessen. I den här processen förstår Power Query vilka specifika transformeringar från din fråga som behöver utvärderas. Power Query förstår också vilka andra transformeringar som inte behöver utvärderas eftersom de inte behövs i utdata från din fråga.

När flera källor är inblandade beaktas dessutom datasekretessnivån för varje datakälla när frågan utvärderas. Mer information: Bakom kulisserna i brandväggen för datasekretess

Följande diagram visar de steg som utförs i den här optimeringsprocessen.

Frågeutvärderingsdiagram som förklarar optimeringsprocessen.

  1. M-skriptet, som finns i den avancerade redigeraren, skickas till Power Query-motorn. Annan viktig information tillhandahålls också, till exempel autentiseringsuppgifter och sekretessnivåer för datakällor.
  2. Mekanismen för frågedelegering skickar metadatabegäranden till datakällan för att fastställa funktionerna i datakällan, tabellscheman, relationer mellan olika tabeller i datakällan med mera.
  3. Baserat på mottagna metadata avgör frågedelegeringsmekanismen vilken information som ska extraheras från datakällan och vilken uppsättning transformeringar som måste ske i Power Query-motorn. Den skickar instruktionerna till två andra komponenter som tar hand om att hämta data från datakällan och transformera inkommande data i Power Query-motorn om det behövs.
  4. När instruktionerna har tagits emot av de interna komponenterna i Power Query skickar Power Query en begäran till datakällan med hjälp av en datakällsfråga.
  5. Datakällan tar emot begäran från Power Query och överför data till Power Query-motorn.
  6. När data finns i Power Query utför transformeringsmotorn i Power Query (även kallad kombinationsmotor) de transformeringar som inte kunde vikas tillbaka eller avlastas till datakällan.
  7. Resultaten som härleddes från föregående punkt läses in till ett mål.

Kommentar

Beroende på transformeringar och datakälla som används i M-skriptet avgör Power Query om den ska strömma eller buffrar inkommande data.

Översikt över frågedelegering

Målet med frågedelegering är att avlasta eller push-överföra så mycket av utvärderingen av en fråga till en datakälla som kan beräkna omvandlingarna av frågan.

Mekanismen för frågedelegering uppnår det här målet genom att översätta M-skriptet till ett språk som kan tolkas och köras av datakällan. Sedan skickas utvärderingen till datakällan och resultatet av utvärderingen skickas till Power Query.

Den här åtgärden ger ofta en mycket snabbare frågekörning än att extrahera alla nödvändiga data från datakällan och köra alla transformeringar som krävs i Power Query-motorn.

När du använder get-dataupplevelsen vägleder Power Query dig genom processen som i slutändan låter dig ansluta till din datakälla. När du gör det använder Power Query en serie funktioner på det M-språk som kategoriseras som åtkomst till datafunktioner. Dessa specifika funktioner använder mekanismer och protokoll för att ansluta till din datakälla med ett språk som datakällan kan förstå.

De steg som följer i frågan är dock de steg eller transformeringar som frågedelegeringsmekanismen försöker optimera. Den kontrollerar sedan om de kan avlastas till din datakälla i stället för att bearbetas med Power Query-motorn.

Viktigt!

Alla datakällans funktioner, som ofta visas som källsteget i en fråga, frågar data i datakällan på sitt eget språk. Frågedelegeringsmekanismen används på alla transformeringar som tillämpas på din fråga efter datakällfunktionen så att de kan översättas och kombineras till en enda datakällfråga eller så många transformeringar som kan avlastas till datakällan.

Beroende på hur frågan är strukturerad kan det finnas tre möjliga resultat av frågedelegeringsmekanismen:

  • Fullständig frågedelegering: När alla dina frågetransformeringar skickas tillbaka till datakällan och minimal bearbetning sker i Power Query-motorn.
  • Partiell frågedelegering: När bara ett fåtal transformeringar i frågan, och inte alla, kan skickas tillbaka till datakällan. I det här fallet görs endast en delmängd av dina transformeringar i datakällan och resten av dina frågetransformeringar sker i Power Query-motorn.
  • Ingen frågedelegering: När frågan innehåller transformeringar som inte kan översättas till datakällans interna frågespråk, antingen på grund av att omvandlingarna inte stöds eller om anslutningsappen inte stöder frågedelegering. I det här fallet hämtar Power Query rådata från din datakälla och använder Power Query-motorn för att uppnå de utdata du vill ha genom att bearbeta nödvändiga transformeringar på Power Query-motornivå.

Kommentar

Frågedelegeringsmekanismen är främst tillgänglig i anslutningsappar för strukturerade datakällor som, men inte begränsat till, Microsoft SQL Server och OData Feed. Under optimeringsfasen kan motorn ibland ändra ordning på stegen i frågan.

Om du använder en datakälla som har mer bearbetningsresurser och har frågedelegeringsfunktioner kan du påskynda frågeinläsningstiderna när bearbetningen sker i datakällan och inte i Power Query-motorn.

Nästa steg

Detaljerade exempel på de tre möjliga resultaten av frågedelegeringsmekanismen finns i Frågedelegeringsexempel.

Information om frågedelegeringsindikatorer som finns i fönstret Tillämpade steg finns i Frågedelegeringsindikatorer