我应该如何有效地编写具有多个OR条件的MDX Filter语句?

时间:2014-04-24 09:25:02

标签: mdx

在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个比较,并且heirarchy名称有可能发生变化,我更倾向于维护集合和层次结构名称而不是长表达式。有没有办法实现这个目标?

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

1 个答案:

答案 0 :(得分:0)

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

Intersect([MyHierarchy].[Foo].Members, [SelectedMembers])

你当然也可以直接编码,i。即

Intersect([MyHierarchy].[Foo].Members,
          {
           [MyHierarchy].[Foo].[1],
           [MyHierarchy].[Foo].[2],
           ...
           [MyHierarchy].[Foo].[N]
          }
         )

但是在多维数据集计算脚本中定义集合可能更方便 - 如果可行的话。