Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
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 praktickým príkladom 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.
Nota
Funkcia plánu dotazov pre Power Query je k dispozícii len v power query Online.
Tento článok je rozdelený do série odporúčaných krokov na interpretáciu plánu dotazu. Sú to tieto kroky:
- Kontrola indikátorov postupného posúvania dotazov.
- Vyberte krok dotazu a skontrolujte plán dotazu.
- vykonanie zmien dodotazu.
Pomocou týchto krokov vytvorte dotaz vo vlastnom prostredí Power Query Online.
Na Power Query – vybertezdroja údajov vyberte Prázdny dotaz.
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"Zmeňte
servernameadatabasepomocou správnych názvov pre vlastné prostredie.(Voliteľné) Ak sa pokúšate pripojiť k serveru a databáze pre lokálne prostredie, nezabudnite pre toto prostredie nakonfigurovať bránu.
Vyberte Ďalej.
V Editore Power Query vyberte položku Konfigurovať pripojenie a zadajte poverenia pre zdroj údajov.
Nota
Ďalšie informácie o pripojení k SQL Serveru nájdete v téme databáze SQL Servera.
Po vykonaní týchto krokov bude váš dotaz vyzerať ako na nasledujúcom obrázku.
Tento dotaz sa pripojí k tabuľke SalesOrderHeader a vyberie niekoľko stĺpcov z posledných piatich objednávok s hodnotou TotalDue vyššou ako 1000.
Nota
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 postupnom posúvaní dotazov nájdete v téme Základy postupného posúvania dotazov.
1. Kontrola indikátorov postupného posúvania dotazov
Nota
Pred prečítaním tejto časti odporúčame prečítať si článok indikátory 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ť.
V tomto príklade je jediným krokom, ktorý nie je možné postupne posúvať, Udržiavané spodné riadky , čo je jednoduché identifikovať prostredníctvom nie postupné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.
Identifikovali ste Udržiavané spodné riadky krok, ktorý je krokom záujmu, 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.
Power Query sa pokúša optimalizovať dotaz využitím lenivého vyhodnocovania a skladania dotazov, ako je uvedené v téme Základy 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čínaného od posledného kroku alebo výstupu dotazu, ktorý je znázornený úplne vľavo od diagramu. V tomto prípade je to uzol Table.LastN, ktorý predstavuje kroku Udržiavané 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 bola použitá možnosť Prispôsobiť zobrazeniu z tohto panela, aby lepšie ocenila uzly.
Nota
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 tento proces uzly alebo operátory, ktoré zostali v tomto optimalizovanom pláne dotazu, zvyčajne obsahujú dotaz zdroja údajov s názvom "zbalený". Všetky operátory, ktoré nebolo možné postupne posúvať, sa vyhodnocujú lokálne.
Identifikujte zložené uzly z iných uzlov
Uzly v tomto diagrame môžete identifikovať ako dve skupiny:
-
skladané uzly: Tento uzol môže byť uzly
Value.NativeQueryalebo "zdroj údajov", napríkladSql.Database. Tieto uzly možno identifikovať aj s označením vzdialenými pod názvom funkcie. -
Nezbalené uzly: Ďalšie operátory tabuľky, ako napríklad
Table.SelectRows,Table.SelectColumnsa ďalšie funkcie, ktoré nebolo možné postupne posúvať. Tieto uzly možno identifikovať aj s označeniami úplným vyhľadávaním a streamovania.
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 zložiť späť do zdroja údajov.
Môžete vybrať položku Zobraziť podrobnosti v dolnej časti niektorých uzlov a zobraziť rozšírené informácie. Podrobnosti o Value.NativeQuery uzle napríklad zobrazujú natívny dotaz (v SQL), ktorý sa odošle do zdroja údajov.
Tu zobrazený dotaz nemusí byť úplne rovnaký ako dotaz odoslaný do zdroja údajov, ale je to dobrá aproximácia. V tomto prípade sa dozviete, aké stĺpce sú dotazované z tabuľky Hlavička Predajnej Objednávky. Potom spôsob, akým filtruje tabuľku pomocou poľa TotalDue, aby sa zobrazili iba riadky, kde je hodnota pre dané pole väčšia ako 1 000. Uzol vedľa neho, Table.LastN, vypočíta nástroj Power Query lokálne, pretože ho nie je možné postupne posúvať.
Nota
Operátory sa nemusia presne zhodovať s funkciami použitými v skripte dotazu.
Skontrolujte nepriečinky a zvážte akcie, ktoré vám pri transformácii posunú
Teraz ste zistili, ktoré uzly nie je možné postupne posúvať a možno ich vyhodnotiť lokálne. Tento prípad má iba Table.LastN 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ť TOP a klauzuly ORDER BY v SQL. Keďže v jazyku SQL neexistuje žiadna klauzula BOTTOM, Table.LastN transformácie v doplnku PowerQuery sa nedá preložiť do jazyka SQL. Môžete odstrániť Table.LastN krok a nahradiť ho nasledujúcimi:
- Zostupný krok zoradenia podľa stĺpca ID Predajnej Objednávky v tabuľke, pretože tento stĺpec určuje, ktorá objednávka ide ako prvá a ktorá bola zadaná ako posledná.
-
Prvých päť riadkov od zoradenia tabuľky dosiahne táto transformácia rovnaký výsledok, ako keby šlo o Stále spodné riadky (
Table.LastN).
Táto alternatíva je ekvivalentná pôvodnému dotazu. Hoci sa táto alternatíva v teórii zdá byť dobrá, musíte vykonať zmeny, aby ste zistili, či tento uzol úplne zbalí späť do zdroja údajov.
3. Implementácia zmien do dotazu
Implementujte alternatívu popísanú v predchádzajúcej časti:
Zavrite dialógové okno plánu dotazov a vráťte sa do Editora Power Query.
Odstráňte kroku Udržiavané spodné riadky.
Zoraďte stĺpec IDPredajnejObjednávky v zostupnom poradí.
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.
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.
Teraz je čas skontrolovať plán dotazov posledného kroku, ktorým je teraz Zachovať horné riadky. Teraz sú k dispozícii len zložené uzly. Vyberte položku Zobraziť podrobnosti v časti Value.NativeQuery a overte, ktorý dotaz sa odosiela do databázy.
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 vykonávajú lokálne.
Kód môžete upraviť tak, aby sa zobrazil jeho vplyv na váš dotaz. Pomocou indikátorov postupného posúvania dotazov tiež lepšie viete, ktoré kroky bránia postupnému posúvaniu dotazu.