Share via


Forespørgselsplan for Power Query (prøveversion)

Forespørgselsplan for Power Query er en funktion, der giver et bedre overblik over din forespørgsels evaluering. Det er nyttigt at hjælpe med at afgøre, hvorfor en bestemt forespørgsel muligvis ikke kan foldes på et bestemt trin.

I dette praktiske eksempel demonstrerer denne artikel den primære use case og de potentielle fordele ved at bruge funktionen forespørgselsplan til at gennemse dine forespørgselstrin. De eksempler, der bruges i denne artikel, er oprettet ved hjælp af Eksempeldatabasen AdventureWorksLT til Azure SQL Server, som du kan downloade fra AdventureWorks-eksempeldatabaser.

Bemærk

Funktionen til forespørgselsplan til Power Query er kun tilgængelig i Power Query Online.

Foreslået proces til brug af funktionen forespørgselsplan i Power Query ved at gennemse indikatorerne for forespørgselsdelegering, gennemse derefter forespørgselsplanen for et valgt trin og til sidst implementere eventuelle ændringer, der er afledt af gennemsyn af forespørgselsplanen.

Denne artikel er opdelt i en række anbefalede trin for at fortolke forespørgselsplanen. Disse trin er:

  1. Gennemse indikatorerne for forespørgselsdelegering.
  2. Vælg forespørgselstrinnet for at gennemse forespørgselsplanen.
  3. Implementer ændringer i forespørgslen.

Brug følgende trin til at oprette forespørgslen i dit eget Power Query Online-miljø.

  1. Fra Power Query – Vælg datakilde skal du vælge Tom forespørgsel.

  2. Erstat scriptet for den tomme forespørgsel med følgende forespørgsel.

    let
      Source = Sql.Database("servername", "database"),
      Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data],
      #"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}),
      #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000),
      #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5)
    in
      #"Kept bottom rows"
    
  3. Skift servername og database med de korrekte navne til dit eget miljø.

  4. (Valgfrit) Hvis du forsøger at oprette forbindelse til en server og database for et lokalt miljø, skal du sørge for at konfigurere en gateway for det pågældende miljø.

  5. Vælg Næste.

  6. I Power Query-editor skal du vælge Konfigurer forbindelse og angive legitimationsoplysningerne til din datakilde.

Bemærk

Du kan få flere oplysninger om, hvordan du opretter forbindelse til en SQL Server, ved at gå til SQL Server-databasen.

Når du har fulgt disse trin, vil din forespørgsel ligne den på følgende billede.

Eksempelforespørgsel med indikatorer for forespørgselsdelegering aktiveret. Denne forespørgsel opretter forbindelse til tabellen SalesOrderHeader og vælger et par kolonner fra de sidste fem ordrer med en TotalDue-værdi over 1000.

Bemærk

I denne artikel bruges et forenklet eksempel til at vise denne funktion, men de begreber, der er beskrevet i denne artikel, gælder for alle forespørgsler. Vi anbefaler, at du har et godt kendskab til forespørgselsdelegering, før du læser forespørgselsplanen. Hvis du vil vide mere om forespørgselsdelegering, skal du gå til Grundlæggende oplysninger om forespørgselsdelegering.

1. Gennemse indikatorerne for forespørgselsdelegering

Bemærk

Før du læser dette afsnit, anbefaler vi, at du gennemser artiklen om forespørgselsdelegeringsindikatorer.

Dit første trin i denne proces er at gennemse din forespørgsel og være opmærksom på indikatorerne for forespørgselsdelegering. Målet er at gennemse de trin, der er markeret som ikke-foldet. Derefter kan du se, om hvis du foretager ændringer i den overordnede forespørgsel, kan få disse transformationer til at folde helt ud.

Forespørgselsdelegeringsindikatorer for eksempelforespørgslen i ruden Anvendte trin.

I dette eksempel er det eneste trin, der ikke kan foldes, de nederste rækker, som er nemme at identificere via indikatoren for ikke-foldede trin. Dette trin er også det sidste trin i forespørgslen.

