MDX requête contenant 2 dimensions à partir de la même hiérarchie
Question
Les structures pertinentes de mon cube sont que j'ai une hiérarchie avec « classe » et « SubClass ». J'ai aussi une mesure appelée « valeur », qui est ce que im essayant d'obtenir.
Une simple requête peut ressembler à:
SELECT
NON EMPTY ([Measures].[Value]) ON COLUMNS,
NON EMPTY ([Some Dimension].[Class Hierarchy].[Class]) ON ROWS
FROM [MyCube]
Et je peux lire évidemment le SubClass en utilisant la HIÉRARCHIE qui est retourné à ADOMD.
Ma question est double, d'une part comment pourrais-je « aplatir » cette hiérarchie de manière à recevoir à la fois et la classe SubClass en tant que membres discrets dans l'ensemble de cellules? Cela ne fonctionne pas:
SELECT
NON EMPTY ([Measures].[Value]) ON COLUMNS,
NON EMPTY (
[Some Dimension].[Class Hierarchy].[Class],
[Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]
La hiérarchie Hiérarchie des classes est utilisée plus d'une fois dans la fonction Crossjoin
Deuxième question, ce que je dois faire est actuually filtrer ci-dessus sur les classes particulières, encore une fois cela ne marchera pas pour la même raison que ci-dessus.
SELECT
NON EMPTY ([Measures].[Value]) ON COLUMNS,
NON EMPTY (
{[Some Dimension].[Class Hierarchy].[Class].&[ClassA],[Some Dimension].[Class Hierarchy].[Class].&[ClassB]},
[Some Dimension].[Class Hierarchy].[Sub Class]
) ON ROWS
FROM [MyCube]
Toute aide très appréciée. MDX me rend dingue!
La solution
Il vous manque la propriété MEMBRES sur votre dimension.
Pour votre premier exemple, essayez ceci:
SELECT
NON EMPTY ([Measures].[Value]) ON COLUMNS,
NON EMPTY {(
[Some Dimension].[Class Hierarchy].[Class].MEMBERS,
[Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]
Pour votre deuxième exemple, essayez ceci:
SELECT
NON EMPTY ([Measures].[Value]) ON COLUMNS,
NON EMPTY {(
[Some Dimension].[Class Hierarchy].[Class].&[ClassA],
[Some Dimension].[Class Hierarchy].[Class].&[ClassB],
[Some Dimension].[Class Hierarchy].[Sub Class].MEMBERS)} ON ROWS
FROM [MyCube]
Autres conseils
Utilisez dans votre sous-requêtes clause WHERE. MDX toujours limiter l'utilisation d'une dimension sur un seul axe.
Sous la requête est un moyen de contourner le problème. J'ai récemment appris cette astuce après MDX m'a conduit noix et ..
Salut cette requête a fonctionné pour moi.
SELECT NON EMPTY { [Measures].[App Count] }
ON COLUMNS,
NON EMPTY
{(
EXISTING
(
[MART TIME DIM].[Date].[Date] .MEMBERS) *
[New Ren DIM].[New Ren CODE].[New Ren CODE].ALLMEMBERS
)}
ON ROWS FROM [SubmissionCube]
where
({
[MART BROKER DIM].[BROKER ID].&[10812]},{[MART TIME DIM].[Year].&[2015],
{[MARTTIME DIM].[Year].&[2016]}
})
S'il vous plaît être prudent avec le « } » dans la clause where que la requête a.