Príklady postupného posúvania dotazov

Tento článok obsahuje niekoľko príkladov scenárov pre každý z troch možných výsledkov posúvania dotazov. Obsahuje aj niekoľko návrhov, ako čo najlepšie využiť mechanizmus posúvania dotazov a účinok, ktorý môže mať vo vašich dotazoch.

Scenár

Predstavte si scenár, v ktorom pomocou databázy Wide World Importers pre databázu SQL služby Azure Synapse Analytics máte za úlohu vytvoriť dotaz v doplnku Power Query, ktorý sa pripojí k tabuľke fact_Sale a načíta posledných 10 predajov iba s nasledujúcimi poľami:

  • Predajný kľúč
  • Zákaznícky kľúč
  • Kľúč dátumu faktúry
  • Popis
  • Množstvo

Note

Na demonštračné účely sa v tomto článku používa databáza uvedená v kurze načítania databázy Wide World Importers do služby Azure Synapse Analytics. Hlavný rozdiel v tomto článku je v tom, že tabuľka fact_Sale obsahuje iba údaje za rok 2000 s celkovým počtom 3 644 356 riadkov.

Aj keď sa výsledky nemusia presne zhodovať s výsledkami, ktoré získate podľa kurzu z dokumentácie služby Azure Synapse Analytics, cieľom tohto článku je ukázať základné koncepty a vplyv, ktorý môže mať posúvanie dotazov vo vašich dotazoch.

Snímka obrazovky vzorovej výstupnej tabuľky odvodená z tabuľky fact_Sale databázy Wide World Importers Azure Synapse Analytics.

V tomto článku sú uvedené tri spôsoby, ako dosiahnuť rovnaký výstup s rôznymi úrovňami posúvania dotazov:

  • Žiadne skladanie dotazov
  • Čiastočné skladanie dotazov
  • Úplné posúvanie dotazov

Žiadny príklad posúvania dotazov

Important

Dotazy, ktoré sa spoliehajú výlučne na neštruktúrované zdroje údajov alebo ktoré nemajú výpočtový nástroj, ako sú súbory CSV alebo Excel, nemajú možnosti posúvania dotazov. To znamená, že Power Query vyhodnotí všetky požadované transformácie údajov pomocou nástroja Power Query.

Po pripojení k databáze a prechode na tabuľku fact_Sale vyberiete transformáciu Zachovať dolné riadky , ktorá sa nachádza v skupine Redukovať riadky na karte Domov .

Snímka obrazovky s transformáciou Zachovať dolné riadky, ktorá sa nachádza v skupine Redukovať riadky na karte Domov.

Po výbere tejto transformácie sa zobrazí nové dialógové okno. V tomto novom dialógovom okne môžete zadať počet riadkov, ktoré chcete zachovať. V takom prípade zadajte hodnotu 10 a potom vyberte tlačidlo OK.

Snímka obrazovky s tablou Zachovať dolné riadky, kde zadáte hodnotu 10 v dialógovom okne Zachovať dolné riadky.

Prepitné

V tomto prípade vykonanie tejto operácie prinesie výsledok posledných 10 predajov. Vo väčšine scenárov odporúčame poskytnúť explicitnejšiu logiku, ktorá definuje, ktoré riadky sa považujú za posledné, použitím operácie zoradenia v tabuľke.

Ďalej vyberte transformáciu Vybrať stĺpce, ktorá sa nachádza v skupine Spravovať stĺpce na karte Domov . Potom môžete vybrať stĺpce, ktoré chcete z tabuľky zachovať, a zvyšok odstrániť.

Snímka obrazovky s pásom s nástrojmi Domov, kde vyberiete transformáciu Vybrať stĺpce pre príklad postupného postupu bez dotazu.

Nakoniec v dialógovom okne Výber stĺpcov vyberte stĺpce Sale KeyCustomer Key , Invoice Date Key, Description, Quantitya stĺpce a potom vyberte OK.

Snímka obrazovky s tablou Vybrať stĺpce, kde vyberiete stĺpce Kľúč predaja, Kľúč zákazníka, Kľúč dátumu faktúry, Popis a Množstvo.

Nasledujúca ukážka kódu je úplný skript M pre dotaz, ktorý ste vytvorili:

let
    Source = Sql.Database(ServerName, DatabaseName),
    Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
    #"Kept bottom rows" = Table.LastN(Navigation, 10),
    #"Choose columns" = Table.SelectColumns(
        #"Kept bottom rows",
        {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}
    )
in
    #"Choose columns""

Žiadne posúvanie dotazov: Vysvetlenie vyhodnotenia dotazu

V časti Použité kroky v editore Power Query si všimnite, že indikátory posúvania dotazov pre ponechané dolné riadky a Vybrať stĺpce sú označené ako kroky, ktoré sa vyhodnocujú mimo zdroja údajov alebo inými slovami nástrojom Power Query.

Tabla Použité kroky pre dotaz s indikátormi posúvania dotazov, ktoré zobrazujú kroky Ponechané dolné riadky a Odstránené ostatné stĺpce.

Môžete kliknúť pravým tlačidlom myši na posledný krok dotazu s názvom Vybrať stĺpce a vybrať možnosť Zobraziť plán dotazu. Cieľom plánu dotazov je poskytnúť vám podrobný prehľad o tom, ako sa dotaz spúšťa. Ďalšie informácie o tejto funkcii nájdete v téme Plán dotazov.

Snímka obrazovky s plánom dotazu pre vytvorený dotaz s viacerými uzlami, z ktorých dva sú v obdĺžniku, ktorý predstavuje uzly vyhodnotené nástrojom Power Query.

Každé pole na predchádzajúcom obrázku sa nazýva uzol. Uzol predstavuje rozdelenie operácií na splnenie tohto dotazu. Uzly, ktoré predstavujú zdroje údajov, ako napríklad SQL Server v predchádzajúcom príklade a uzol Value.NativeQuery , predstavujú, ktorá časť dotazu sa presmeruje na zdroj údajov. Zvyšok uzlov, v tomto prípade Table.LastN zvýraznený Table.SelectColumns v obdĺžniku na predchádzajúcom obrázku, vyhodnotí nástroj Power Query. Tieto dva uzly predstavujú dve transformácie, ktoré ste pridali, Ponechané dolné riadky a Vybrať stĺpce. Zvyšok uzlov predstavuje operácie, ktoré sa uskutočňujú na úrovni zdroja údajov.

Ak chcete zobraziť presnú požiadavku, ktorá sa odošle do zdroja údajov, vyberte položku Zobraziť podrobnosti v uzle Value.NativeQuery .

Snímka obrazovky s príkazom SQL nachádzajúcim sa vo vnútri

Táto žiadosť o zdroj údajov je v rodnom jazyku zdroja údajov. V tomto prípade je týmto jazykom SQL a tento príkaz predstavuje požiadavku na všetky riadky a polia z tabuľky fact_Sale .

Konzultácia s touto žiadosťou o zdroj údajov vám môže pomôcť lepšie pochopiť príbeh, ktorý sa plán dotazu snaží sprostredkovať:

  • Sql.Database: Tento uzol predstavuje prístup k zdroju údajov. Pripája sa k databáze a odosiela požiadavky na metadáta, aby pochopil jej možnosti.
  • Value.NativeQuery: Predstavuje požiadavku vygenerovanú doplnkom Power Query na splnenie dotazu. Power Query odošle požiadavky na údaje v natívnom príkaze SQL do zdroja údajov. V tomto prípade to predstavuje všetky záznamy a polia (stĺpce) z tabuľky fact_Sale . Pre tento scenár je tento prípad nežiaduci, pretože tabuľka obsahuje milióny riadkov a záujem je len v posledných 10.
  • Table.LastN: Keď Power Query prijme všetky záznamy z tabuľky fact_Sale , použije nástroj Power Query na filtrovanie tabuľky a zachová iba posledných 10 riadkov.
  • Table.SelectColumns: Power Query použije výstup uzla Table.LastN a použije novú transformáciu s názvom Table.SelectColumns, ktorá vyberie konkrétne stĺpce, ktoré chcete z tabuľky zachovať.

Na vyhodnotenie musel tento dotaz stiahnuť všetky riadky a polia z tabuľky fact_Sale . Spracovanie tohto dotazu trvalo v priemere 6 minút a 1 sekundu v štandardnej inštancii tokov údajov služby Power BI (ktorá zodpovedá vyhodnoteniu a načítaniu údajov do tokov údajov).

Príklad čiastočného posúvania dotazov