Målet er nu at gennemgå dette trin og forstå, hvad der foldes tilbage til datakilden, og hvad der ikke kan foldes.

2. Vælg forespørgselstrinnet for at gennemse forespørgselsplanen

Du har identificeret trinnet Beholdt nederste rækker som et trin af interesse, da det ikke kan foldes tilbage til datakilden. Højreklik på trinnet, og vælg indstillingen Vis forespørgselsplan . Denne handling viser en ny dialogboks, der indeholder et diagram til forespørgselsplanen for det valgte trin.

Dialogboksen Forespørgselsplan, der viser en diagramvisning for forespørgselsplanen med noder, der er forbundet af linjer. Power Query forsøger at optimere din forespørgsel ved at drage fordel af doven evaluering og forespørgselsdelegering, som nævnt i Grundlæggende oplysninger om forespørgselsdelegering. Denne forespørgselsplan repræsenterer den optimerede oversættelse af din M-forespørgsel til den oprindelige forespørgsel, der sendes til datakilden. Den indeholder også alle transformeringer, der udføres af Power Query Engine. Den rækkefølge, som noderne vises i, følger rækkefølgen af forespørgslen fra det sidste trin eller output i forespørgslen, som vises længst til venstre i diagrammet, og i dette tilfælde er noden Table.LastN , der repræsenterer trinnet Beholdt nederste rækker .

Nederst i dialogboksen er der en søjle med ikoner, der hjælper dig med at zoome ind eller ud af visningen for forespørgselsplanen og andre knapper, der kan hjælpe dig med at administrere visningen. For det forrige billede blev indstillingen Tilpas til visning fra denne linje brugt til bedre at sætte pris på noderne.

Dialogboksen Forespørgselsplan, hvor noderne er forstørret for at få en bedre visning.

Bemærk

Forespørgselsplanen repræsenterer den optimerede plan. Når programmet evaluerer en forespørgsel, forsøger det at folde alle operatorer til en datakilde. I nogle tilfælde kan det endda foretage en intern omarrangering af trinnene for at maksimere foldningen. Med dette in mente indeholder de noder/operatorer, der er tilbage i denne optimerede forespørgselsplan, typisk den "foldede" datakildeforespørgsel og alle operatorer, der ikke kunne delegeres og evalueres lokalt.

Identificer foldede noder fra andre noder

Du kan identificere noderne i dette diagram som to grupper:

  • Foldede noder: Denne node kan være enten Value.NativeQuery eller "datakilde"-noder, Sql.Databasef.eks. . Disse kan også identificeres med mærkatens fjernbetjening under deres funktionsnavn.
  • Ikke-foldede noder: Andre tabeloperatorer, f.eks Table.SelectRows. , Table.SelectColumnsog andre funktioner, der ikke kunne foldes. Disse kan også identificeres med mærkaterne Fuld scanning og Streaming.

På følgende billede vises de foldede noder i det røde rektangel. Resten af noderne kunne ikke foldes tilbage til datakilden. Du skal gennemse resten af noderne, da målet er at forsøge at få disse noder til at folde tilbage til datakilden.

Kontrolelementer til visning af forespørgselsplan nederst i dialogboksen, hvor indstillingen Tilpas til visning er valgt. Du kan vælge Vis detaljer nederst i nogle noder for at få vist udvidede oplysninger. Detaljerne for noden Value.NativeQuery viser f.eks. den oprindelige forespørgsel (i SQL), der sendes til datakilden.

Detaljevisning for noden Value.NativeQuery i forespørgselsplanen. Den forespørgsel, der vises her, er muligvis ikke nøjagtigt den samme forespørgsel, der sendes til datakilden, men det er en god tilnærmelse. I dette tilfælde fortæller den dig nøjagtigt, hvilke kolonner der forespørges fra tabellen SalesOrderHeader, og hvordan den filtrerer tabellen ved hjælp af feltet TotalDue, så du kun får rækker, hvor værdien for det pågældende felt er større end 1000. Noden ud for den, Table.LastN, beregnes lokalt af Power Query-programmet, da den ikke kan foldes.

