我需要将结果叶节点的父级别列入其对应的列中。
以下查询返回预期结果
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
从上面的结果我只需要最后一行。当然,一种解决方案是将其写入表并过滤掉" null行"。但是,有没有更好的方法来获得叶子?
只是fyi,我们的解决方案是使用SSIS使用MDX查询Olap并将其提取到二维表。
答案 0 :(得分:3)
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]
答案 1 :(得分:1)
我不确定你到底要做的是什么。如果要仅返回叶子的值,请尝试以下操作:
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]