Po pripojení k databáze a prechode na tabuľku fact_Sale začnete výberom stĺpcov, ktoré chcete z tabuľky zachovať. Vyberte transformáciu Vybrať stĺpce, ktorá sa nachádza v skupine Spravovať stĺpce na karte Domov . Táto transformácia vám pomôže explicitne vybrať stĺpce, ktoré chcete z tabuľky zachovať, a odstrániť zvyšok.

Snímka obrazovky s pásom s nástrojmi Domov, na ktorej vyberiete transformáciu Vybrať stĺpce pre príklad čiastočného posúvania dotazov.

V dialógovom okne Výber stĺpcov vyberte Sale Key, Customer Key, Invoice Date Key, a DescriptionQuantity stĺpce a potom vyberte OK.

Snímka obrazovky s tablou Vybrať stĺpce, na ktorej vyberiete stĺpce Kľúč predaja, Kľúč zákazníka, Kľúč dátumu faktúry, Popis a Množstvo pre príklad čiastočného posúvania dotazov.

Teraz vytvoríte logiku, ktorá zoradí tabuľku tak, aby mal posledný predaj v dolnej časti tabuľky. Vyberte Sale Key stĺpec, ktorý je primárnym kľúčom a prírastkovou postupnosťou alebo indexom tabuľky. Zoraďte tabuľku iba pomocou tohto poľa vo vzostupnom poradí z kontextovej ponuky stĺpca.

Snímka obrazovky kontextovej ponuky, v ktorej zoradíte pole Kľúč predaja tabuľky vo vzostupnom poradí.

Ďalej vyberte kontextovú ponuku tabuľky a vyberte transformáciu Zachovať spodné riadky .

Snímka obrazovky kontextovej ponuky tabuľky, kde vyberiete možnosť Zachovať spodné riadky.

Do poľa Zachovať dolné riadky zadajte hodnotu 10 a potom vyberte tlačidlo OK.

Snímka obrazovky dialógového okna Zachovať spodné riadky s hodnotou 10 zadanou ako vstupnou hodnotou, aby sa zachovalo iba spodných 10 riadkov tabuľky.

Nasledujúca ukážka kódu je úplný skript M pre dotaz, ktorý ste vytvorili:

let
    Source = Sql.Database(ServerName, DatabaseName),
    Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
    #"Choose columns" = Table.SelectColumns(
        Navigation, 
        {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}
    ),
    #"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Ascending}}),
    #"Kept bottom rows" = Table.LastN(#"Sorted rows", 10)
in
    #"Kept bottom rows"

Príklad čiastočného posúvania dotazov: Vysvetlenie vyhodnotenia dotazu

Keď skontrolujete tablu použitých krokov, všimnete si, že indikátory posúvania dotazov zobrazujú, že posledná transformácia, ktorú ste pridali, Kept bottom rows, je označená ako krok, ktorý sa vyhodnocuje mimo zdroja údajov alebo, inými slovami, nástrojom Power Query.

Snímka obrazovky s tablou Použité kroky pre dotaz s indikátormi posúvania dotazov, ktoré zobrazujú, že dolné riadky Ponechané sú označené ako krok, ktorý sa vyhodnocuje mimo zdroja údajov.

Môžete kliknúť pravým tlačidlom myši na posledný krok dotazu, ktorý Kept bottom rowssa nazýva , a vybrať možnosť Plán dotazu , aby ste lepšie pochopili, ako sa dotaz môže vyhodnotiť.

Snímka obrazovky s plánom dotazu zobrazujúca viaceré uzly, kde uzol Table.LastN zobrazený vo vnútri obdĺžnika je uzlom vyhodnoteným nástrojom Power Query a nie zdrojom údajov.

Každé pole na predchádzajúcom obrázku sa nazýva uzol. Uzol predstavuje každý proces, ktorý sa musí uskutočniť (zľava doprava), aby sa dotaz vyhodnotil. Niektoré z týchto uzlov je možné vyhodnotiť v zdroji údajov, zatiaľ čo iné, napríklad uzol pre Table.LastN, reprezentovaný krokom Ponechané dolné riadky , sa vyhodnocujú pomocou nástroja Power Query.

Ak chcete zobraziť presnú požiadavku, ktorá sa odošle do zdroja údajov, vyberte položku Zobraziť podrobnosti v uzle Value.NativeQuery .

