2008-09-29 6 views
3

Dans une base de données OLAP, je travaille avec une hiérarchie "Location" composée des niveaux Company, Region, Area, Site, Room, Till. Pour une entreprise en particulier, je dois écrire un MDX qui répertorie toutes les régions, zones et sites (mais pas tous les niveaux ci-dessous Site). Actuellement, je suis avec le réalisais ce qui suit MDXQuel est le meilleur moyen de lister un membre et tous ses descendants dans MDX?

HIERARCHIZE({ 
[Location].[Test Company], 
Descendants([Location].[Test Company], [Location].[Region]), 
Descendants([Location].[Test Company], [Location].[Area]), 
Descendants([Location].[Test Company], [Location].[Site]) 
}) 

Parce que ma connaissance du MDX est limité, je me demandais s'il y avait une façon de faire plus simple, avec une seule commande plutôt que quatre? Y a-t-il une manière moins verbeuse d'y parvenir, ou est-ce que mon exemple est le seul moyen réel d'y parvenir?

Répondre

5
DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE) 
2

La commande que vous souhaitez est DESCENDANTS. Gardez à l'esprit l'analogie de l'arbre généalogique, et vous verrez que cela va lister les descendants d'un membre, aussi loin que vous le voulez.

Vous pouvez spécifier la 'distance' (dans les niveaux) du membre choisi, 3 dans votre cas.

Il y a quelques options étranges que vous pouvez spécifier avec le troisième argument, vous voulez SELF_AND_AFTER, voir http://msdn.microsoft.com/en-us/library/ms146075.aspx

EDIT - oups, comme santiiiii remarqué, il devrait être SELF_AND_BEFORE

Questions connexes