Indikátory posouvání dotazů
Poznámka:
Než si přečtete tento článek, doporučujeme přečíst si přehled vyhodnocení dotazů a posouvání dotazů v Power Query , abyste lépe pochopili, jak skládání funguje v Power Query.
Indikátory posouvání dotazů vám pomůžou pochopit kroky, které se složí nebo nepřeloží.
Když použijete indikátory posouvání dotazů, je zřejmé, že uděláte změnu, která přeruší posouvání. Tato funkce vám pomůže rychleji vyřešit problémy, vyhnout se problémům s výkonem na prvním místě a získat lepší přehled o dotazech. Ve většině případů narazíte na kroky, které přeložíte nebo nepřeložíte. Existuje ale mnoho případů, kdy výsledek není tak zřejmý a tyto případy jsou popsány v indikátorech diagnostiky kroku (Dynamic, Opaque a Unknown).
Poznámka:
Funkce indikátorů posouvání dotazů je dostupná jenom pro Power Query Online.
Interpretace diagnostiky posouvání dotazů
Když prozkoumáte indikátor posouvání dotazů vedle kroku, je nejdůležitější pochopit, že stav diagnostiky není sekvenční. Jinými slovy, indikátor pro tento krok popisuje, jestli dotaz jako celek, až do tohoto bodu, přeloží nebo ne. Pokud máte indikátor, který ukazuje, že dotaz nepřeloží následovaný indikátorem, který ukazuje, že se přeloží, znamená to, že dotaz až do tohoto bodu přeloží.
Tato interpretace funguje i s jednoduchým dotazem na zdroj SQL. Například pomocí ukázkové databáze AdventureWorks se připojte k tabulce Production.Product a načtěte data. Načtení této ukázky prostřednictvím navigátoru Power Query poskytuje následující dotaz:
let
Source = Sql.Database("ServerName", "AdventureWorks"),
Navigation = Source{[Schema = "Production", Item = "Product"]}[Data]
in
Navigation
Pokud prozkoumáte, jak se tento kód zobrazuje v indikátorech posouvání dotazů, všimněte si, že první krok je neprůkazný. Druhý krok se ale přeloží, což znamená, že dotaz až do tohoto bodu přeloží.
V tomto příkladu se počáteční kroky nedají potvrdit tak, aby se složily (jsou neprůkazné), ale poslední krok vygenerovaný při počátečním načtení dat se přeloží. Způsob zpracování prvních kroků (zdrojových a někdy jiných navigačních kroků) závisí na konektoru. U SQL se například zpracovává jako hodnota tabulky katalogu, která se nepřeloží. Jakmile ale vyberete data pro tento konektor, přeloží se.
Naopak tato indikace může znamenat, že váš dotaz přeloží až do bodu a pak zastaví posouvání. Na rozdíl od případu, kdy máte indikátor skládání pro krok, který ukazuje, že všechno se přeloží, když máte indikátor, že se nepřeloží, neznamená to, že se všechno nepřeloží. Místo toho to znamená, že se "ne všechno" přeloží. Obecně platí, že všechno až do posledního skládacího indikátoru se přeloží, s dalšími operacemi, které probíhají po.
Při úpravě předchozího příkladu můžete dát transformaci, která se nikdy nepřeloží – Velká písmena u každého slova.
let
Source = Sql.Database("ServerName", "AdventureWorks"),
Navigation = Source{[Schema = "Production", Item = "Product"]}[Data],
#"Capitalized each word" = Table.TransformColumns(Navigation, {{"Name", each Text.Proper(_), type text}})
in
#"Capitalized each word"
V indikátorech posouvání dotazů máte stejné indikátory jako dříve, s výjimkou posledního kroku se nepřeloží. Všechno až do tohoto posledního kroku se provádí ve zdroji dat, zatímco poslední krok se provádí místně.
Indikátory diagnostiky kroků
Indikátory posouvání dotazů používají podkladový plán dotazu a vyžadují, aby bylo možné získat informace o dotazu, který ho nahlásí. V současné době plán dotazu podporuje pouze tabulky, takže některé případy (seznamy, záznamy, primitivy) se nehlásí jako skládací nebo ne. Podobně sestavy konstantních tabulek jako neprůžné.
Indikátor | Ikona | Popis |
---|---|---|
Skládací | ![]() |
Indikátor posouvání vám říká, že dotaz až do tohoto kroku je vyhodnocen zdrojem dat. |
Neposkládání | ![]() |
Indikátor neskládání vám říká, že část dotazu až do tohoto kroku se vyhodnocuje mimo zdroj dat. Můžete ho porovnat s posledním indikátorem posouvání, pokud existuje, abyste zjistili, jestli můžete změnit uspořádání dotazu tak, aby byl výkonnější. |
Může se posunout | ![]() |
Indikátory se můžou skládat méně často. Znamenají, že dotaz "může" přeložit. Označují buď, že při načítání výsledků z dotazu je při načítání výsledků dotazu určeno posouvání nebo ne, a že plán dotazu je dynamický. Tyto indikátory se pravděpodobně zobrazí pouze u připojení ODBC nebo OData. |
Neprůhledné | ![]() |
Neprůzné indikátory vám říkají, že výsledný plán dotazů je z nějakého důvodu neprůkazný. Obecně označuje, že existuje skutečná "konstantní" tabulka nebo že nástroj pro transformaci nebo spojnici nepodporuje indikátory a nástroj plánu dotazů. |
Neznámý | ![]() |
Neznámé indikátory představují nepřítomnost plánu dotazu, a to buď kvůli chybě, nebo pokusu o spuštění vyhodnocení plánu dotazu na něco jiného než v tabulce (například záznam, seznam nebo primitiv). |
Příklad analýzy
Příklad analýzy začněte připojením k tabulce Production.Product v Adventure Works (SQL). Počáteční načtení podobné počátečnímu příkladu vypadá jako na následujícím obrázku.
Přidání dalších kroků, které se přeloží, rozšíří zelenou čáru na pravé straně. K tomuto rozšíření dochází, protože tento krok se také složí.
Přidání kroku, který se nepřeloží, zobrazí jiný indikátor. Například Velká písmena každého slova nikdy nepřeloží. Indikátor se změní a ukazuje, že v tomto kroku přestal skládací. Jak už bylo zmíněno dříve, předchozí kroky se stále skládají.
Přidání dalších kroků v podřízeném směru, které závisí na velikosti písmen jednotlivých kroků , se nepřeloží.
Pokud ale odeberete sloupec, u kterého jste použili velká písmena, aby se optimalizovaný plán dotazů mohl sbalit ještě jednou, zobrazí se výsledek podobný následujícímu obrázku. Něco takového je ale neobvyklé. Tento obrázek znázorňuje, jak to není jenom pořadí kroků, ale také skutečné transformace, které platí.