我有两个维度和一个度量组:[时间]。[日],[场景]。[场景]和包含两个度量的度量组,[度量]。[CleanPrice]和[Measures]。[DirtyPrice ]
我从以下结果开始,效果很好:
01-01-2011 01-01-2012
Base CleanPrice 100 100
Base DirtyPrice 100 100
Up1% CleanPrice 101 101
Up1% DirtyPrice 101 101
我 想要生成的是计算成员以显示度量,以及当前场景和Base场景之间的差异。
期望的结果应如下所示:
01-01-2011 01-01-2012
Base CleanPrice Value 100 100
Base CleanPrice Delta 0 0
Base DirtyPrice Value 100 100
Base DirtyPrice Delta 0 0
Up1% CleanPrice Value 101 101
Up1% CleanPrice Delta 1 1
Up1% DirtyPrice Value 101 101
Up1% DirtyPrice Delta 1 1
我尝试过这样的事情,但是无法跨越联接度量值组:
WITH MEMBER [Value] as [Measures].CurrentMember
MEMBER [Delta] as [Measures].CurrentMember - ([Scenario].[Scenario].&[0], [Measures].CurrentMember)
SELECT NON EMPTY
{ [Time].[Day].&[2011-01-01T00:00:00], [Time].[Day].&[2012-01-01T00:00:00] }
ON COLUMNS,
{ [Scenario].[Scenario].&[0], [Scenario].[Scenario].&[1] } *
{ [Measures].[CleanPrice], [Measures].[DirtyPrice] } *
{ [Value], [Delta] }
ON ROWS
FROM Results
我创建了两个计算成员,[Value]只是当前度量,而[Δ]用于获取当前度量,并获得该度量与基本场景的差异。
我想加入具有清洁价格和脏价的度量组,以及两个计算成员的度量组,但这是不可能的。
有没有办法产生预期的结果?我想避免创建措施[CleanPrice Delta]和[DirtyPrice Delta],因为我实际上有很多这些措施。
答案 0 :(得分:1)
一种方法是创建一个新维度,例如[Metric]
,其中包含两个成员[Value]
和[Delta]
。然后沿着以下行将MDX写入计算脚本:
SCOPE ([Metric].[Delta], [Scenario].[Scenario].[Scenario]);
this = ([Metric].[Value], [Scenario].[Scenario].currentmember)
- ([Metric].[Value], [Scenario].[Scenario].&[0]);
END SCOPE;
然后,这将自动处理链接到[Scenario]
维度的所有度量。