Az Analysis Services 2008 tervezést támogató újdonságai

Talán tudja, talán nem, de nekem a szívem csücske a többdimenziós tervezés (mármint az üzleti tervezés támogatása többdimenziós eszközökkel) és épp ezért alig vártam, hogy kézbe vehessem az Analysis Services 2008-at és megtudjam, hogy milyen újdonságokat tartalmaz a 2005-ös verzióhoz képest.

A korai írások mind arról szóltak, hogy az Analysis Services 2008-ban lehetőségünk lesz visszaírni az közvetlenül az OLAP adatbázisba, és én ebből arra a következtettem, hogy teljesen megváltoztatják a tervezés támogatását. Már láttam magam előtt, hogy az új Analysis Services hogyan fogja támogatni a kontrollerek munkáját, micsoda durva modelleket futtathatunk majd, és szétoszthatjuk a tervet számított mezők mentén is...

De nem ez történt. Minden marad a régiben (Legalábbis a jelenlegi Analysis Services CTP változat szerint) csak megnövelték a visszaírás és a visszaírt adatok kiolvasásának sebességét. Vessünk rá egy pillantást, hogy hogyan valósították meg mindezt:

Visszaírás folyamata az Analysis Services 2008-ban

Ha egy felhasználó megváltoztatja egy adott cella értékét (mondjuk 10-ről 14-re) akkor az Analysis Services 2008 a deltát (4) kiírja egy külön writeback partícióra. (a 2008-as verziótól ez egy MOLAP partíció) Ha valakinek szüksége van a megváltozott cella értékére, akkor az Analysis Services végignyálazza az összes partíciót (közte a writeback-et is) és felaggregálja azok tartalmát. Így visszaadja az eredeti 10 plusz a writeback partíción tárolt 4 összegét, azaz 14-et.

Visszaírás az Analysis Services 2008-ban

Tervezés támogatása az Analysis Services-ben

Miért baj, hogy így működik a visszaírás?
Vegyük a következő egyszerű tervezési eljárást. Fogja a kontrollerünk az idei számokat és azokat átmásolja a következő évre. (így képezi a 2009-es terv bázisát) majd elkezdi módosítani a számokat. A 2009-es árbevétel legyen az idei árbevétel 1,2 szerese, majd osszuk szét a növekményt (20%) a termékek mentén úgy, hogy azok eloszlása legyen azonos az idei eloszlással. Eddig OK.


Most azt mondja kontrollerünk, hogy X termékre nem tervezek semmit. Igaz, hogy eddig volt X termékből értékesítés, de jövőre nem tudom mi lesz vele, így nem tervezek rá bevételt. Hogy tudja ezt megcsinálni? Úgy, hogy kitörli az X cikkre tervezett bevételt. Logikus igaz? Csak az Analysis Services-zel ezt nem lehet megcsinálni. Miért nem? Nézzük a fenti példát:

Terveztem 14-et, de ezt most ki akarom törölni. Mit fog csinálni az Analysis Services? Beír -14-et a writeback partícióba és amikor felhasználó lekéri X termék értékesítési tervét, akkor az Analysis Services fogja a +14-et (amit a kockában lát) és ehhez hozzáadja a writeback partíción tárolt -14-et.

Csakhogy +14-14=0 és nem NULL. Mást jelent, ha valamire 0-át tervezünk, mintha valamire nem tervezünk semmit. Van akinél ez nem jelent problémát, de van akinél igen.

Hogyan működött mindez az Analysis Services 2005-ben?

Pont ugyan így csak a writeback partíció egy ROLAP partíció volt, így a delták egy relációs táblában landoltak (szemben a mostani MOLAP tárolással).
Megjegyzés: A 2008-as Analysis Services is használ még relációs writeback táblákat, de azt mondják, hogy ezt csak „backup" okok miatt teszik...

Összefoglalva: Minden maradt a régiben, csak a ROLAP writeback partíciót felváltotta egy új MOLAP partíció. Igaz, hogy ezáltal jelentősen nőtt a visszaírás és a kiolvasás sebessége, de továbbra is csak az eddigi 4 fajta szétosztási algoritmus áll rendelkezésünkre a felülről lefelé történő tervezés támogatásához. Talán majd a következő Analysis Services verzióban...

Kővári Attila - BI projekt

Új hozzászólás