Hogyan tehető egy számított mező "default member"-ré
Az Analysis Services 2005 (AS2005) a következő hibaüzenetet adja, ha számított mezőt, (Calculated member-t) akarunk default member-ré tenni:
DefaultMember(Measures,Measures) (1, 1) The member '[Profit]' was not found in the cube when the string, [Measures].[Profit], was parsed.
Már az is furcsa, hogy a számított mezők meghatározásánál miért nem jelennek meg a választható dimenzió elemek között a számított mezők.
Ezekből persze arra következtethetnénk, hogy ez egy bug, hiszen már az előző Analysis Services-ben (AS2000) is lehetőségünk volt számított mezőt default member-ré tenni.
Nos. Ez nem hiba, és természetesen lehet a 2005-ös OLAP adatkockákban is számított mező a default member. Mielőtt azonban megvizsgálnánk, hogy mi okozza a hibaüzenetet, illetve hogyan lehet default member-ré tenni egy számított mezőt, ismerkedjünk meg azokkal a lépésekkel, amelyeket az Analysis Services 2005 az adatkocka feltöltése után elvégez.
Az Analysis Services felösszegzés utáni teendői:
- Meghatározza és rögzíti az általunk NEM meghatározott default member-eket
- Ha az attribútum aggregálható (IsAggregatable=true) akkor az All member lesz a default member.
- Ha az attribútum nem aggregálható (nincs All Level) akkor az Analysis Services véletlenszerűen dönti el, hogy melyik elem lesz a default. (Rendszerint az első elem).
- Measure-ök közül az első nem rejtett elem lesz a default member.
- Meghatározza és rögzíti az általunk meghatározott default member-eket
- ...
- ...
- Lefuttatja az MDX scriptet (elkészíti a calculated membereket (számított mezőket))
- ...
Tehát a felösszegzés utáni első lépésben az AS meghatározza default member-eket, és csak később készülnek el a számított mezők. Azaz, az Analysis Services akkor akarja a calculated member-t default member-ré tenni, amikor az még nem is létezik.
A fentiekből következik, hogy default member-t azután kéne meghatároznunk, miután elkészültek a számított mezők. De ezt nem tehetjük meg, mert a default member-ekre szüksége van az Analysis Services-nek, méghozzá a kocka feltöltése után azonnal.
ALTER CUBE
Szerencsére a kocka elkészülte után van lehetőségünk a kocka módosítására az ALTER CUBE MDX utasítás segítségével. Nem határozunk meg default member-t (hagyjuk, hogy ezt a rendszer maga megtegye (1-es pontban leírt módon)), majd a számított mezők elkészülte után lefuttatunk egy, a következőhöz hasonló ALTER CUBE utasítást:
ALTER CUBE CURRENTCUBE
UPDATE DIMENSION [Measures],
DEFAULT_MEMBER = [Measures].[Profit];
A fenti utasítást beírva az MDX Script-be, (értelemszerűen a számított mező definiálása után) az SSAS módosítja a rendszer által meghatározott default member-t a [Profit] számított mezőre.
Megjegyzés: Az Analysis Services 2000 is ALTER CUBE-bal hozta létre default member-eket.
Felhasznált irodalom:
- Mosha Pasumansky: Default members, MDX Scripts, Security, KPIs and Perspectives
Kővári Attila - BI projekt
hozzászólás
Horváth Zoltán
k, 08/25/2009 - 13:14
Permalink
Irodalom link
Kővári Attila
k, 08/25/2009 - 14:08
Permalink
Köszönöm
Új hozzászólás