如何有效地编写具有多个OR条件的MDX筛选器语句?

如何有效地编写具有多个OR条件的MDX筛选器语句?,mdx,Mdx,在SQL中,可以将字段与表单中的集合进行比较 [Foo] In {"Bar1", "Bar2", ... , "BarN"} 但是,我在解决如何将筛选器表达式移动到类似这样的内容时遇到了困难。也就是说,就目前而言,我的结论是: Filter( [MyHierarchy].[Foo].Members, [MyHierarchy].CurentMember.Name = "1" OR [MyHierarchy].CurentMember.Name = "2" ...

在SQL中,可以将字段与表单中的集合进行比较

[Foo] In {"Bar1", "Bar2", ... , "BarN"}
但是,我在解决如何将筛选器表达式移动到类似这样的内容时遇到了困难。也就是说,就目前而言,我的结论是:

Filter(
    [MyHierarchy].[Foo].Members,
    [MyHierarchy].CurentMember.Name = "1"
    OR [MyHierarchy].CurentMember.Name = "2"
    ...
    OR [MyHierarchy].CurentMember.Name = "N"
)
因为我有20-30个比较,而且继承人名称的变化几率不大,所以我更愿意维护一个集合和层次名称,而不是一个长表达式。有没有办法做到这一点


值得注意的是,上下文是一个Excel CubeSet函数,因此我在WITH子句中定义自己的成员时有点受限。

假设您有一个名为
SelectedMembers
的集合,您可以使用

Intersect([MyHierarchy].[Foo].Members, [SelectedMembers])
当然,你也可以直接编写代码。e

Intersect([MyHierarchy].[Foo].Members,
          {
           [MyHierarchy].[Foo].[1],
           [MyHierarchy].[Foo].[2],
           ...
           [MyHierarchy].[Foo].[N]
          }
         )
但是,如果可能的话,在多维数据集计算脚本中已经定义了集合可能会更方便