Zdieľať cez


Plán dotazov pre Power Query (Preview)

Plán dotazov pre Power Query je funkcia, ktorá umožňuje lepšie zobrazenie vyhodnocovania dotazu. Je užitočné pomôcť určiť, prečo sa konkrétny dotaz v konkrétnom kroku nemusí posúvať.

Tento článok vám ukáže praktický príklad, ktorý popisuje hlavný prípad použitia a potenciálne výhody použitia funkcie plánu dotazu na preskúmanie krokov dotazu. Príklady použité v tomto článku boli vytvorené pomocou ukážkovej databázy AdventureWorksLT pre Azure SQL Server, ktorú si môžete stiahnuť z ukážkových databáz AdventureWorks.

Poznámka

Funkcia plánu dotazov pre Power Query je k dispozícii len v power query Online.

Navrhovaný proces používania funkcie plánu dotazu v doplnku Power Query preskúmaním indikátorov postupného posúvania dotazov, následným preskúmaním plánu dotazov pre vybratý krok a nakoniec implementáciou všetkých zmien odvodených z kontroly plánu dotazov.

Tento článok bol rozdelený do série odporúčaných krokov na interpretáciu plánu dotazu. Sú to tieto kroky:

  1. Skontrolujte indikátory postupného posúvania dotazov.
  2. Vyberte krok dotazu a skontrolujte jeho plán dotazu.
  3. Vykonanie zmien do dotazu.

Pomocou týchto krokov vytvorte dotaz vo vlastnom prostredí Power Query Online.

  1. V doplnku Power Query – vyberte zdroj údajov a vyberte položku Prázdny dotaz.

  2. Nahraďte skript prázdneho dotazu nasledujúcim dotazom.

    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. Zmeňte servername a database zadajte správne názvy svojho vlastného prostredia.

  4. (Voliteľné) Ak sa pokúšate pripojiť k serveru a databáze pre lokálne prostredie, nezabudnite pre toto prostredie nakonfigurovať bránu.

  5. Vyberte Ďalej.

  6. V Editor Power Query vyberte položku Konfigurovať pripojenie a zadajte poverenia do zdroja údajov.

Poznámka

Ďalšie informácie o pripojení k SQL Serveru nájdete v téme Databáza SQL Servera.

Po vykonaní týchto krokov bude váš dotaz vyzerať ako na nasledujúcom obrázku.

Vzorový dotaz s povolenými indikátormi postupného posúvania dotazov. Tento dotaz sa pripojí k tabuľke Hlavička Predajnej Objednávky a vyberie niekoľko stĺpcov z posledných piatich objednávok s hodnotou TotalDue nad hodnotou 1 000.

Poznámka

V tomto článku sa používa zjednodušený príklad na prezentáciu tejto funkcie, ale koncepty popísané v tomto článku sa vzťahujú na všetky dotazy. Odporúčame vám, aby ste pred prečítaním plánu dotazov mali dobré vedomosti o postupnom posúvaní dotazov. Ďalšie informácie o postupných posúvaní dotazov nájdete v téme Základy postupného posúvania dotazov.

1. Kontrola indikátorov postupného posúvania dotazov

Poznámka

Pred prečítaním tejto časti odporúčame prečítať si článok o indikátoroch postupného posúvania dotazov.

Prvým krokom v tomto procese je kontrola dotazu a upriamiť pozornosť na indikátory postupného posúvania dotazov. Cieľom je skontrolovať kroky, ktoré sú označené ako nezbalené. Potom môžete zistiť, či vykonaním zmien v celkovom dotaze sa tieto transformácie môžu úplne skladať.

Indikátory postupného posúvania dotazov pre vzorový dotaz v rámci tably Použité kroky.

V tomto príklade je jediným krokom, ktorý nie je možné postupne posúvať, udržiavané spodné riadky, ktoré sa dajú jednoducho identifikovať prostredníctvom nezbaleného indikátora kroku. Tento krok je zároveň posledným krokom dotazu.

Cieľom je teraz skontrolovať tento krok a zistiť, čo sa posúva späť do zdroja údajov a čo nie je možné postupne posúvať.

2. Vyberte krok dotazu a skontrolujte jeho plán dotazu.

Krok Zachované spodné riadky ste označili za krok, ktorý je zaujímavý, pretože sa nezbalí späť do zdroja údajov. Kliknite pravým tlačidlom myši na krok a vyberte možnosť Zobraziť plán dotazu. Táto akcia zobrazí nové dialógové okno, ktoré obsahuje diagram pre plán dotazu vybratého kroku.

