Sdílet prostřednictvím


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

Snímek obrazovky s kroky zdroje a navigace v podokně Indikátor skládání

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

Snímek obrazovky se zdrojovým, navigačním a velkými písmeny jednotlivých kroků v podokně Indikátor skládání

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.

Snímek obrazovky s indikátory počátečních kroků pro načtení tabulky Product

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

Snímek obrazovky znázorňující, jak přidání kroku odebrání sloupce do předchozího dotazu rozšiřuje zelenou čáru indikátoru posouvání

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

Snímek obrazovky znázorňující, jak přidání velkých písmen na jednotlivé kroky Wordu přeruší posouvání

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

Snímek obrazovky znázorňující, jak po přidání dalších kroků nedojde k posouvání

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

Snímek obrazovky znázorňující, jak odebrání problematického sloupce umožňuje přeložit věci bez odebrání kroku