Hányszor kérdezi le a Power Query ugyanazt a forrástáblát?
Az alábbi ábra bal oldalán van egy STAGE tábla. Az ábrán nem látszik, de a STAGE táblától barra van egy forrástábla, amelyből a nyíl a STAGE táblára mutat. A betöltési fa úgy van felépítve, hogy először mindent áttöltünk a STAGE táblába, és onnan töltjük tovább az adatokat különböző transzformációkkal a céltáblákba. Csak 4 céltábla van, de van olyan céltábla, amely több temptáblából is táplálkozik, ezért van az, hogy a STAGE táblából 8 nyíl mutat további táblákra, azaz a betöltés során a STAGE táblát összesen nyolcszor kérdezi le:

Kérdés: A Power Query a betöltés során hányszor kérdezi le a forrástáblát? Egyszer és utána minden további lekérdezést a STAGE táblából szolgál ki, vagy 8-szor: Azaz akárhányszor megszólítja a STAGE táblát, az mindig lekérdezi a forrástáblát.
Válasz: 8-szor. A Power Query a betöltés során 8-szor kérdezi le ugyanazt a forrástáblát. A Power Query ugyanis nem cache-eli le a STAGE táblát. Azaz ha a STAGE táblát nyolcszor kérdezzük le, akkor a Power Query nyolcszor fogja lekérdezni ugyanazt a forrástáblát.
Miért? Mert a Power Query nyelve egy funkcionális nyelv. Minden "táblája" egy függvény, nem egy tábla. A STAGE tábla is csak egy függvény, ami a forrásra mutat. Ha a STAGE táblát 8-szor szólítja meg a Power Query, akkor az 8-szor kéri le ugyanazt az adatot a forrásból. És ez nem jó...
Ezt tudjuk megszűntetni a Table.Buffer() függvénnyel. Ez a függvény le tudja cache-elni a lekérdezés eredményét, azaz a STAGE táblát be tudja rakni a cache-be, és a STAGE táblára mutató nyolc lekérdezést a cache-ből fogja kiszolgálni, nem fog feleslegesen visszanyúlni a forrásrendszerhez.
A függvényhez nincs gomb a szalagon, de a speciális szerkesztőt használva be tudjuk szúrni a kódba:

És ezek után megjelenik majd a lépés a transzformációk között:

A Table.Buffer() nem mindenható, de érdemes használni minden olyan táblánál, amelyikre több tábla is hivatkozik. Amúgy sem szeretjük feleslegesen terhelni a forrásrendszert és annak ismételt lekérdezése szinte mindig lassabb a cache lekérdezésénél...
Kővári Attila - BI projekt

BI projekt: BI & DWH Tervezés, tanfolyam, tanácsadás - 


Új hozzászólás