我想做这样的事情(tsql):
select saldi
where rek in (4,8)
and rek5 <> 41111
and rek3 not in (a,b,c)
在MDX之后,过滤器(4,8)&lt;&gt; 41111,无法正常工作。如果我删除了41111过滤器,该测量工作正常,只显示4/8。将41111添加为&#39;&lt;&gt;&#39;过滤器,结果为空白,甚至不是0.00。
THIS = IIF(
( [Rekeningen].[Rek n1].CurrentMember = [Rekeningen].[Rek n1].&[4]
or [Rekeningen].[Rek n1].CurrentMember = [Rekeningen].[Rek n1].&[8] )
and [Rekeningen].[Rek n5].CurrentMember <> [Rekeningen].[Rek n5].&[41111]
,
[Measures].[Saldi], 0.00
);
我试过谷歌,但似乎没有把关键字弄好。在social.msdn.microsoft.com上,很多反应被标记为答案,但到目前为止对我来说并非如此。 部署ssas cube工作正常,没有错误。
有人能指出我正确的方向吗?我尝试Except,但该命令似乎不适用于多字段(rek3 / rek5)。
答案 0 :(得分:0)
IS
和NOT IS
。这给了我们这个:
THIS =
IIF
(
(
[Rekeningen].[Rek n1].CurrentMember IS [Rekeningen].[Rek n1].&[4]
OR
[Rekeningen].[Rek n1].CurrentMember is [Rekeningen].[Rek n1].&[8]
)
AND
[Rekeningen].[Rek n5].CurrentMember IS NOT [Rekeningen].[Rek n5].&[41111]
,[Measures].[Saldi]
,0
);
而不是0
您应该几乎总是在多维数据集脚本计算中使用null
,否则您将会扼杀性能:
THIS =
IIF
(
(
[Rekeningen].[Rek n1].CurrentMember IS [Rekeningen].[Rek n1].&[4]
OR
[Rekeningen].[Rek n1].CurrentMember is [Rekeningen].[Rek n1].&[8]
)
AND
[Rekeningen].[Rek n5].CurrentMember IS NOT [Rekeningen].[Rek n5].&[41111]
,[Measures].[Saldi]
,NULL
);
我不相信这些会员名字? [Rekeningen].[Rek n1].CurrentMember
和[Rekeningen].[Rek n1].&[4]
。让我补充一下我认为可能存在的两种选择:
1
THIS =
IIF
(
(
[Rekeningen].[Rek n1].CurrentMember IS [Rekeningen].[Rek n1].[Rek n1].&[4]
OR
[Rekeningen].[Rek n1].CurrentMember is [Rekeningen].[Rek n1].[Rek n1].&[8]
)
AND
[Rekeningen].[Rek n5].CurrentMember IS NOT [Rekeningen].[Rek n5].[Rek n5].&[41111]
,[Measures].[Saldi]
,NULL
);
或
2
THIS =
IIF
(
(
[Rekeningen].CurrentMember IS [Rekeningen].[Rek n1].&[4]
OR
[Rekeningen].CurrentMember is [Rekeningen].[Rek n1].&[8]
)
AND
[Rekeningen].CurrentMember IS NOT [Rekeningen].[Rek n5].&[41111]
,[Measures].[Saldi]
,NULL
);