Plán dotazů pro Power Query (Preview)
Plán dotazů pro Power Query je funkce, která poskytuje lepší přehled o vyhodnocení dotazu. Je užitečné určit, proč se konkrétní dotaz nemusí v určitém kroku sbalit.
V praktickém příkladu tento článek předvede hlavní případ použití a potenciální výhody použití funkce plánu dotazu ke kontrole kroků dotazu. Příklady použité v tomto článku byly vytvořeny pomocí ukázkové databáze AdventureWorksLT pro Azure SQL Server, kterou si můžete stáhnout z ukázkových databází AdventureWorks.
Poznámka
Funkce plánu dotazů pro Power Query je dostupná jenom v Power Query Online.
Tento článek je rozdělený do řady doporučených kroků pro interpretaci plánu dotazů. Tento postup je následující:
- Zkontrolujte indikátory posouvání dotazů.
- Vyberte krok dotazu a zkontrolujte jeho plán dotazu.
- Implementujte změny dotazu.
Pomocí následujících kroků vytvořte dotaz ve vlastním prostředí Power Query Online.
V Power Query – Zvolte zdroj dat a vyberte prázdný dotaz.
Nahraďte skript prázdného dotazu následujícím dotazem.
let Source = Sql.Database("servername", "database"), Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data], #"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}), #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000), #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5) in #"Kept bottom rows"
Změňte
servername
adatabase
zadejte správné názvy pro vaše vlastní prostředí.(Volitelné) Pokud se pokoušíte připojit k serveru a databázi pro místní prostředí, nezapomeňte pro toto prostředí nakonfigurovat bránu.
Vyberte Další.
V Editor Power Query vyberte Konfigurovat připojení a zadejte přihlašovací údaje ke zdroji dat.
Poznámka
Další informace o připojení k SQL Serveru najdete v databázi SQL Serveru.
Po provedení těchto kroků bude váš dotaz vypadat jako ten na následujícím obrázku.
Tento dotaz se připojí k tabulce SalesOrderHeader a vybere několik sloupců z posledních pěti objednávek s hodnotou TotalDue nad 1000.
Poznámka
Tento článek používá zjednodušený příklad k prezentaci této funkce, ale koncepty popsané v tomto článku platí pro všechny dotazy. Před čtením plánu dotazů doporučujeme mít dobré znalosti o posouvání dotazů. Další informace o posouvání dotazů najdete v tématu Základy posouvání dotazů.
Poznámka
Před přečtením této části doporučujeme projít si článek o indikátorech posouvání dotazů.
Vaším prvním krokem v tomto procesu je zkontrolovat dotaz a věnovat pozornost indikátorům posouvání dotazů. Cílem je zkontrolovat kroky, které jsou označené jako nepřeložené. Pak uvidíte, jestli provádění změn v celkovém dotazu může tyto transformace zcela posunout.
V tomto příkladu je jediným krokem, který nelze přeložit , dolní řádky, které lze snadno identifikovat pomocí nepřeloženého ukazatele kroku. Tento krok je také posledním krokem dotazu.
Cílem je teď zkontrolovat tento krok a pochopit, co se přeloží zpět ke zdroji dat a co se nedá přeložit.
Identifikovali jste krok Chovaných dolních řádků jako krok, který vás zajímá, protože se nepřeloží zpět ke zdroji dat. Klikněte pravým tlačítkem myši na krok a vyberte možnost Zobrazit plán dotazu. Tato akce zobrazí nové dialogové okno, které obsahuje diagram pro plán dotazu vybraného kroku.
Power Query se snaží optimalizovat dotaz tím, že využívá opožděné vyhodnocení a posouvání dotazů, jak je uvedeno v základech posouvání dotazů. Tento plán dotazu představuje optimalizovaný překlad dotazu M do nativního dotazu odeslaného do zdroje dat. Zahrnuje také všechny transformace, které provádí modul Power Query. Pořadí, ve kterém se uzly zobrazí, se řídí pořadím dotazu počínaje posledním krokem nebo výstupem dotazu, který je znázorněný úplně vlevo od diagramu, a v tomto případě je to uzel Table.LastN , který představuje krok s dolními řádky .
V dolní části dialogového okna je pruh s ikonami, které vám pomůžou přiblížit nebo oddálit zobrazení plánu dotazu a další tlačítka, která vám pomůžou se správou zobrazení. U předchozího obrázku se možnost Přizpůsobit zobrazení z tohoto pruhu použila k lepšímu ocenění uzlů.
Poznámka
Plán dotazu představuje optimalizovaný plán. Když modul vyhodnocuje dotaz, pokusí se přeložit všechny operátory do zdroje dat. V některýchpřípadechch S ohledem na to uzly a operátory, které zůstaly v tomto optimalizovaném plánu dotazů, obvykle obsahují dotaz na "přeložený" zdroj dat a všechny operátory, které se nedají přeložit a vyhodnocují se místně.
Uzly v tomto diagramu můžete identifikovat jako dvě skupiny:
- Složené uzly: Tento uzel může být buď
Value.NativeQuery
nebo "zdroj dat", napříkladSql.Database
. Dají se také identifikovat pomocí vzdáleného popisku pod názvem jejich funkce. - Neskládané uzly: Jiné operátory tabulky, například
Table.SelectRows
,Table.SelectColumns
a další funkce, které se nedají přeložit. Můžete je také identifikovat pomocí popisků Úplné prohledávání a Streamování.
Následující obrázek znázorňuje složené uzly uvnitř červeného obdélníku. Zbývající uzly nebylo možné přeložit zpět do zdroje dat. Zbývající uzly budete muset zkontrolovat, protože cílem je pokusit se tyto uzly přeložit zpět do zdroje dat.
Pokud chcete zobrazit rozšířené informace, můžete vybrat Zobrazit podrobnosti v dolní části některých uzlů. Například podrobnosti Value.NativeQuery
uzlu zobrazují nativní dotaz (v SQL), který se odešle do zdroje dat.
Zde uvedený dotaz nemusí být úplně stejný dotaz odeslaný do zdroje dat, ale je to dobrá aproximace. V tomto případě vám přesně řekne, jaké sloupce se budou dotazovat z tabulky SalesOrderHeader a jak pak bude filtrovat tuto tabulku pomocí pole TotalDue, aby získala pouze řádky, ve kterých je hodnota tohoto pole větší než 1 000. Uzel vedle něj Table.LastN se počítá místně modulem Power Query, protože ho nejde přeložit.
Poznámka
Operátory nemusí přesně odpovídat funkcím použitým ve skriptu dotazu.
Teď jste zjistili, které uzly se nedají přeložit a které se vyhodnotí místně. Tento případ má Table.LastN
pouze uzel, ale v jiných scénářích může mít mnohem víc.
Cílem je použít změny dotazu tak, aby se krok dal sbalit. Některé změny, které můžete implementovat, můžou být v rozsahu od změny uspořádání kroků až po použití alternativní logiky pro váš dotaz, který je explicitnější pro zdroj dat. To neznamená, že všechny dotazy a všechny operace jsou složené použitím některých změn. Je ale vhodné určit, jestli se váš dotaz může posunout zpět, a to prostřednictvím zkušební verze a chyby.
Vzhledem k tomu, že zdrojem dat je databáze SQL Serveru, je-li cílem načíst posledních pět objednávek z tabulky, je dobrou alternativou využít klauzule TOP a ORDER BY v SQL. Vzhledem k tomu, že v SQL není žádná klauzule BOTTOM, Table.LastN
transformace v PowerQuery se nedá přeložit do SQL. Tento krok můžete odebrat Table.LastN
a nahradit ho:
- Řazení sestupně krok podle sloupce SalesOrderID v tabulce, protože tento sloupec určuje, které pořadí následuje jako první a které bylo zadáno jako poslední.
- Vyberte prvních pět řádků od řazení tabulky, tato transformace dosáhne stejného výsledku, jako kdyby se jednalo o uchovávané dolní řádky (
Table.LastN
).
Tato alternativa je ekvivalentní původnímu dotazu. I když tato alternativa v teorii vypadá dobře, musíte provést změny, abyste zjistili, jestli tato alternativa tento uzel plně přeloží zpět do zdroje dat.
Implementujte alternativu popsanou v předchozí části:
Zavřete dialogové okno plánu dotazu a vraťte se do Editor Power Query.
Odeberte krok s uloženými dolními řádky .
Seřaďte sloupec SalesOrderID v sestupném pořadí.
Vyberte ikonu tabulky v levém horním rohu zobrazení náhledu dat a vyberte možnost číst horní řádky. V dialogovém okně předejte jako argument číslo pět a stiskněte OK.
Po implementaci změn znovu zkontrolujte indikátory posouvání dotazů a podívejte se, jestli vám dává přeložený indikátor.
Teď je čas zkontrolovat plán dotazu posledního kroku, který teď uchovává horní řádky. Teď jsou jen složené uzly. V části Value.NativeQuery
Zobrazit podrobnosti ověřte, který dotaz se do databáze odesílá.
I když tento článek navrhuje, jakou alternativu použít, hlavním cílem je naučit se používat plán dotazů k prozkoumání posouvání dotazů. Tento článek také poskytuje přehled o tom, co se odesílá do vašeho zdroje dat a jaké transformace se budou provádět místně.
Kód můžete upravit, abyste viděli dopad, jaký má v dotazu. Pomocí indikátorů posouvání dotazů budete mít také lepší představu o krocích, které brání posouvání dotazu.