Snímka obrazovky s plánom dotazu, kde môžete vybrať položku Zobraziť podrobnosti v časti Value.NativeQuery a zobraziť presnú požiadavku.

Táto žiadosť je v rodnom jazyku zdroja údajov. V tomto prípade je týmto jazykom SQL a tento príkaz predstavuje požiadavku pre všetky riadky, pričom iba požadované polia z tabuľky fact_Sale sú zoradené podľa poľa Sale Key .

Konzultácia s touto žiadosťou o zdroj údajov vám môže pomôcť lepšie pochopiť príbeh, ktorý sa celý plán dotazu snaží sprostredkovať. Poradie uzlov je postupný proces, ktorý začína vyžiadaním údajov zo zdroja údajov:

  • Sql.Database: Pripája sa k databáze a odosiela požiadavky na metaúdaje, aby pochopil jej možnosti.
  • Value.NativeQuery: Predstavuje požiadavku vygenerovanú doplnkom Power Query na splnenie dotazu. Power Query odošle požiadavky na údaje v natívnom príkaze SQL do zdroja údajov. V tomto prípade to predstavuje všetky záznamy, pričom iba požadované polia z tabuľky fact_Sale v databáze sú zoradené vzostupne podľa poľa Sales Key .
  • Table.LastN: Keď Power Query prijme všetky záznamy z tabuľky fact_Sale , použije nástroj Power Query na filtrovanie tabuľky a zachová iba posledných 10 riadkov.

Pre jeho vyhodnotenie musel tento dotaz stiahnuť všetky riadky a iba požadované polia z tabuľky fact_Sale . Spracovanie v štandardnej inštancii tokov údajov služby Power BI trvalo v priemere 3 minúty a 4 sekundy (ktorá zodpovedá vyhodnoteniu a načítaniu údajov do tokov údajov).

Príklad úplného postupného posúvania dotazov

Po pripojení k databáze a prechode na tabuľku fact_Sale začnite výberom stĺpcov, ktoré chcete z tabuľky zachovať. Vyberte transformáciu Vybrať stĺpce, ktorá sa nachádza v skupine Spravovať stĺpce na karte Domov . Táto transformácia vám pomôže explicitne vybrať stĺpce, ktoré chcete z tabuľky zachovať, a odstrániť zvyšok.

Snímka obrazovky s transformáciou Vybrať stĺpce na použitie v úplnom príklade posúvania dotazov.

V časti Vybrať stĺpce vyberte stĺpce Sale Key, Customer Key, Invoice Date Key, Descriptiona stĺpce Quantity a potom vyberte tlačidlo OK.

Snímka obrazovky zobrazujúca stĺpce

Teraz vytvoríte logiku, ktorá zoradí tabuľku tak, aby bol posledný predaj v hornej časti tabuľky. Vyberte Sale Key stĺpec, ktorý je primárnym kľúčom a prírastkovou postupnosťou alebo indexom tabuľky. Tabuľku zoradíte iba pomocou tohto poľa v zostupnom poradí z kontextovej ponuky stĺpca.

Snímka obrazovky kontextového menu poľa

Ďalej vyberte kontextovú ponuku tabuľky a vyberte transformáciu Zachovať horné riadky .

Možnosť ponechať horné riadky v kontextovej ponuke tabuľky.

Do poľa Zachovať horné riadky zadajte hodnotu 10 a potom vyberte tlačidlo OK.

Snímka obrazovky s dialógovým oknom Zachovať horné riadky s hodnotou 10 zadanou ako vstupnou hodnotou, aby sa zachovalo iba prvých 10 riadkov tabuľky.

Nasledujúca ukážka kódu je úplný skript M pre dotaz, ktorý ste vytvorili:

let
    Source = Sql.Database(ServerName, DatabaseName),
    Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
    #"Choose columns" = Table.SelectColumns(
        Navigation, 
        {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}
    ),
    #"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Descending}}),
    #"Kept top rows" = Table.FirstN(#"Sorted rows", 10)
in
    #"Kept top rows"

Príklad úplného posúvania dotazov: Vysvetlenie vyhodnotenia dotazu

