Вы можете использовать hierarchy.levels.count, чтобы получить количество уровней в иерархии, если у вас есть иерархия с неизвестным/изменяющимся количеством уровней. Оттуда вы можете получить самый низкий уровень с помощью функции Уровни. Вы должны вычесть единицу, потому что это позиция с отсчетом от нуля.
[Group].[Group].Levels([Group].[Group].levels.count-1)
Вы также можете сделать это с помощью Потомки . Второй аргумент в функции потомков — это расстояние от указанного члена, поэтому вам нужно вычесть 1 из количества уровней. Вот пример запроса.
select {} on 0,
descendants([Group].[Group].[All], ([Group].[Group].levels.count - 1), SELF) on 1
from [Cube]
Одно примечание: если у вас рваная иерархия (что, как я предполагаю, у вас есть, поскольку вы не знаете количество уровней), это приведет к извлечению только членов на самом низком уровне, а не всех листьев. Если вы используете hidememberif, чтобы скрыть повторяющиеся элементы, чтобы они не были их собственными родителями, вам действительно нужны все листья, которые вы можете указать в функции потомков.
select {} on 0,
descendants([Group].[Group].[All], , LEAVES) on 1
from [Cube]
person
mmarie
schedule
02.12.2013