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

Query returning only the leaf nodes from SSAS Cube using MDX

我需要将生成的叶​​节点的 parent 级列到它们对应的列中,形成一行。

下面的查询return预期结果

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

这个return我格式的结果

My Child | 1234

但我正在寻找类似于

的东西
Parent 5| Parent 4| Parent 3| My Child| 1234

基本上我只需要叶节点

所以我尝试了下面的查询,它执行 return 叶子,但它也包括我不感兴趣的 parents。

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

以上return是格式

的结果
> 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

根据上面的结果我只需要最后一行。当然一种解决方案是将其写入table并过滤掉"null rows"。但是有没有更好的方法只得到叶子呢?

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

我不确定你到底想达到什么目的。如果您只想 return 叶子的值,请尝试以下操作:

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] 

DESCENDANTS 函数中的以下 LEAVES 参数将执行您想要的操作。此函数的文档是 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]