Pri kontrole tably použitých krokov si všimnite, že indikátory posúvania dotazov zobrazujú, že transformácie, ktoré ste pridali, Vybrať stĺpce, Zoradené riadky a Ponechať horné riadky, sú označené ako kroky, ktoré sa vyhodnocujú v zdroji údajov.

Všetky kroky dotazu majú ikonu, ktorá znázorňuje, že ich možno zložiť späť do zdroja údajov.

Môžete kliknúť pravým tlačidlom myši na posledný krok dotazu, ktorý sa nazýva Ponechané horné riadky, a vybrať možnosť s názvom Plán dotazu.

Snímka obrazovky s plánom dotazu zobrazujúcim obsah Value.NativeQuery.

Táto žiadosť je v rodnom jazyku zdroja údajov. V tomto prípade je týmto jazykom SQL a tento príkaz predstavuje požiadavku na všetky riadky a polia z tabuľky fact_Sale .

Konzultácia tohto dotazu zdroja údajov vám môže pomôcť lepšie pochopiť príbeh, ktorý sa celý plán dotazu snaží vyjadriť:

  • Sql.Database: Pripája sa k databáze a odosiela požiadavky na metaúdaje, aby pochopil jej možnosti.
  • Value.NativeQuery: Predstavuje požiadavku vygenerovanú doplnkom Power Query na splnenie dotazu. Power Query odošle požiadavky na údaje v natívnom príkaze SQL do zdroja údajov. V tomto prípade to predstavuje požiadavku len na prvých 10 záznamov tabuľky fact_Sale , pričom po zoradení v zostupnom poradí pomocou poľa Sale Key sú iba povinné polia.

Note

Aj keď v jazyku T-SQL neexistuje klauzula, ktorú by bolo možné použiť na SELECT spodných riadkov tabuľky, existuje klauzula TOP, ktorá načíta horné riadky tabuľky.

Na účely vyhodnotenia tento dotaz stiahne iba 10 riadkov s iba poľami, ktoré ste požadovali z tabuľky fact_Sale . Spracovanie tohto dotazu v štandardnej inštancii tokov údajov služby Power BI trvalo v priemere 31 sekúnd (ktorá zodpovedá vyhodnoteniu a načítaniu údajov do tokov údajov).

Porovnanie výkonu

Ak chcete lepšie pochopiť účinok, ktorý má posúvanie dotazov v týchto dotazoch, môžete obnoviť dotazy, zaznamenať čas potrebný na úplné obnovenie každého dotazu a porovnať ich. Pre jednoduchosť tento článok poskytuje priemerné časy obnovenia zachytené pomocou mechaniky obnovenia tokov údajov služby Power BI pri pripájaní k vyhradenému prostrediu Azure Synapse Analytics s DW2000c ako úrovňou služby.

Čas obnovenia pre každý dotaz bol nasledovný:

Príklad Označenie Čas v sekundách
Žiadne skladanie dotazov Žiadne 361
Čiastočné skladanie dotazov Partial 184
Úplné posúvanie dotazov Úplný 31

Graf, ktorý porovnáva čas obnovenia dotazu bez posúvania s 361 sekundami, čiastočného posúvania dotazu so 184 sekundami a úplne zloženého dotazu s 31 sekundami.

Často sa stáva, že dotaz, ktorý sa úplne zloží späť do zdroja údajov, prekoná podobné dotazy, ktoré sa úplne nevrátia späť do zdroja údajov. Dôvodov, prečo je to tak, môže byť veľa. Tieto dôvody siahajú od zložitosti transformácií, ktoré dotaz vykonáva, až po optimalizácie dotazov implementované v zdroji údajov, ako sú indexy a vyhradené výpočty a sieťové prostriedky. Napriek tomu existujú dva špecifické kľúčové procesy, ktoré sa posúvanie dotazov pokúša použiť, aby sa minimalizoval účinok, ktorý majú oba tieto procesy s Power Query:

  • Údaje v prenose
  • Transformácie vykonané nástrojom Power Query

V nasledujúcich častiach sa vysvetľuje účinok, ktorý majú tieto dva procesy v už spomínaných dotazoch.

Údaje v prenose

Keď sa dotaz vykoná, pokúsi sa načítať údaje zo zdroja údajov ako jeden z prvých krokov. Aké údaje sa načítajú zo zdroja údajov, je definované mechanizmom posúvania dotazov. Tento mechanizmus identifikuje kroky z dotazu, ktoré je možné presunúť do zdroja údajov.

