Как лучше всего перечислить члена и всех его потомков в MDX?
-
02-07-2019 - |
Вопрос
В базе данных 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 ограничены, мне было интересно, есть ли более простой способ сделать это с помощью одной команды, а не четырех?Есть ли менее подробный способ добиться этого, или мой пример — единственный реальный способ добиться этого?
Решение
DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)
Другие советы
Вам нужна команда DESCENDANTS.Помните об аналогии с «генеалогическим древом», и вы увидите, что в нем будут перечислены потомки члена, насколько вы захотите.
Вы можете указать «расстояние» (в уровнях) от выбранного участника, в вашем случае 3.
Есть несколько странных опций, которые вы можете указать с помощью третьего аргумента, вам нужен SELF_AND_AFTER, см. http://msdn.microsoft.com/en-us/library/ms146075.aspx
РЕДАКТИРОВАТЬ - ой, как заметил Сантиииии, это должно быть SELF_AND_BEFORE