Table.Buffer

Je funkcí v Power Query, která ukládá vyhodnocovanou tabulku do vyrovnávací paměti. Během vyhodnocování ji pak izoluje od externích změn. Můžete si tedy takto uloženou tabulku představit jako konstantu.

 

Setkal jsem se s názorem, že funkcí Table.Buffer nikdy nic nezkazíte. Dovolím si tomu oponovat. V určitých situacích její použití povede k výraznému zvýšení rychlosti výpočtu dotazu. Příkladem takovéto situace je, když stejný dotaz vyžaduje data ze stejného zdroje dat více než jednou.

Na druhou stranu může docházet ke zpomalení vyhodnocování z důvodu opakovaného ukládání dat nebo i zastavení vyhodnocování z důvodu přetečení dedikované paměti.

 

Pochopení funkce

Abychom pochopili, jak tato funkce přesně pracuje, tak je dobré chápat, jak jazyk M pracuje s jednotlivými kroky dotazu. Když se zamyslíme nad konceptem kroků, který je v jazyku M, tak to může působit dojmem, že výsledek každého kroku se ukládá. Skutečnost je ale jiná. Při aplikování celého dotazu dochází ke skládání kroků vůči zdroji dat. Pokud využijeme Table.Buffer(), tak se toto skládání roztrhne. Pod tuto funkci se uloží celý předešlý postup a výsledek se uloží do paměti jako „novýzdroj dat, pro který se aplikují další části dotazu.

Dalším důležitým faktorem, který je potřeba pochopit, je to, že toto uložení je v rámci paměti a ne disku. Načtení tedy dotazu s touto funkcí neovlivňuje načítání dotazu druhého.

Příklad

Toto se dá pochopit na příkladu reference:

Máme jednu hlavní tabulku „Tabulka_1“ a dvě tabulky, které z této tabulky vychází pomocí funkce Reference „Tabulka_2“ a „Tabulka_3

V „Tabulka_1“ mám aplikovanou funkci Table.Buffer, při vyhodnocování „Tabulka_2dojde k uložení dat v postupuTabulka_1“. Při vyhodnocování „Tabulka_3“ dojde k uložení znovu. Takto máme v paměti 2x ty samé hodnoty, včetně výsledků. Z tohoto výsledku vyplývá, že je dobré velmi dobře zvážit, kdy tuto funkci použít a kdy ne.

 

Syntaxe

Table.Buffer()


Upozornění

Ukládání probíhá na „mělké“ úrovni. Neukládají se tedy hodnoty vnořených tabulek, funkcí a listů hodnot v jednotlivých tabulkách. Takovéto tabulky se uloží jen jako skalární hodnoty (Table, Function, List).

Related Posts

Leave a comment

Privacy Preferences
When you visit our website, it may store information through your browser from specific services, usually in form of cookies. Here you can change your privacy preferences. Please note that blocking some types of cookies may impact your experience on our website and the services we offer.