简体   繁体   English

如果当前成员有子级,则扩展用户层次结构-MDX

[英]Expand user hierarchy if current member has children - MDX

I have a user hierarchy, and I would like to expand and drill down only if the user has children. 我具有用户层次结构,并且仅当用户有子级时,我才想扩展和向下钻取。 If the member in the hierarchy does not have children, I would like to hide this member. 如果层次结构中的成员没有子代,我想隐藏该成员。

The following query gets all those who are on level 1 in the hiearchy, but I would like to show only those which have at least a child member. 下面的查询将获取所有位于层次1中的人,但是我只想显示那些至少具有子成员的人。

with member [Test] as '0'
SELECT
{ [Test] } ON COLUMNS, non empty
{ 
 ( 

  [Dim User].[UserHierarchy].[UserLevel1].AllMembers 

 )
}Dimension Properties MEMBER_CAPTION,
MEMBER_UNIQUE_NAME ON ROWS
FROM   [Activities]

How can I achieve this? 我该如何实现? The user hierarchy is a ragged one. 用户层次结构参差不齐。

WITH 
    MEMBER [Measures].[Test] AS
        0
SELECT
    { 
         [Test]
    } ON 0, 
    NON EMPTY { 
        FILTER (
             [Dim User].[UserHierarchy].[UserLevel1].AllMembers
            ,[Dim User].[UserHierarchy].CurrentMember.Children.Count > 0
        )
    } ON 1
FROM   [Activities]

For others who have the same problem, and are after the excel kind of effect, where the dimension of the user hierarchy is only expanded for parents, this is the way to do it: 对于其他具有相同问题并具有excel效果的用户(仅针对父级扩展用户层次结构的维度),这是这样做的方法:

WITH 
    MEMBER [Measures].[Test] AS
        0
SELECT
    { 
         [Test]
    } ON 0, 
    NON EMPTY { 
        filter (
            {[dim user].[userhierarchy].[userlevel1].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel2].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel3].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel4].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel5].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel6].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel7].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel8].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel9].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        ),
        filter (
            {[dim user].[userhierarchy].[userlevel10].allmembers  }
            ,[dim user].[userhierarchy].currentmember.children.count > 1
        )
    } ON 1
FROM   [Activities]

The query will automatically check the user hierarchy, and go down to the necessary levels automatically. 该查询将自动检查用户层次结构,并自动降至所需级别。 Thanks to Bill for suggesting his solution and putting me on the right track. 感谢比尔提出他的解决方案并让我走上正确的道路。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM