我的多维数据集中有某个组的层次结构(这是一张图片: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级)。
有什么功能我应该知道吗?
答案 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]