在 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"

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

Where 子句必须足够:

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

我已经在一些帮助下弄清楚了,"排除"帐户节点在层次结构中并不是唯一的,即使在同一级别(对我来说是 level2),因此使用 EXCEPT() 删除它们不起作用。 但是,这有效:

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

因为它检查名称。但显然过滤功能很慢,所以我使用交叉联接帐户 * 产品,然后删除 SSRS 报告中的"排除"帐户

最新更新