SSAS计算与除法结合时间计算

时间:2015-09-17 14:28:39

标签: ssas mdx cube-script

情况: 我通过在多维数据集中创建空度量并使用范围语句来填充计算,在SQL Server 2012 SSAS多维模型中创建了calcalated度量。 (所以我可以在计算中使用度量安全性as explained here

SCOPE [Measures].[C];
THIS = IIF([B]=0,0,[Measures].[A]/[Measures].[B]);

我还做了一个时间计算,我将整个测量组的范围包括上面的计算。 (as explained here

我为计算创建了空成员:

    --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%(jan,feb等为5%),其必须为5%

我的问题: 如何更改时间计算或“计算出的度量”,以便得到正确的结果?

0 个答案:

没有答案