状況: SQL Server 2012 SSAS 多次元モデルで、キューブに空のメジャーを作成し、スコープ ステートメントを使用して計算を入力することにより、計算されたメジャーを作成しました。(したがって、ここで説明されているように、計算でセキュリティ対策を使用できます)
SCOPE [Measures].[C];
THIS = IIF([B]=0,0,[Measures].[A]/[Measures].[B]);
また、上記の計算を含むメジャー グループ全体を対象とした時間計算も行いました。(ここで説明されているように)
計算用に空のメンバーを作成します。
--YTD Calculations
CREATE MEMBER CURRENTCUBE.[Calender Calculations].[YTD-1] AS NULL;
CREATE MEMBER CURRENTCUBE.[Calender Calculations].[YTD] AS NULL;
-- MOVING ANNUAL TOTAL Calculations
CREATE MEMBER CURRENTCUBE.[Calender Calculations].[MAT-1] AS NULL;
CREATE MEMBER CURRENTCUBE.[Calender Calculations].[MAT] AS NULL;
--SCOPE MEASUREGROUPMEASURES
I scope the measuregroup on which the calculations will be performed:
SCOPE (MeasureGroupMeasures("Sales")
);
Next I scope the time calculations for the different Time Hierarchys:
SCOPE ([Calender].[Jaar].[Jaar].members,[Calender].[Calender ID].members);
--YTD
([Calender Calculations].[YTD]=
Aggregate(
CrossJoin({[Calender Calculations].[Current Period]},
PeriodsToDate(
[Calender].[Month Hierarchy].[Jaar],
[Calender].[Month Hierarchy].CurrentMember))
)
);
--YTD -1
([Calender Calculations].[YTD-1]=
Aggregate(
Crossjoin({[Calender Calculations].[Current Period]},
PeriodsToDate(
[Calender].[Month Hierarchy].[Jaar],
ParallelPeriod(
[Calender].[Month Hierarchy].[Jaar],1,
[Calender].[Month Hierarchy].CurrentMember))
)
));
--MAT
([Calender Calculations].[MAT]=
Aggregate(
CrossJoin({[Calender Calculations].&[Current Period]},
ParallelPeriod([Calender].[Month Hierarchy].[Month],11,[Calender].[Month Hierarchy].CurrentMember) :
[Calender].[Month Hierarchy].CurrentMember
)));
--MAT-1
([Calender Calculations].[MAT-1]=
Aggregate(
CrossJoin({[Calender Calculations].&[Current Period]},
ParallelPeriod([Calender].[Month Hierarchy].[Month],23,[Calender]. [Month Hierarchy].CurrentMember) :
ParallelPeriod([Calender].[Month Hierarchy].[Month],12,[Calender].[Month Hierarchy].CurrentMember)
)));
--SCOPE Calendar END
END SCOPE;
メジャー グループ スコープを閉じる
--SCOPE MEASUREGROUPMEASURES END
END SCOPE;
結果: 「ベース メジャー」と「計算されたメジャー」を使用してキューブをクエリすると、時間計算の結果はベース メジャーでは正しいが、「計算されたメジャー」 C では正しくない。これは、メジャーが最初に計算され、その後で取得されるため時間計算が行われ、結果が集計されます。
例: 現在の月は 2015 年 4 月です。毎月のスコアは 5% です。YTD メジャーは 20% (1 月、2 月などは 5%) を示します。これは 5% である必要があります。
私の質問: 正しい結果が得られるように、時間計算または「計算メジャー」を変更するにはどうすればよいですか?