2017-08-28 183 views
0

我非常新的MDX的特定成员和我已经写了一个基本的MDX查询返回的量度,以及我的产品尺寸的完整的层次:滤除MDX查询维层次

SELECT {[Measures].[Amount]} on 0, 
{ 
DESCENDANTS([ProductH].[ProductH], [ProductH].[ProductH].[Lvl4], LEAVES) 
} 
ON 1 
FROM 
(
    SELECT 
    {StrToSet('[AccountH].[AccountH].[Lvl1].&[TST17:0]',CONSTRAINED)} ON COLUMNS 
    FROM 
    (
    SELECT 
     {StrToSet('[ProductH].[ProductH].[All]',CONSTRAINED)} ON COLUMNS 
    FROM [Model] 
) 
) 

这将返回我的SSRS报告的结果集,它基本上是用户选择的帐户层次结构中产品维度中所有级别的金额

现在,我想从此集中排除第二级帐户层次结构中的金额特定名称“排除”。 我已经成功地添加使用交叉连接此过滤器和除 - 基于帐户节点的唯一名称:

[AccountH].[AccountH].[Lvl2].&[TST17:0]&[TST17:1000] 

但我要明确基础上,显示的名称过滤掉,删除大量其中:

[AccountH].CURRENTMEMBER.MEMBER_CAPTION = "Exclude" 

如何根据层次结构节点的名称筛选出来?

+0

你尝试过滤功能吗? – whytheq

+0

是的,它同样的问题,似乎我不能指定节点的名称,当我做的节点不被删除 –

回答

0

WHERE子句必须足够:

select 
... 
from [Model] 
where ({[AccountH].[AccountH].Members - [AccountH].[AccountH].[Exclude]}) 
+0

AccountH是一个层次结构,我不能通过使用其可见名称获得“排除”成员作为我明白 –

+0

为什么不呢?请从[型号] –

+0

中选择{[AccountH]。[AccountH] .Members - [AccountH]。[AccountH]。[Exclude]} 0。[AccountH]。[Exclude] works,I get a这个名字的成员。然而,删除成员不起作用,我已经尝试了你的版本和。[Lvl2]规范... –

0

我已经想通了一些帮助,“排除”帐户节点不在层次结构独特,甚至在同一水平(我level2的) ,因此使用EXCEPT()删除它们不起作用。 但是,这是有效的:

Filter([AccountH].[AccountH].[Lvl2]].Members 
     ,[AccountH].[AccountH].CURRENTMEMBER.MEMBER_CAPTION <> "Exclude") 

因为它检查名称。但显然过滤功能是一个缓慢的一个,所以我去交叉加入帐户*产品,然后删除SSRS报告中的“排除”帐户