我有一个关于MDX代码的问题,我试图从我的多维数据集中包含多个帐号的度量中筛选出值,但是,性能太慢而且我还没有找到更好的解决方案比以下。
Filter
(
[Cost Element].[ZCE Level08].[ZCE Level08].ALLMEMBERS
,
Instr
(
[Cost Element].[ZCE.Level08].CurrentMember.Properties('Member_Caption')
,'A12600100'
) = 0
AND
Instr
(
[Cost Element].[ZCE Level08].CurrentMember.Properties('Member_Caption')
,'A12600300'
) = 0
)
此代码实现的目的是过滤掉代码中包含任何帐户的任何行,但它是一个非常大的多维数据集,我必须添加17个帐户,这使得此过滤器实际上很慢有没有更好的解决方案比这个?
先谢谢你们!
答案 0 :(得分:0)
好的有一个更快的方法 - 使用函数EXCEPT
而不是FILTER
并使用实际成员制作一组例外,而不是通过instr
识别它们:
EXCEPT
(
[Cost Element].[ZCE Level08].[ZCE Level08].ALLMEMBERS
,
{
[Cost Element].[ZCE.Level08].[ZCE Level08].[A12600100],
[Cost Element].[ZCE.Level08].[ZCE Level08].[A12600300]
}
)
如果你需要使用FILTER
,那么只是为了摆脱member_caption / instr位应该加快速度:
FILTER
(
[Cost Element].[ZCE Level08].[ZCE Level08].ALLMEMBERS
,
[Cost Element].[ZCE.Level08].CurrentMember
IS NOT [Cost Element].[ZCE.Level08].[ZCE Level08].[A12600100]
AND
[Cost Element].[ZCE.Level08].CurrentMember
IS NOT [Cost Element].[ZCE.Level08].[ZCE Level08].[A12600300]
)