Quantcast
Channel: SQL Server Analysis Services forum
Viewing all articles
Browse latest Browse all 14337

Agregating Non Additive measures for time intelligence

$
0
0

I am using the following script to create time intellingence.  It works well but my calculated measures return bad results.  If the calculated measure does any division when you try to look at chage or change % it fails.  We use Average order balue which is calculated as sales/ordercount.  When I look at prior year change both the change and change % give obivously wrong results.  When I look at total sales which is an additive calculated measure that sums up the various components of the sales value (it is never null) the prior year change works by prior year change % does not.

here is the script for the time intelligence.

CREATE

MEMBERCURRENTCUBE.[Time Calculations].[Prior Year] ASNull;

CREATEMEMBERCURRENTCUBE.[Time Calculations].[Prior Year Chg] ASNull;

CREATEMEMBERCURRENTCUBE.[Time Calculations].[Prior Year Chg %] AS

IIF([Time Calculations].[Prior Year]=0,

NULL,

[Time Calculations].[Prior Year Chg] / [Time Calculations].[Prior Year]),


FORMAT_STRING

="Percent";

   


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[YTD] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[YTD Pr Yr] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[YTD Pr Yr Chg] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[YTD Pr Yr Chg %] AS 

IIF([Time Calculations].[YTD Pr Yr]=0,

NULL,

[Time Calculations].[YTD Pr Yr Chg] / [Time Calculations].[YTD Pr Yr]),


FORMAT_STRING

="Percent";



CREATE

MEMBERCURRENTCUBE.[Time Calculations].[QTD] ASNull;


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[MTD] ASNull;


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[WTD] ASNull;



--*************


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[QTD Pr Yr] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[QTD Pr Yr Chg] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[QTD Pr Yr Chg %] AS 

IIF([Time Calculations].[QTD Pr Yr]=0,

NULL,

[Time Calculations].[QTD Pr Yr Chg] / [Time Calculations].[QTD Pr Yr]),


FORMAT_STRING

="Percent";



CREATE

MEMBERCURRENTCUBE.[Time Calculations].[MTD Pr Yr] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[MTD Pr Yr Chg] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[MTD Pr Yr Chg %] AS

IIF([Time Calculations].[MTD Pr Yr]=0,

NULL,

[Time Calculations].[MTD Pr Yr Chg] / [Time Calculations].[MTD Pr Yr]),


FORMAT_STRING

="Percent";



CREATE

MEMBERCURRENTCUBE.[Time Calculations].[WTD Pr Yr] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[WTD Pr Yr Chg] ASNull


CREATE

MEMBERCURRENTCUBE.[Time Calculations].[WTD Pr Yr Chg %] AS 

IIF([Time Calculations].[WTD Pr Yr]=0,

NULL,

[Time Calculations].[WTD Pr Yr Chg] / [Time Calculations].[WTD Pr Yr]),


FORMAT_STRING

="Percent";


--*************



Scope

([Time].[Fiscal Year].[Fiscal Year].members, [Time].[Date].members);

      

-- PRIOR YEAR CALCULATIONS    


([Time Calculations].[Prior Year]=                 

(ParallelPeriod([Time].[Fiscal-Y-Q-M-W-D].[Fiscal Year], 1,

[Time].[Fiscal-Y-Q-M-W-D].CurrentMember)          ,

[Time Calculations].[Current Period])     ); 



--Year over year change


([Time Calculations].[Prior Year Chg]=

aggregate([Time Calculations].[Current Period]) - aggregate([Time Calculations].[Prior Year]));

 

   

-- YTD CALCULATIONS    


([Time Calculations].[YTD]=       

Aggregate(

              CrossJoin({[Time Calculations].&[Current Period]}, 

               PeriodsToDate(

                [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Year],

                [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))

                )     ); 

-- QTD CALCULATIONS    


([Time Calculations].[QTD]=       

Aggregate(

              CrossJoin({[Time Calculations].&[Current Period]}, 

               PeriodsToDate(

                [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Quarter],

                [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))

                )     );

-- MTD CALCULATIONS    


([Time Calculations].[MTD]=       

Aggregate(

              CrossJoin({[Time Calculations].&[Current Period]}, 

               PeriodsToDate(

                [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Month],

                [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))

                )     );

-- WTD CALCULATIONS    


([Time Calculations].[WTD]=       

Aggregate(

              CrossJoin({[Time Calculations].&[Current Period]}, 

               PeriodsToDate(

                [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Week],

                [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))

                )     );

 


-- YTD PRIOR YEAR CALCULATIONS    


([Time Calculations].[YTD Pr Yr]=        

Aggregate(

               CrossJoin({[Time Calculations].[Current Period]},

               PeriodsToDate(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Year],

               ParallelPeriod(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Year],1,

               [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))) 

               )     );    


--YTD Change


([Time Calculations].[YTD Pr Yr Chg] =

  [Time Calculations].[YTD] - [Time Calculations].[YTD Pr Yr]);



--*****************

-- QTD PRIOR YEAR CALCULATIONS    


([Time Calculations].[QTD Pr Yr]=        

Aggregate(

               CrossJoin({[Time Calculations].[Current Period]},

               PeriodsToDate(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Quarter],

               ParallelPeriod(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Year],1,

               [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))) 

               )     );    


--QTD Change%


([Time Calculations].[QTD Pr Yr Chg] =

  [Time Calculations].[QTD] - [Time Calculations].[QTD Pr Yr]);



-- MTD PRIOR YEAR CALCULATIONS    


([Time Calculations].[MTD Pr Yr]=        

Aggregate(

               CrossJoin({[Time Calculations].[Current Period]},

               PeriodsToDate(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Month],

               ParallelPeriod(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Year],1,

               [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))) 

               )     );    


--QTD Change%


([Time Calculations].[MTD Pr Yr Chg] =

  [Time Calculations].[MTD] - [Time Calculations].[MTD Pr Yr]);



--*

-- QTD PRIOR YEAR CALCULATIONS    


([Time Calculations].[WTD Pr Yr]=        

Aggregate(

               CrossJoin({[Time Calculations].[Current Period]},

               PeriodsToDate(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Week],

               ParallelPeriod(

               [Time].[Fiscal-Y-Q-M-W-D].[Fiscal Year],1,

               [Time].[Fiscal-Y-Q-M-W-D].CurrentMember))) 

               )     );    


--QTD Change%


([Time Calculations].[WTD Pr Yr Chg] =

  [Time Calculations].[WTD] - [Time Calculations].[WTD Pr Yr]);


--*****************



End

Scope


Viewing all articles
Browse latest Browse all 14337

Trending Articles