MDX - 元组中的最后一级 - SSRS查询设计器

时间:2013-12-02 12:04:43

标签: reporting-services mdx

我的多维数据集中有某个组的层次结构(这是一张图片:http://imgur.com/ntdOFnF):

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

我想知道如何仅显示该组的最后一级。因为当我写[Group]时,我将拥有各级别的所有成员。主要条件是我不知道最后一级是Level 04(可能超过4级)。

有什么功能我应该知道吗?

1 个答案:

答案 0 :(得分:4)

如果层次结构具有未知/更改的级别,则可以使用 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]