使用 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]
我需要将生成的叶节点的 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]