Az MDX Scope utasítás viselkedéséről

A SCOPE MDX utasítás NEM írja felül a kocka tartalmát!

 

Több mint 12 éve nem írtam egy sor ORACLE Express kódot, de az akkor tanultak olyan mélyen rögzültek, hogy alig tudok elvonatkoztatni tőlük. (Az Express volt az ORACLE OLAP adatbáziskezelője) Express-ben a LIMIT parancs (ami az MDX SCOPE utasítás ORACLE-ös megfelelője) után kiadott értékadás (pl.: Mennyiség = 4) hatására felülírtuk a kocka tartalmát. Ezzel szemben az Analysis Services csak képleteket generál, és kvázi a képlet eredményét jeleníti meg kliens oldalon. Ezzel nincs is probléma, csakhogy ebből következően nincs jelentősége az értékadás sorrendjének. Tehát:

 

SCOPE A;

THIS = B;

END SCOPE;

 

SCOPE B;

THIS = 0;

END SCOPE;

 

Utasítás sorozat eredményeképpen A-ra is és B-re is nullát fogunk visszakapni. Ha ezt meg akarjuk változtatni akkor a FREEZE () utasítással rögzíteni kell az először kiszámított értéket. Mutatom:

 

SCOPE A;

THIS = B;

FREEZE(THIS);

END SCOPE;

 

SCOPE B;

THIS = 0;

END SCOPE;

 

és ebben az esetben A B eredeti értékével lesz egyenlő, B pedig nulla lesz

Kővári Attila - BI projekt

Új hozzászólás