Odkazovanie na dotazy Power Query

Tento článok je určený pre modelárov údajových pracujúcich s aplikáciou Power BI Desktop. Pomôže vám pri definovaní dotazov Power Query, ktoré odkazujú na iné dotazy.

Ujasnite si, čo to znamená: Keď jeden dotaz odkazuje na druhý dotaz, funguje to tak, ako keby sa kroky v druhom dotaze skombinujú s krokmi z prvého dotazu a spustili sa ešte pred nimi.

Zoberme si niekoľko dotazov: Dotaz1 čerpá údaje z webovej služby a jeho načítavanie je zakázané. Dotaz2, Dotaz3 a Dotaz4 odkazujú na Dotaz1 a ich výstupy sa načítajú do dátového modelu.

Diagram showing the Query Dependencies view, displaying queries described in the previous paragraph.

Pri obnovení dátového modelu sa často predpokladá, že Power Query načíta výsledok dotazu Query1 a tento sa opätovne použije v odkazovaných dotazoch. Tento uvažovanie je nesprávne. Power Query v skutočnosti spustí Dotaz2, Dotaz3 a Dotaz4 samostatne.

Môžete si to predstaviť tak, ako keby boli kroky Dotazu1 vložené do Dotazu2. Rovnako to platí aj pre Dotaz3 a Dotaz4. Nasledujúci diagram poskytuje jasnejšiu predstavu o tom, ako sa dotazy spúšťajú.

Diagram showing a modified version of the Query Dependencies view, displaying Query 2, Query 3, and Query 4.

Dotaz1 sa spustí trikrát. Viacnásobné spúšťanie môže spôsobiť pomalé obnovovanie údajov a môže mať negatívny vplyv na zdroj údajov.

Použitím funkcie Table.Buffer v Dotaze1 sa neeliminuje dodatočné načítanie údajov. Táto funkcia načíta tabuľku do medzipamäte a tabuľku z medzipamäte možno použiť iba v rámci spustenia toho istého dotazu. Ak sa teda napríklad Dotaz1 načíta do medzipamäte pri spustení Dotazu2 , údaje z medzipamäte sa už nedajú použiť pri spustení Dotazu3 a Dotazu4 . Údaje sa do medzipamäte napaľujú ešte dvakrát. (V skutočnosti by tento výsledok mohol viesť k zhoršeniu výkonu, pretože tabuľka sa do medzipamäte načíta pri každom odkazovaní na dotaz.)

Poznámka

Architektúra ukladania do vyrovnávacej pamäte v doplnku Power Query je zložitá a nie je zameraná na tento článok. Power Query môže do vyrovnávacej pamäte ukladať údaje načítané zo zdroja údajov. Keď však spustí dotaz, môže údaje zo zdroja údajov načítať viackrát.

Odporúčania

Vo všeobecnosti sa odporúča odkazovať na dotazy, aby ste sa vyhli duplikovaniu logiky v dotazoch. Ako je však popísané v tomto článku, tento prístup k návrhu však môže prispievať k pomalému obnovovanie údajov a preťažovať zdroje údajov.

Odporúča sa namiesto toho vytvoriť tok údajov. Použitie toku údajov môže pomôcť skrátiť čas obnovenia a znížiť vplyv na zdroje údajov.

Tok údajov môžete navrhnúť na zapuzdrenie zdrojových údajov a transformácií. Keďže tok údajov je trvalým ukladacím priestorom údajov v služba Power BI, načítanie údajov je rýchle. Takže aj vtedy, ak je výsledkom odkazovania na dotazy viacero požiadaviek na tok údajov, časy obnovenia údajov možno zlepšiť.

Ak sa teda návrh Dotazu1 v príklade zmení na entitu toku údajov, Dotaz2, Dotaz3 a Dotaz4 ho môžu použiť ako zdroj údajov. Pri tomto návrhu sa entita, ktorá obsahuje Dotaz1 , vyhodnotí iba raz.

Ďalšie informácie súvisiace s týmto článkom nájdete v nasledujúcich zdrojoch: