MDX中Filter 与Exist的区别
|
获得一个集合,这个一般用来筛选出一个自定义的set,比如在中国的餐厅
该set返回所有MSDNteam下并且在Fact Thread度量上有记录的products
用Exists实现
select
Exists(
[Dim Queue].[Product - Queue].MEMBERS,
[Dim Engineer].[Team - Engineer].[Team Name].&[MSDN],
"Fact Thread"
)
on 0 from Palladium
用Filter实现
select
Filter
(
([Dim Engineer].[Team - Engineer].[Team Name].&[MSDN],[Dim Queue].[Product - Queue].MEMBERS),
[Measures].[Incoming thread number] > 0
)
on 0 from Palladium
Filter返回的set有两个层次,Queue和Team
Exists返回的set只有Queue这一个层次。Exist返回的结果集比较干净。
但Exists的缺点是只能判断一个度量组在这个维度上是否有值,而不能比较具体的值。
如果我们许多对具体值来过滤,又只想返回某一个维度的set的话,就需要综合这两种做法了。
select
Filter(
Exists(
[Dim Queue].[Product - Queue].MEMBERS,
[Dim Engineer].[Team - Engineer].[Team Name].&[MSDN]
,"Fact Thread"
)
, [Measures].[Incoming thread number] > 0
)
on 0 from Palladium
希望这篇文章能帮到你。