Query Folding
Je schopnost, kterou disponuje Power Query. Jak z názvu vyplývá, tak jde o skládání. Konkrétně se skládají kroky v Power Query (mashup engine) do jednoho dotazu, který je pak realizován vůči datovému zdroji.
Nemusí tak tedy docházet k transformaci až po načtení dat, ale je možné data získat rovnou připravená. Bohužel ne každý zdroj tuto funkci podporuje.
Jaké zdroje podporují Query Folding?
Většina zdrojů, které podporují koncept dotazovacích jazyků. Mezi takové zdroje patří relační databáze, OData konektor, Exchange a například Active Directory. Znamená to, že například CSV nebo XML soubor jako plochý soubor s daty, Query Folding rozhodně podporovat nebude.
K čemu je Query Folding důležité?
Pokud získáte od data v přesné podobě, kterou můžete rovnou využít pro reporting a nemusíte je nijak upravovat, pak je samozřejmě aktualizace efektivnější. Dále také pro získávání dat stylem Direct Query. Toto připojení dat je realizováno právě pomocí odesílání složeného dotazu vůči zdroji. Není tedy možné se připojit na zdroj dat v režimu Direct Query bez Query Folding.
Podporuje skládání dotazu všechny dotazy, které jdou v Power Query vytvořit?
NE! Složení dotazu je možné jen a pouze, pokud lze dotaz zapsat pomocí jazyku SQL za pomoci jednoho příkazu SELECT. Příkaz SELECT je možné sestavit s jednotlivými klauzulemi WHERE, GROUP BY a JOIN. Dále je možné, aby obsahoval výrazy sloupců, které používají běžné vestavěné funkce, které databáze podporují.
Platné funkce
- Odebírání sloupců
- Přejmenování sloupců
- Filtrování řádků se statickými hodnotami nebo parametry Power Query
- Seskupení a sumarizování
- Sloučení a extrahování dat z dotazů na základě stejného zdroje dat
- Připojení dotazů na základě stejného zdroje dat
- Přidání vlastních sloupců s jednoduchou logikou (výrazy sloupců SELECT). Jednoduchá logika znamená nekomplikované operace, případně včetně použití M funkcí, které mají ekvivalentní funkce ve zdroji dat SQL, jako jsou matematické nebo textové manipulační funkce.
- Pivot a Unpivot
Neplatné funkce
- Sloučení dotazů na základě rozdílných zdrojů dat
- Přidávání sloupců s Indexem
- Změna datového typu sloupce
- Přidání vlastních sloupců se složitou logikou. Komplexní logika znamená použití M funkce, které nemají žádné ekvivalentní funkce ve zdroji dat.
Co když mám většinu postupu tvořeného pomocí platních funkcí a pak použiji neplatnou?
V takovém případě dojde k rozdělení dotazu na více částí. Vše od prvího kroku dotazu se složí do jednoho kroku až po první neplatnou funkci. Všechny následující kroky se pak provedou klasickou formou až nad daty, která budou získány právě z onoho složeného kroku.
Mohu Query Folding někde v Power Query najít?
Zajisté. Pokud je skládání dotazu právě aktivní, tak při pravém kliknutí na krok v použitém postupu si můžete všimnout aktivního prvku s názvem „Zobrazit nativní dotaz“.
Při výběru této možnosti se zobrazí okno, které obsahuje přepsaný postup dotazu do SQL. V tomto okně nemůžete postup upravit, ale můžete zjistit, jaký dotaz se vůči zdroji bude posílat. Pokud chcete tento SQL zápis upravit, protože vám zápis nevyhovuje, tak máte dvě možnosti. První je ta, že upravíte postup v dotazu a budete sledovat, jak se nativní dotaz mění.
Druhá, a řekl bych, že i mnohem lepší varianta, je ta, že při vstupu, kdy voláte konkrétní databázi si SQL dotaz nastavíte sami.
Mám tedy Power Query důvěřovat se skládáním dotazu nebo si ho vytvořit sám?
Mou odpovědí na tuto otázku je, že je dobré mít zdravou skepsi. Osobně rád důvěřuji Query Foldingu, ale již jsem se párkrát setkal s tím, že se v rámci složení dotazu při odebírání sloupců Folding zafixoval na konkrétní (skryté) sloupce, které se pak v průběhu času z databáze odstranily a nebylo možné datovou sadu aktualizovat.