V nasledujúcej tabuľke je uvedený počet riadkov požadovaných z tabuľky fact_Sale databázy. Tabuľka obsahuje aj stručný popis príkazu SQL odoslaného na vyžiadanie takýchto údajov zo zdroja údajov.

Príklad Označenie Požadované riadky Popis
Žiadne skladanie dotazov Žiadne 3644356 Požiadavka na všetky polia a všetky záznamy z tabuľky fact_Sale
Čiastočné skladanie dotazov Partial 3644356 Žiadosť o všetky záznamy, ale iba povinné polia z tabuľky fact_Sale po jej zoradení podľa poľa Sale Key
Úplné posúvanie dotazov Úplný 10 Žiadosť len o povinné polia a TOP 10 záznamov tabuľky fact_Sale po zoradení v zostupnom poradí podľa poľa Sale Key

Graf s počtom riadkov zhromaždených z databázy bez skladania dotazov, čiastočného skladania dotazov a úplného skladania dotazov.

Keď požadujete údaje zo zdroja údajov, zdroj údajov musí vypočítať výsledky žiadosti a potom odoslať údaje žiadateľovi. Aj keď výpočtové prostriedky už boli spomenuté, sieťové prostriedky na presun údajov zo zdroja údajov do Power Query a potom na to, aby Power Query dokázal efektívne prijímať údaje a pripraviť ich na transformácie, ktoré sa uskutočňujú lokálne, môže chvíľu trvať v závislosti od veľkosti údajov.

V uvedených príkladoch musel Power Query požiadať o viac ako 3,6 milióna riadkov zo zdroja údajov pre príklady posúvania bez dotazov a čiastočného posúvania dotazov. V úplnom príklade posúvania dotazov požadoval iba 10 riadkov. V prípade požadovaných polí si príklad bez posúvania dotazov vyžiadal všetky dostupné polia z tabuľky. Príklady čiastočného posúvania dotazov aj úplného posúvania dotazov odoslali žiadosť iba presne pre tie polia, ktoré potrebovali.

Výstraha

Odporúčame implementovať riešenia prírastkového obnovenia, ktoré používajú postupné posúvanie dotazov pre dotazy alebo tabuľky s veľkým množstvom údajov. Rôzne integrácie produktov Power Query implementujú časové limity na ukončenie dlhotrvajúcich dotazov. Niektoré zdroje údajov tiež implementujú časové limity na dlhotrvajúce relácie a snažia sa vykonávať drahé dotazy na svojich serveroch. Ďalšie informácie: Použitie prírastkového obnovenia s tokmi údajov a prírastkovým obnovením pre sémantické modely

Transformácie vykonané nástrojom Power Query

V tomto článku sa dozviete, ako môžete použiť plán dotazu na lepšie pochopenie toho, ako sa dotaz môže vyhodnotiť. V pláne dotazu môžete vidieť presné uzly operácií transformácie vykonaných nástrojom Power Query.

V nasledujúcej tabuľke sú uvedené uzly z plánov dotazov predchádzajúcich dotazov, ktoré by boli vyhodnotené nástrojom Power Query.

Príklad Označenie Uzly transformácie nástroja Power Query
Žiadne skladanie dotazov Žiadne Table.LastN Table.SelectColumns
Čiastočné skladanie dotazov Partial Table.LastN
Úplné posúvanie dotazov Úplný

Graf s celkovým počtom transformácií spustených nástrojom Power Query bez posúvania dotazov, čiastočného skladania dotazov a úplného posúvania dotazov.

V príkladoch uvedených v tomto článku úplný príklad posúvania dotazov nevyžaduje, aby sa vo vnútri nástroja Power Query uskutočnili žiadne transformácie, pretože požadovaná výstupná tabuľka pochádza priamo zo zdroja údajov. Naproti tomu ďalšie dva dotazy vyžadovali určitý počet, aby sa uskutočnil v nástroji Power Query. Vzhľadom na množstvo údajov, ktoré je potrebné spracovať týmito dvoma dotazmi, proces pre tieto príklady trvá dlhšie ako úplný príklad posúvania dotazov.

Transformácie je možné zoskupiť do nasledujúcich kategórií:

Typ operátora Popis
Odľahlý Operátory, ktoré sú uzlami zdroja údajov. Vyhodnocovanie týchto operátorov sa uskutočňuje mimo Power Query.
Streaming Operátori sú priechodní operátori. Napríklad Table.SelectRows pomocou jednoduchého filtra je možné zvyčajne filtrovať výsledky pri prechode cez operátor a pred presunutím údajov nie je potrebné zhromažďovať všetky riadky. Table.SelectColumns Table.ReorderColumns a sú ďalšími príkladmi tohto druhu operátorov.
Úplné skenovanie Operátori, ktorí potrebujú zhromaždiť všetky riadky predtým, ako sa údaje môžu presunúť k ďalšiemu operátorovi v reťazci. Napríklad na zoradenie údajov musí Power Query zhromaždiť všetky údaje. Ďalšie príklady operátorov úplného skenovania sú Table.Group, Table.NestedJoin, a Table.Pivot.

Prepitné

Aj keď nie každá transformácia je z hľadiska výkonu rovnaká, vo väčšine prípadov je zvyčajne lepšie mať menej transformácií.

Úvahy a návrhy

  • Pri vytváraní nového dotazu postupujte podľa najvhodnejších postupov, ako je uvedené v téme Najvhodnejšie postupy v Power Query.
  • Pomocou indikátorov posúvania dotazov skontrolujte, ktoré kroky bránia zloženiu dotazu. V prípade potreby ich usporiadajte, aby ste zvýšili skladanie.
  • Pomocou plánu dotazov určte, ktoré transformácie sa uskutočňujú v nástroji Power Query pre konkrétny krok. Zvážte úpravu existujúceho dotazu zmenou usporiadania krokov. Potom znova skontrolujte plán dotazu posledného kroku dotazu a zistite, či plán dotazu vyzerá lepšie ako predchádzajúci. Napríklad nový plán dotazov má menej uzlov ako predchádzajúci a väčšina uzlov sú uzly "Streaming" a nie "úplná kontrola". V prípade zdrojov údajov, ktoré podporujú skladanie, všetky uzly v pláne dotazu iné ako Value.NativeQuery uzly prístupu k zdroju údajov predstavujú transformácie, ktoré sa neskladali.
  • Ak je k dispozícii, môžete použiť možnosť Zobraziť natívny dotaz (alebo Zobraziť dotaz zdroja údajov), aby ste sa uistili, že dotaz bude možné zložiť späť do zdroja údajov. Ak je táto možnosť pre váš krok zakázaná a používate zdroj, ktorý ju bežne povoľuje, vytvorili ste krok, ktorý zastaví posúvanie dotazov. Ak používate zdroj, ktorý túto možnosť nepodporuje, môžete sa spoľahnúť na indikátory posúvania dotazov a plán dotazov.
  • Pomocou nástrojov na diagnostiku dotazov môžete lepšie pochopiť požiadavky odosielané do zdroja údajov, keď sú pre konektor k dispozícii možnosti posúvania dotazov.
  • Keď skombinujete údaje pochádzajúce z použitia viacerých konektorov, Power Query sa pokúsi presunúť čo najviac práce do oboch zdrojov údajov a zároveň dodržať úrovne ochrany osobných údajov definované pre každý zdroj údajov.
  • Prečítajte si článok o úrovniach ochrany osobných údajov , aby ste ochránili svoje dotazy pred spustením pred chybou brány firewall na ochranu osobných údajov.
  • Použite ďalšie nástroje na kontrolu postupného posúvania dotazov z pohľadu požiadavky prijatej zdrojom údajov. Na základe príkladu v tomto článku môžete použiť Microsoft SQL Server Profiler na kontrolu požiadaviek odoslaných Power Query a prijatých Microsoft SQL Serverom.
  • Ak pridáte nový krok do úplne zloženého dotazu a nový krok sa tiež zloží, Power Query môže odoslať novú požiadavku do zdroja údajov namiesto použitia verzie predchádzajúceho výsledku vo vyrovnávacej pamäti. V praxi môže tento proces viesť k zdanlivo jednoduchým operáciám s malým množstvom údajov, ktorých obnovenie v ukážke trvá dlhšie, ako sa očakávalo. Toto dlhšie obnovenie je spôsobené tým, že Power Query opätovne dotazuje zdroj údajov namiesto práce s lokálnou kópiou údajov.