代码之家  ›  专栏  ›  技术社区  ›  asb

使用MDX仅从SSAS多维数据集中返回叶节点的查询

  •  3
  • asb  · 技术社区  · 8 年前

    我需要将结果叶节点的父级列在相应的列中,列在一行中。

    下面的查询返回预期结果

      SELECT NON EMPTY { [Measures].[Value] } ON COLUMNS, 
        NON EMPTY { ([Account].[Account List].[Account List].ALLMEMBERS ) } 
            DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [My Cube]
    

    这将返回格式的结果

    My Child | 1234
    

    但我要找的是

    Parent 5| Parent 4| Parent 3| My Child| 1234
    

    基本上我需要叶节点 仅限

    所以我尝试了下面的查询,它确实返回了叶子,但它也包含了我不感兴趣的父元素。

     SELECT NON EMPTY { [Measures].[Value] } ON COLUMNS, 
        NON EMPTY { (DESCENDANTS([Account].[Account].[Level 02].ALLMEMBERS) ) } 
            DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [My Cube] 
    

    以上返回格式的结果

    > Parent 5| Null| Null| Null| 1
    > Parent 5| Parent 4| Null| Null| 12
    > Parent 5| Parent 4| Parent 3| Null| 123
    > Parent 5| Parent 4| Parent 3|My Child| 1234
    

    根据以上结果,我只需要最后一行。当然,一种解决方案是将其写入表并过滤掉“空行”。但是,有没有更好的方法只获取叶子呢?

    仅供参考,我们的解决方案是使用SSIS使用MDX查询Olap并将其提取到二维表中。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Community Mohan Dere    4 年前

    以下内容 LEAVES 中的参数 DESCENDANTS 函数将执行您想要的操作。此功能的文档是 here :

    SELECT NON EMPTY { [Measures].[Value] } ON COLUMNS, 
        NON EMPTY { DESCENDANTS([Account].[Account].[Level 02].ALLMEMBERS, , LEAVES) } 
            DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [My Cube] 
    
        2
  •  1
  •   Danylo Korostil    8 年前

    我不知道你到底想达到什么目的。如果只想返回leafs的值,请尝试以下操作:

    With 
    Member [Measures].[ValueLeaf] as
    IIF(IsLeaf([Account].[Accounts].CurrentMember),[Measures].[Value],Null)
    
    Select 
    Non Empty [Measures].[ValueLeaf] on 0, 
    Non Empty Descendants([Account].[Account].[Level 02].ALLMEMBERS) DIMENSION PROPERTIES MEMBER_CAPTION on 1 
    From [My Cube]