Dialógové okno plánu dotazu, v rámci ktorého sa zobrazí zobrazenie diagramu pre plán dotazu s uzlami prepojenými riadkami. Power Query sa snaží optimalizovať dotaz tak, že využíva lenivé vyhodnocovanie a postupné posúvanie dotazov, ako sa spomína v téme Základy postupného posúvania dotazov. Tento plán dotazov predstavuje optimalizovaný preklad dotazu jazyka M do natívneho dotazu odoslaného do zdroja údajov. Obsahuje aj všetky transformácie, ktoré vykonáva nástroj Power Query. Poradie, v ktorom sa zobrazujú uzly, zodpovedá poradiu dotazu začínajúceho od posledného kroku alebo výstupu dotazu, ktorý je zastúpený úplne vľavo od diagramu. V tomto prípade je uzol Table.LastN , ktorý predstavuje krok Zachované spodné riadky .

V dolnej časti dialógového okna sa nachádza panel s ikonami, ktoré vám pomôžu priblížiť zobrazenie plánu dotazu alebo ho od neho, a ďalšie tlačidlá, ktoré vám pomôžu toto zobrazenie spravovať. V prípade predchádzajúceho obrázka sa použila možnosť Prispôsobiť zobrazeniu z tohto panela na lepšie ocenenie uzlov.

Dialógové okno plánu dotazu s uzlami zväčšenými na lepšie zobrazenie.

Poznámka

Plán dotazov predstavuje optimalizovaný plán. Keď nástroj vyhodnocuje dotaz, snaží sa všetky operátory zbaliť do zdroja údajov. V niektorých prípadoch sa môže dokonca vykonať interná zmena poradia krokov, aby sa maximalizovalo postupné posúvanie. Vzhľadom na to uzly alebo operátory, ktoré zostali v tomto optimalizovanom pláne dotazu, zvyčajne obsahujú dotaz zdroja údajov s názvom "zbalené" a všetky operátory, ktoré nebolo možné postupne posúvať a vyhodnocujú sa lokálne.

Identifikujte zložené uzly z iných uzlov

Uzly v tomto diagrame môžete identifikovať ako dve skupiny:

  • Zložené uzly: týmto uzlom môžu byť uzly Value.NativeQuery alebo uzly "zdroj údajov", ako Sql.Databasenapríklad . Je možné ich identifikovať aj s označením vzdialeným pod názvom funkcie.
  • Neskladané uzly: Iné operátory tabuľky, ako Table.SelectRowsnapríklad , Table.SelectColumnsa ďalšie funkcie, ktoré nebolo možné postupne posúvať. Tie možno identifikovať aj pomocou označení Full scan (Úplný prehľad) a Streaming (Streamovanie).

Nasledujúci obrázok zobrazuje zložené uzly vnútri červeného obdĺžnika. Zvyšok uzlov sa nepodarilo vrátiť späť do zdroja údajov. Je potrebné skontrolovať zvyšok uzlov, pretože cieľom je pokúsiť sa dať tieto uzly znova zložiť späť do zdroja údajov.

Ovládacie prvky zobrazenia plánu dotazu v dolnej časti dialógového okna s vybratou možnosťou Prispôsobiť zobrazeniu. Ak chcete zobraziť rozšírené informácie, v dolnej časti uzlov môžete vybrať položku Zobraziť podrobnosti . Podrobnosti o Value.NativeQuery uzle napríklad zobrazujú natívny dotaz (v SQL), ktorý sa odošle do zdroja údajov.

Zobrazenie podrobností pre uzol Value.NativeQuery v pláne dotazu. Dotaz zobrazený v tomto dotaze nemusí byť úplne rovnaký ako dotaz odoslaný do zdroja údajov, ale je to dobrá aproximácia. V tomto prípade vám povie, aké stĺpce sa budú dotazovať z tabuľky SalesOrderHeader, a potom zistí, ako bude táto tabuľka filtrovať pomocou poľa TotalDue tak, aby sa načítali iba riadky, v ktorých je hodnota pre dané pole väčšia ako 1 000. Uzol vedľa neho Table.LastN sa vypočíta miestne pomocou nástroja Power Query, pretože ho nie je možné postupne posúvať.

Poznámka

Operátory sa nemusia presne zhodovať s funkciami použitými v skripte dotazu.

Skontrolujte uzly, ktoré nie sú zbalené, a zvážte akcie, ktoré vám pri transformácii posunú

Teraz ste zistili, ktoré uzly nebolo možné postupne posúvať, a budú sa vyhodnocovať lokálne. Tento prípad má Table.LastN len uzol, ale v iných scenároch môže mať oveľa viac.

Cieľom je použiť zmeny v dotaze tak, aby sa krok mohol postupne posúvať. Niektoré zmeny, ktoré môžete vykonať, môžu siahať od preskupenia krokov až po použitie alternatívnej logiky na dotaz, ktorý je explicitnejší pre zdroj údajov. Neznamená to, že všetky dotazy a všetky operácie sa dajú postupne posúvať použitím niektorých zmien. Je však vhodné prostredníctvom skúšobnej verzie a chyby určiť, či je možné dotaz postupne posúvať.

Keďže zdroj údajov je databáza SQL Servera, ak je cieľom načítať posledných päť objednávok z tabuľky, potom by bolo dobrou alternatívou využiť klauzuly TOP a ORDER BY v SQL. Keďže v SQL neexistuje žiadna klauzula BOTTOM, transformáciu Table.LastN v PowerQuery nie je možné preložiť do jazyka SQL. Krok by ste mohli odstrániť Table.LastN a nahradiť ho nasledujúcim textom:

  • Zoradiť zostupný krok podľa stĺpca ID PredajnejObjednávky v tabuľke, pretože tento stĺpec určuje, ktorá objednávka ide ako prvá a ktorá bola zadaná ako posledná.
  • Vyberte prvých päť riadkov od zoradenia tabuľky, táto transformácia dosiahne rovnaké výsledok, ako keby daná tabuľka bola v spodných riadkoch (Table.LastN).

Táto alternatíva je ekvivalentná pôvodnému dotazu. Táto alternatíva sa síce zdá byť dobrá, ale musíte vykonať zmeny, aby ste zistili, či táto alternatíva spôsobí, že tento uzol úplne zbalí späť do zdroja údajov.

3. Implementácia zmien do dotazu

Implementujte alternatívu popísanú v predchádzajúcej časti:

  1. Zavrite dialógové okno plánu dotazov a vráťte sa na Editor Power Query.

  2. Odstráňte krok Zachované spodné riadky.

  3. Zoraďte stĺpec SalesOrderID v zostupnom poradí.

    Zoradenie stĺpca SalesOrderID v zostupnom poradí pomocou ponuky automatického filtrovania.

  4. Vyberte ikonu tabuľky v ľavom hornom rohu zobrazenia ukážky údajov a vyberte možnosť na čítanie položky Ponechať najvrchnejšie riadky. V dialógovom okne zadajte číslo päť ako argument a stlačte tlačidlo OK.

    Pomocou kontextovej ponuky tabuľky vyberte transformáciu Ponechať prvé riadky, aby sa udržalo iba prvých päť riadkov.

Po implementácii zmien znova skontrolujte indikátory postupného posúvania dotazov a zistite, či vám to dáva postupne posúvaný indikátor.

Všetky indikátory postupného posúvania dotazov sú zelené a zobrazujú, že možno ich postupne posúvať. Konečná tabuľka poskytuje rovnaké riadky, ale v inom poradí. Teraz nastal čas skontrolovať plán dotazu posledného kroku, ktorým je teraz Funkcia Ponechať najvrchnejšie riadky. Teraz sú k dispozícii len zložené uzly. Výberom položky Zobraziť podrobnosti v časti Value.NativeQuery overte, ktorý dotaz sa odosiela do databázy.

Nový plán dotazu po vykonaní zmien v dotaze, ktorý teraz prezentuje iba zložené uzly, s hodnotou Value.NativeQuery zobrazujúci úplný príkaz SQL, ktorý vyhodnotí dotaz.

Tento článok navrhuje, aká alternatíva sa má použiť, hlavným cieľom je zistiť, ako používať plán dotazov na preskúmanie postupného posúvania dotazov. Tento článok tiež znázorňuje, čo sa odosiela do vášho zdroja údajov a aké transformácie sa budú vykonávať lokálne.

Kód môžete upraviť tak, aby sa zobrazil jeho vplyv na váš dotaz. Pomocou indikátorov postupného posúvania dotazov budete mať tiež lepšiu predstavu o tom, ktoré kroky bránia postupnému posúvaniu dotazu.