Filter 在MDX中添加多个计算过滤器

Filter 在MDX中添加多个计算过滤器,filter,ssas,mdx,Filter,Ssas,Mdx,我对MDX真的很陌生,但我花了两天时间寻找答案,但都失败了。所以我非常感谢你的帮助和耐心 我试图用多维过滤器查询一个立方体,我意识到已经有很多类似的问题,比如or 问题是,我没有指定我要查找的特定内容,而是尝试设置过滤器,以拾取以特定字符串开头的所有记录。这需要过滤器中的left函数(即计算过滤器?),但我无法将它们很好地混合到代码中 我的失败代码如下所示(两个过滤器应处于和关系中) (我的试验基于最后一个答案。) 我还了解到有一些解决方法,如使用聚合或子选择,交叉连接,但我不知道1)如何将条件

我对MDX真的很陌生,但我花了两天时间寻找答案,但都失败了。所以我非常感谢你的帮助和耐心

我试图用多维过滤器查询一个立方体,我意识到已经有很多类似的问题,比如or

问题是,我没有指定我要查找的特定内容,而是尝试设置过滤器,以拾取以特定字符串开头的所有记录。这需要过滤器中的
left
函数(即计算过滤器?),但我无法将它们很好地混合到代码中

我的失败代码如下所示(两个过滤器应处于
关系中)

(我的试验基于最后一个答案。)

我还了解到有一些解决方法,如使用
聚合
或子
选择,交叉连接
,但我不知道1)如何将条件合并到内部;2) 性能(我听说,
CROSSJOIN
可能很慢)

我不确定我是否应该在这里提到它,但我实际上是通过使用
ADOMB.Cellset
对象从ExcelVBA实现MDX的。它只给出我在
Cellset.Items(0)
下实现的查询的总数(没有更多的项)


谢谢大家!

您需要将两个集合拆分为两个过滤器:

Select 
Non Empty [Measures].[Sales] on 0
From [Cube_Name]
Where
(
    Filter(
        [Customer].[CustomerID].[CustomerID].Members, 
        Left(
            [Customer].[CustomerID].CurrentMember.Name,
            4
        ) = "ABCD"
    ),
    Filter(
        [Product].[ProductID].[ProductID].Members, 
        Left(
            [Product].[ProductID].CurrentMember.Name,
            3
        ) = "EFG"
    )
)

谢谢你,丹妮洛!你的代码工作得很好!您介意再告诉我一件关于如何在筛选器中合并OR子句的事情吗?我试图将第二个筛选器修改为
筛选器([Product].[ProductID].[ProductID]。成员,左([Product].[ProductID].CurrentMember.Name,3)=“EFG”或左([Product].[ProductID].CurrentMember.Name,3)=“HIJ”)
。非常感谢。很抱歉,或连词似乎有效。这只是我的一个打字错误导致了错误信息。但再次感谢您及时准确的回复!
Select 
Non Empty [Measures].[Sales] on 0
From [Cube_Name]
Where
(
    Filter(
        [Customer].[CustomerID].[CustomerID].Members, 
        Left(
            [Customer].[CustomerID].CurrentMember.Name,
            4
        ) = "ABCD"
    ),
    Filter(
        [Product].[ProductID].[ProductID].Members, 
        Left(
            [Product].[ProductID].CurrentMember.Name,
            3
        ) = "EFG"
    )
)