Bemærk

Operatorerne stemmer muligvis ikke nøjagtigt overens med de funktioner, der bruges i forespørgslens script.

Gennemse ikke-foldede noder, og overvej handlinger for at gøre din transformeringsfoldning

Du har nu bestemt, hvilke noder der ikke kunne foldes, og de evalueres lokalt. Dette tilfælde har kun noden Table.LastN , men i andre scenarier kan den have mange flere.

Målet er at anvende ændringer på din forespørgsel, så trinnet kan foldes. Nogle af de ændringer, du implementerer, kan gå fra at omarrangere dine trin til at anvende en alternativ logik på din forespørgsel, der er mere eksplicit for datakilden. Det betyder ikke, at alle forespørgsler og alle handlinger kan foldes ved at anvende nogle ændringer. Men det er en god idé at afgøre via prøveversion og fejl, om din forespørgsel kan foldes tilbage.

Da datakilden er en SQL Server-database, er det et godt alternativ at drage fordel af STANDARD- og ORDER BY-delsætningerne i SQL, hvis målet er at hente de sidste fem ordrer fra tabellen. Da der ikke er nogen BOTTOM-delsætning i SQL, kan transformationen Table.LastN i PowerQuery ikke oversættes til SQL. Du kan fjerne Table.LastN trinnet og erstatte det med:

  • Et faldende sorteringstrin efter kolonnen SalesOrderID i tabellen, da denne kolonne bestemmer, hvilken rækkefølge der går først, og hvilken der er angivet sidst.
  • Vælg de fem øverste rækker, da tabellen er blevet sorteret. Denne transformering opnår det samme, som hvis det var rækker nederst (Table.LastN).

Dette alternativ svarer til den oprindelige forespørgsel. Selvom dette alternativ i teorien virker godt, skal du foretage ændringerne for at se, om dette alternativ får denne node til at folde helt tilbage til datakilden.

3. Implementer ændringer i forespørgslen

Implementer det alternativ, der er beskrevet i forrige afsnit:

  1. Luk dialogboksen forespørgselsplan, og gå tilbage til Power Query-editor.

  2. Fjern trinnet Behold nederste rækker.

  3. Sortér kolonnen SalesOrderID i faldende rækkefølge.

    Sortering af kolonnen SalesOrderID i faldende rækkefølge ved hjælp af menuen Autofilter.

  4. Vælg tabelikonet i øverste venstre hjørne af visningen dataeksempel, og vælg den indstilling, der læser Bevar de øverste rækker. I dialogboksen skal du overføre tallet fem som argumentet og trykke på OK.

    Brug af genvejsmenuen for tabellen til at vælge transformeringen Bevar de øverste rækker for kun at beholde de fem øverste rækker.

Når du har implementeret ændringerne, skal du kontrollere indikatorerne for forespørgselsdelegering igen og se, om det giver dig en foldet indikator.

Alle indikatorer for forespørgselsdelegering er grønne og viser, at de kan foldes. Den endelige tabel indeholder de samme rækker, men i en anden rækkefølge. Nu er det tid til at gennemse forespørgselsplanen for det sidste trin, som nu er Behold de øverste rækker. Nu er der kun foldede noder. Vælg Vis detaljer under Value.NativeQuery for at kontrollere, hvilken forespørgsel der sendes til databasen.

Ny forespørgselsplan efter at have foretaget ændringerne i forespørgslen, som nu kun viser foldede noder, hvor Value.NativeQuery viser hele SQL-sætningen, der evaluerer forespørgslen.

Selvom denne artikel antyder, hvilket alternativ der skal anvendes, er det primære mål, at du lærer, hvordan du bruger forespørgselsplanen til at undersøge forespørgselsdelegering. Denne artikel giver også indblik i, hvad der sendes til din datakilde, og hvilke transformationer der udføres lokalt.

Du kan justere din kode for at se den indvirkning, den har på din forespørgsel. Når du bruger indikatorerne for forespørgselsdelegering, får du også en bedre idé om, hvilke trin der forhindrer, at forespørgslen foldes.