我在MDX查询中有以下计算成员:
MEMBER [Asset].[Class].[Fixed Income Derivatives (Inflation Linked)]
AS
(
[Asset].[Class].&[Fixed Income],
[Asset].[Sub Class].&[Derivatives],
[Asset].[Sub Class Type].&[Inflation]
)
这在查询中使用如下:
SELECT
{
[Measures].[Market Value]
} ON 0,
NON EMPTY(
{
[Asset].[Class].[Fixed Income Derivatives (Inflation Linked)]
} ON 1
FROM [Asset]
这很好用,当然也给了我所有与通胀挂钩的固定收益衍生品的市场价值。
我现在尝试添加第二个计算成员,这次是为了给我所有固定收益衍生品,它们 NOT 与通胀挂钩。我觉得这就像第二个成员中的EXCEPT
一样容易:
MEMBER [Asset].[Class].[Fixed Income Derivatives (Non Inflation Linked)]
AS
(
[Asset].[Class].&[Fixed Income],
[Asset].[Sub Class].&[Derivatives],
EXCEPT(
[Asset].[Sub Class Type].[Sub Class Type],
[Asset].[Sub Class Type].&[Inflation]
)
)
唉,没有运气 - 它会产生错误
该函数需要一个字符串或数字表达式 论点。一个元组集表达式 使用
这是一个令人困惑的消息,但在SSAS课程中是相同的。我确定我在正确的轨道上,只是略有错误,但我不能在我的生活中发现问题。
答案 0 :(得分:4)
您只需使用聚合函数即可实现目标,而不会出现错误。
更改您的计算成员定义,如下所示;
MEMBER [Asset].[Class].[Fixed Income Derivatives (Non Inflation Linked)]
AS
(
Aggregate
(
{[Asset].[Class].&[Fixed Income]} *
{[Asset].[Sub Class].&[Derivatives]} *
EXCEPT
(
[Asset].[Sub Class Type].[Sub Class Type],
[Asset].[Sub Class Type].&[Inflation]
)
,Measures.CurrentMember
)
)