SSAS MDX 计算过滤器
SSAS MDX calculation filter
我想做这样的事情 (tsql):
select saldi
where rek in (4,8)
and rek5 <> 41111
and rek3 not in (a,b,c)
在 MDX 之后,过滤器 (4,8) <> 41111 不起作用。如果我删除 41111 过滤器,测量工作正常,只显示 4/8。添加 41111 作为“<>”过滤器,结果为空,甚至不是 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
);
我尝试了 Google,但似乎没有找到正确的关键字。在 social.msdn.microsoft.com 上,很多反应都被标记为答案,但到目前为止对我来说还没有。
部署 ssas 多维数据集工作正常,没有错误。
任何人都可以指出我正确的方向吗?我试过 Except,但该命令似乎不适用于多字段 (rek3/rek5)。
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
);
我想做这样的事情 (tsql):
select saldi
where rek in (4,8)
and rek5 <> 41111
and rek3 not in (a,b,c)
在 MDX 之后,过滤器 (4,8) <> 41111 不起作用。如果我删除 41111 过滤器,测量工作正常,只显示 4/8。添加 41111 作为“<>”过滤器,结果为空,甚至不是 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
);
我尝试了 Google,但似乎没有找到正确的关键字。在 social.msdn.microsoft.com 上,很多反应都被标记为答案,但到目前为止对我来说还没有。 部署 ssas 多维数据集工作正常,没有错误。
任何人都可以指出我正确的方向吗?我试过 Except,但该命令似乎不适用于多字段 (rek3/rek5)。
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
);