如何有效地编写具有多个OR条件的MDX筛选器语句?
在SQL中,可以将字段与表单中的集合进行比较如何有效地编写具有多个OR条件的MDX筛选器语句?,mdx,Mdx,在SQL中,可以将字段与表单中的集合进行比较 [Foo] In {"Bar1", "Bar2", ... , "BarN"} 但是,我在解决如何将筛选器表达式移动到类似这样的内容时遇到了困难。也就是说,就目前而言,我的结论是: Filter( [MyHierarchy].[Foo].Members, [MyHierarchy].CurentMember.Name = "1" OR [MyHierarchy].CurentMember.Name = "2" ...
[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]
}
)
但是,如果可能的话,在多维数据集计算脚本中已经定义了集合可能会更方便