SQL Server中MDX多成员过滤失效问题求助
解决MDX多BSCID成员过滤的问题
嗨,我来帮你搞定这个MDX的过滤问题~你之前的写法不对是因为[Dim BSC].[BSCID].&[1,2]并不是表示匹配键为1和2的两个成员,而是在找键值是"1,2"的单个成员,自然就返回空结果啦。下面给你几种正确的多成员过滤写法:
方法1:使用IN运算符(最推荐)
把需要匹配的成员放在一个集合里,用IN判断当前成员是否属于这个集合,写法简洁直观:
FILTER( [Dim BSC].[BSCID].CHILDREN, [Dim BSC].[BSCID].CURRENTMEMBER IN {[Dim BSC].[BSCID].&[1], [Dim BSC].[BSCID].&[2]} )
方法2:用OR连接多个等于条件
如果成员数量不多,也可以直接用逻辑或来逐个判断:
FILTER( [Dim BSC].[BSCID].CHILDREN, [Dim BSC].[BSCID].CURRENTMEMBER = [Dim BSC].[BSCID].&[1] OR [Dim BSC].[BSCID].CURRENTMEMBER = [Dim BSC].[BSCID].&[2] )
方法3:直接指定成员集合(更高效)
如果你只是要获取这两个特定的子成员,其实完全不需要用FILTER,直接构造集合就行,这样比遍历所有子成员的FILTER效率更高:
{[Dim BSC].[BSCID].&[1], [Dim BSC].[BSCID].&[2]}
当然,如果你的过滤逻辑还有其他附加条件,那还是用前两种结合FILTER的方式更合适。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

