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ůch 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 se dotaz nepřeloží, a za ním indikátor, 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ží.

Source and Navigation steps in Folding Indicator pane.

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 to může znamenat, že váš dotaz přeloží až do bodu a pak přestane skládá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še až do posledního indikátoru skládání se přeloží, s dalšími operacemi, ke kterým dochází po.

Když upravíte příklad z výše uvedené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 výše, s výjimkou posledního kroku se nepřeloží. Vše až do tohoto posledního kroku se provede ve zdroji dat, zatímco poslední krok se provede místně.

Source, Navigation, and Capitalize Each Word steps in Folding Indicator pane.

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) nebudou oznamovat jako skládání nebo ne. Podobně sestavy konstantních tabulek jako neprůžné.

Indikátor Ikona Popis
Skládací Folding indicator for 'will fold'. Indikátor posouvání vám říká, že dotaz až do tohoto kroku bude vyhodnocen zdrojem dat.
Neposkládání Folding indicator for 'not folding'. Indikátor nepřeskládání říká, že část dotazu až do tohoto kroku se vyhodnotí 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 Folding indicator for 'might fold'. Indikátory se můžou skládat méně často. Znamenají, že dotaz "může" přeložit. Indikují, že při načítání výsledků z dotazu se bude při načítání výsledků dotazu určit 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é Folding indicator for 'opaque, inconclusive folding'. 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ý Folding indicator for 'no query plan'. 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é výše uvedenému příkladu vypadá jako na následujícím obrázku.

Initial step indicators for loading the Product table.

Přidání dalších kroků, které přeloží, rozšíří tuto zelenou čáru na pravé straně. K tomuto rozšíření dochází, protože tento krok se také složí.

Adding a remove column step to the previous query, extending the green folding indicator line.

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 se zastavilo posouvání. Jak už bylo zmíněno dříve, předchozí kroky se stále složí.

Adding a Capitalize Each Word step to break folding.

Přidání dalších kroků v podřízeném směru, které závisí na velká písmena každého kroku , se i nadále nepřeloží.

Adding more steps that don't fold.

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í.

Showing how removing the problematic column allows things to fold without removing the step.