Postupné posúvanie dotazov v natívnych dotazoch

V Power Query môžete definovať natívny dotaz a spustiť ho na vašom dátovom zdroji. Článok Import dát z databázy pomocou natívneho databázového dotazu vysvetľuje, ako tento proces vykonať s viacerými zdrojmi dát. Ale použitím procesu opísaného v tom článku váš dotaz nevyužíva žiadne skladanie dotazov z nasledujúcich krokov dotazu.

Tento článok predstavuje alternatívnu metódu, ako vytvárať natívne dotazy voči vášmu zdrojovému zdroju pomocou funkcie Value.NativeQuery a udržiavať mechanizmus skladania dotazov aktívny pre ďalšie kroky vášho dotazu.

Nota

Odporúčame vám prečítať si dokumentáciu o query folding a indikátoroch query foldingu , aby ste lepšie pochopili koncepty použité v tomto článku.

Podporované dátové konektory

Metóda opísaná v nasledujúcich sekciách sa vzťahuje na nasledujúce dátové konektory:

Pripojiť sa k cieľu z dátového zdroja

Nota

Na prezentáciu tohto procesu tento článok používa SQL Server konektor a ukážkovú databázu AdventureWorks2019. Skúsenosti sa môžu líšiť od konektora ku konektoru, ale tento článok ukazuje základy, ako umožniť schopnosť query folding oproti natívnym dotazom pre podporované konektory.

Pri pripájaní na zdroj dát je dôležité, aby ste sa pripojili k uzlu alebo úrovni, kde chcete vykonať natívny dotaz. Pre príklad v tomto článku je tento uzol na úrovni databázy vo vnútri servera.

Snímka obrazovky dialógového okna nastavení pripojenia pre pripojenie k databáze AdventureWorks2019 na lokálnej inštancii SQL Serveru.

Po definovaní nastavení pripojenia a zadáte prihlasovacie údaje pre vaše pripojenie sa otvorí navigačné okno pre váš dátový zdroj. Navigačné okno obsahuje všetky dostupné objekty, ku ktorým sa môžete pripojiť.

Z tohto zoznamu musíte vybrať objekt, v ktorom sa spustí natívny dotaz (známy aj ako cieľ). V tomto príklade je tým objektom úroveň databázy.

V navigačnom okne Power Query vyberte a podržte (alebo kliknite pravým tlačidlom) na databázový uzol v navigačnom okne a vyberte možnosť Transformovať dáta . Výber tejto možnosti vytvorí nový dotaz na celkový pohľad vašej databázy, ktorý je cieľom, ktorý potrebujete na spustenie natívneho dotazu.

Snímka obrazovky výberu dát, kde používateľ klikol pravým tlačidlom na uzol databázy v navigátore, s dôrazom na Transform Data.

Keď váš dotaz skončí v editore Power Query, v paneli Aplikované kroky by sa mal zobraziť iba krok Zdrojový kód . Tento krok obsahuje tabuľku so všetkými dostupnými objektmi vo vašej databáze, podobne ako boli zobrazené v okne Navigátora.

Snímka obrazovky dotazu len so zdrojovým krokom.

Použite funkciu Value.NativeQuery

Cieľom tohto procesu je vykonať nasledujúci SQL kód a aplikovať ďalšie transformácie pomocou Power Query, ktoré je možné vrátiť späť do zdroja.

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

Prvým krokom bolo definovať správny cieľ, ktorým je v tomto prípade databáza, v ktorej sa spúšťa SQL kód. Keď má krok správny cieľ, môžete tento krok vybrať – v tomto prípade Zdroj v aplikovaných krokoch – a potom zvoliť tlačidlo fx v lište vzorcov, aby ste pridali vlastný krok. V tomto príklade nahradíme Source vzorec nasledujúcim vzorcom:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

Najdôležitejšou súčasťou tohto vzorca je použitie voliteľného záznamu pre štvrtý parameter funkcie, ktorá má pole záznamu EnableFolding nastavené na true.

Snímka obrazovky nového vlastného krokového vzorca s použitím funkcie Value.NativeQuery a explicitného SQL dotazu.

Nota

Viac o funkcii Value.NativeQuery si môžete prečítať v oficiálnom dokumentačnom článku.

Po zadaní vzorca sa zobrazí varovanie, ktoré vyžaduje, aby ste povolili natívne dotazy pre váš konkrétny krok. Vyberte pokračovať, aby sa tento krok vyhodnotil.

Tento SQL príkaz dáva tabuľku len s tromi riadkami a dvoma stĺpcami.

Snímka obrazovky s výsledkami natívneho dotazu vyhodnotenými v porovnaní s cieľovou databázou.

Skladanie testovacích dotazov

Na testovanie query folding vášho dotazu môžete skúsiť aplikovať filter na ktorýkoľvek stĺpec a zistiť, či indikátor query folding v sekcii aplikovaných krokov ukazuje krok ako zložený. V tomto prípade môžete stĺpec DepartmentID filtrovať tak, aby hodnoty neboli rovné dvom.

Screenshot ukazuje, ako filtrovať stĺpec DepartmentID tak, aby obsahoval len hodnoty, ktoré nie sú rovné dvom.

Po pridaní tohto filtra môžete skontrolovať, či indikátory query folding stále ukazujú, že query folding prebieha v tomto novom kroku.

Filter step je zobrazený ako zložený späť k dátovému zdroju v sekcii aplikovaných krokov.

Na ďalšie overenie, aký dotaz sa posiela do dátového zdroja, môžete vybrať a podržať (alebo kliknúť pravým tlačidlom) na krok Filtrované riadky a zvoliť možnosť Zobraziť plán dotazu , aby ste skontrolovali plán dotazu pre daný krok.

V zobrazení plánu dotazu môžete vidieť uzol s názvom Value.NativeQuery, ktorý má hypertextový odkaz View Details . Môžete zvoliť tento hypertextový odkaz, aby ste si pozreli presný dotaz, ktorý sa posiela do databázy SQL Server.

Natívny dotaz je obalený okolo ďalšieho príkazu SELECT, čím sa vytvorí poddotaz pôvodného dotazu. Power Query sa snaží vytvoriť čo najoptimálnejší dotaz vzhľadom na použité transformácie a natívny dotaz.

Snímka obrazovky plánu dotazu pre krok Filtrované riadky.

Prepitné

V situáciách, kde sa objavujú chyby, pretože query folding nebol možný, odporúčame skúsiť overiť svoje kroky ako poddotaz pôvodného natívneho dotazu, aby ste zistili, či neexistujú nejaké konflikty v syntaxi alebo kontexte.