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

Posted

技术标签:

【中文标题】如果当前成员有孩子,则展开用户层次结构 - MDX【英文标题】:Expand user hierarchy if current member has children - MDX 【发布时间】:2013-08-05 09:48:45 【问题描述】:

我有一个用户层次结构,只有当用户有孩子时,我才想展开和向下钻取。如果层次结构中的成员没有孩子,我想隐藏这个成员。

以下查询获取层次结构中处于第 1 级的所有人员,但我只想显示至少有一个子成员的人员。

成员 [Test] 为“0” 选择 [测试] 在列上,非空 ( [Dim User].[UserHierarchy].[UserLevel1].AllMembers ) 维度属性 MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM [活动]

我怎样才能做到这一点?用户层次结构参差不齐。

【问题讨论】:

【参考方案1】:
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]

【讨论】:

感谢您的回答比尔。如果我想显示层次结构,例如从 Level1 到 Level8,我将如何将您的答案塑造成向我展示父母的完整层次结构?您的答案是否会仅隐藏层次结构中的成员,但他们的数字仍会显示在度量中?【参考方案2】:

对于其他有同样问题,并且追求excel那种效果的人,用户层次结构的维度只为父母扩展,这是这样做的:

和 成员[措施]。[测试] AS 0 选择 [测试] 开 0, 非空 筛选 ( [dim user].[userhierarchy].[userlevel1].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel2].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel3].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel4].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel5].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel6].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel7].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel8].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel9].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ), 筛选 ( [dim user].[userhierarchy].[userlevel10].allmembers ,[dim user].[userhierarchy].currentmember.children.count > 1 ) 开 1 FROM [活动]

查询将自动检查用户层次结构,并自动下降到必要的级别。感谢 Bill 提出他的解决方案并让我走上正轨。

【讨论】:

以上是关于如果当前成员有孩子,则展开用户层次结构 - MDX的主要内容,如果未能解决你的问题,请参考以下文章

MDX IIF 语句根据度量和层次结构叶计算新成员

MDX 计算成员不允许多个层次结构元组

如何使用 MDX 获取不可见属性和用户定义的层次结构的名称?

SSAS MDX WHERE 子句语法 - 从同一层次结构中过滤多个值

使用 MDX 从层次结构中获取当前会计年度

MDX 获取层次结构值