Каков наилучший способ перечислить члена и всех его потомков в MDX? - PullRequest
3 голосов
/ 29 сентября 2008

В базе данных OLAP, с которой я работаю, есть иерархия «Местоположение», состоящая из уровней Компания, Регион, Площадь, Участок, Комната, До. Для конкретной компании мне нужно написать несколько MDX, в которых перечислены все регионы, области и сайты (но не уровни ниже Сайта). В настоящее время я достигаю этого с помощью следующего MDX

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

Поскольку мои знания в области MDX ограничены, мне было интересно, существует ли более простой способ сделать это с помощью одной команды, а не четырех? Есть ли менее многословный способ достижения этого или мой пример - единственный реальный способ достижения этого?

Ответы [ 2 ]

5 голосов
/ 29 сентября 2008
DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)
2 голосов
/ 29 сентября 2008

Команда, которую вы хотите, - DESCENDANTS. Помните аналогию с «генеалогическим древом», и вы увидите, что в этом списке будут перечислены потомки члена, насколько вам нужно.

Вы можете указать «расстояние» (в уровнях) от выбранного участника, 3 в вашем случае.

Есть несколько странных опций, которые вы можете указать с помощью третьего аргумента, вам нужно SELF_AND_AFTER, см. http://msdn.microsoft.com/en-us/library/ms146075.aspx

РЕДАКТИРОВАТЬ - упс, как заметил santiiiii, это должно быть SELF_AND_BEFORE

...