Sdílet prostřednictvím


Posouvání dotazů v nativních dotazech

V Power Query můžete definovat nativní dotaz a spustit ho pro zdroj dat. Článek importu dat z databáze pomocí nativního databázového dotazu vysvětluje, jak tento proces provést s více zdroji dat. Při použití procesu popsaného v tomto článku ale váš dotaz nevyužívá žádné posouvání dotazů z následných kroků dotazu.

Tento článek představuje alternativní metodu pro vytváření nativních dotazů ve zdroji dat pomocí funkce Value.NativeQuery a udržování mechanismu posouvání dotazů aktivní pro následné kroky dotazu.

Poznámka:

Doporučujeme, abyste si přečetli dokumentaci k posouvání dotazů a indikátorech posouvání dotazů, abyste lépe porozuměli konceptům používaným v tomto článku.

Podporované datové konektory

Metoda popsaná v dalších částech se vztahuje na následující datové konektory:

Připojení k cíli ze zdroje dat

Poznámka:

K prezentaci tohoto procesu tento článek používá konektor SQL Serveru a ukázkovou databázi AdventureWorks2019. Prostředí se může lišit od konektoru po konektor, ale tento článek ukazuje základy toho, jak povolit možnosti posouvání dotazů oproti nativním dotazům pro podporované konektory.

Při připojování ke zdroji dat je důležité, abyste se připojili k uzlu nebo úrovni, kde chcete spustit nativní dotaz. V příkladu v tomto článku je tento uzel úrovní databáze uvnitř serveru.

Snímek obrazovky s dialogovým oknem nastavení připojení pro připojení k databázi AdventureWorks2019 v místní instanci SQL Serveru

Po definování nastavení připojení a zadání přihlašovacích údajů pro připojení se otevře navigační dialogové okno pro váš zdroj dat. Navigační dialogové okno obsahuje všechny dostupné objekty, ke kterým se můžete připojit.

V tomto seznamu je potřeba vybrat objekt, ve kterém je spuštěn nativní dotaz (označovaný také jako cíl). V tomto příkladu je tento objekt úrovní databáze.

V okně navigátoru v Power Query vyberte a podržte (nebo klikněte pravým tlačítkem) uzel databáze v okně navigátoru a vyberte možnost Transformovat data . Výběrem této možnosti vytvoříte nový dotaz celkového zobrazení databáze, což je cíl, který potřebujete ke spuštění nativního dotazu.

Snímek obrazovky s výběrem dat, na která uživatel v navigátoru klikl pravým tlačítkem myši na uzel databáze, se zvýrazněnou transformací dat

Jakmile dotaz dostane v editoru Power Query, měl by se v podokně Použitý postup zobrazit pouze krok Zdroj . Tento krok obsahuje tabulku se všemi dostupnými objekty v databázi, podobně jako v okně Navigátor.

Snímek obrazovky s dotazem, který obsahuje pouze zdrojový krok

Použití funkce Value.NativeQuery

Cílem tohoto procesu je spustit následující kód SQL a použít další transformace pomocí Power Query, které je možné přeložit zpět do zdroje.

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

Prvním krokem bylo definování správného cíle, což je v tomto případě databáze, ve které se spouští kód SQL. Jakmile má krok správný cíl, můžete tento krok vybrat – v tomto případě Source in Applied Steps ( Zdroj v použitých krocích) a pak výběrem tlačítka fx na řádku vzorců přidat vlastní krok. V tomto příkladu Source nahraďte vzorec následujícím vzorcem:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

Nejdůležitější součástí tohoto vzorce je použití volitelného záznamu pro čtvrtý parametr funkce, který má pole záznamu EnableFolding nastavené na hodnotu true.

Snímek obrazovky s novým vzorcem vlastního kroku s použitím funkce Value.NativeQuery a explicitního dotazu SQL

Poznámka:

Další informace o funkci Value.NativeQuery najdete v oficiálním článku dokumentace.

Po zadání vzorce se zobrazí upozornění, které vyžaduje povolení nativních dotazů ke spuštění pro konkrétní krok. Vyberte pokračovat, aby se tento krok vyhodnotil.

Tento příkaz SQL poskytuje tabulku pouze se třemi řádky a dvěma sloupci.

Snímek obrazovky s výsledky nativního dotazu vyhodnoceného pro cílovou databázi

Posouvání testovacích dotazů

Pokud chcete otestovat posouvání dotazů dotazu, můžete zkusit použít filtr u libovolného sloupce a zjistit, jestli indikátor posouvání dotazu v části použitých kroků ukazuje krok jako přeložený. V tomto případě můžete sloupec DepartmentID filtrovat tak, aby měly hodnoty, které se nerovnají dvěma.

Snímek obrazovky znázorňující, jak filtrovat sloupec DepartmentID tak, aby měl jenom hodnoty, které se nerovnají dvěma.

Po přidání tohoto filtru můžete zkontrolovat, jestli indikátory posouvání dotazů v tomto novém kroku stále zobrazují posouvání dotazů.

Krok filtru zobrazený jako přeložený zpět ke zdroji dat v části Použitý postup

Pokud chcete dále ověřit, jaký dotaz se odesílá do zdroje dat, můžete vybrat a podržet krok Filtrované řádky (nebo na něj kliknout pravým tlačítkem) a vybrat možnost Zobrazit plán dotazu a zkontrolovat plán dotazu pro tento krok.

V zobrazení plánu dotazu uvidíte, že uzel s názvem Value.NativeQuery, který má hypertextový odkaz Zobrazit podrobnosti . Výběrem tohoto hypertextového odkazu můžete zobrazit přesný dotaz, který se odesílá do databáze SQL Serveru.

Nativní dotaz je zabalený kolem jiného příkazu SELECT, který vytvoří poddotaz původního dotazu. Power Query nejlépe vytvoří nejoptimálnější dotaz vzhledem k použitým transformacím a poskytnutému nativnímu dotazu.

Snímek obrazovky s plánem dotazu pro krok Filtrované řádky

Tip

V situacích, kdy dochází k chybám, protože posouvání dotazů nebylo možné, doporučujeme zkusit ověřit kroky jako poddotaz původního nativního dotazu a zkontrolovat, jestli nedochází ke konfliktům syntaxe nebo kontextu.