MDX - последно ниво в кортеж - SSRS Query Designer

Имам такава йерархия на определена група в моя куб (ето изображение: https://imgur.com/ntdOFnF):

1. Group    
1a. Group  
    +Members  
    +Level 02  
    +Level 03  
    +Level 04  
    *Member properties  
    *a  
    *b  
    *c  
    *d

И се чудя как да изведа само последното ниво от тази група. Защото когато напиша[Group] ще имам всички членове от всички нива. Основното условие е да не знам, че последното ниво е Level 04 (може да има повече от 4 нива).

Има ли някаква функция, която трябва да знам?


person Monic    schedule 02.12.2013    source източник


Отговори (1)


Можете да използвате hierarchy.levels.count, за да получите броя на нивата в йерархията, когато имате йерархия с неизвестен/променлив брой нива. Оттам можете да получите най-ниското ниво с функцията Нива. Трябва да извадите единица, защото това е позиция, базирана на нула.

[Group].[Group].Levels([Group].[Group].levels.count-1)

Можете също да направите това с Наследници. Вторият аргумент във функцията descendants е разстояние от посочения член, така че трябва да извадите 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
comment
Втората заявка е най-добра за мен, защото третата заявка ми дава всички листа от всички нива. Например имам такава ситуация, че в Level 02 имам и един лист, който също ще бъде показан - това, което не искам. Но имам друг въпрос (може би е за друга тема). Мога да получа такава ситуация само като използвам този код в режим на проектиране в SSRS. Има ли някаква опция да направите това в дизайнера на заявки? - person Monic; 04.12.2013