Sdílet prostřednictvím


Indikátory sbalová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 skládání dotazů vám pomůžou pochopit kroky, které se složí nebo nesloží.

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, v první řadě se vyhnout problémům s výkonem 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, zda dotaz až do tohoto bodu jako celek skládá nebo ne. Pokud máte indikátor, který ukazuje, že se dotaz neskládá, následovaný indikátorem, který ukazuje, že se skládá, znamená to, že se dotaz až do tohoto bodu skládá.

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 složí, což znamená, že dotaz až do té chvíle složí.

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. Například u SQL se tento krok zpracovává jako hodnota tabulky katalogu, která se nepřeloží. Jakmile ale vyberete data pro tento konektor, zhroutí se.

Naopak tato indikace může znamenat, že váš dotaz se složí až do určitého bodu a pak zastaví skládání. Na rozdíl od situace, kdy máte indikátor skládání pro krok, který ukazuje, že všechno se přeloží, indikátor neskládání neznamená, že se všechno neskládá. Místo toho to znamená, že se "ne všechno" skládá. Obecně platí, že vše až do posledního skládacího indikátoru se sklání, a další operace probíhají potom.

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í

Diagnostické indikátory 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 v některých případech (seznamy, záznamy, primitivy) není hlášeno, zda jsou skládací nebo nikoliv. Podobně se konstantní tabulky hlásí jako neprůhledné.

Indikátor Ikona Popis
Skládací Ukazatel fázování vám říká, že zdroj dat vyhodnocuje dotaz až do tohoto kroku.
Neskládací 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, které se mohou složit, jsou neobvyklé. Mají na mysli, že dotaz "může" být přeložen. Označují buď, že složení nebo nesložení je určeno během načítání výsledků z dotazu, a že plán dotazu je dynamický. Tyto indikátory se pravděpodobně zobrazí pouze u připojení ODBC nebo OData.
neprůrůžné 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 indikátory a nástroj plánu dotazů nepodporují transformaci nebo spojnici.
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

Začněte analýzu příkladu připojením k tabulce Production.Product v Adventure Works (SQL). Počáteční načtení, podobně jako úvodní příklad, 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ím dalších kroků, které se složí, se prodlouží zelená čára na pravé straně. K tomuto rozšíření dochází, protože tento krok se také zavine.

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 neskládá, zobrazí jiný indikátor. Například Každé slovo se začíná velkým písmenem nikdy neselže. Indikátor se změní a ukazuje, že v tomto kroku přestal se skládáním. Jak už bylo zmíněno dříve, předchozí kroky jsou stále platné.

Snímek obrazovky znázorňující, jak krok kapitalizace každého slova rozbíjí skládání.

Přidání dalších kroků v podřízeném směru, které závisí na kapitalizaci každého kroku, stále nepřeklapne.

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 položkám se přeskupit bez odstranění kroku