Quantcast
Channel: SCN : Blog List - SAP HANA Developer Center
Viewing all articles
Browse latest Browse all 676

Using Table Functions to Model Y2Y CM / YTD Comparison Calculation View

$
0
0

Lets say you have Year to Year Current Month / Year to Date Comparison reporting requirement. Calculation View should take Month as an input parameter and calculate Current Month, Last Year Current Month, Year to Date and Last Year to Date Net Sales on Country level.

Input Parameter.jpgY2Y_CM_YTD.jpg

Using Table Functions makes modeling for this requirement easy. Calculation Model uses 4 Table Functions e.g. one for each measure (CM, LYCM, CYTD and LYTD Net Sales). Each Table Functions takes IP_CALMONTH as an input and returns a set of dates. Table Functions are used in Join Nodes to limit sales data respectively to CM, LYCM, CYTD or LYTD Net Sales.

 

Most important modeling aspect are listed below:

 

 

 

Generate Time Data with Day Granularity

Generate Time Data 1 of 2.jpg

In our case from 2013 to 2014

Generate Time Data 2 of 2.jpg



Define Table Functions

 

CM:

 

FUNCTION"WORKSHOP"."workshop.00::CM" ( IN_CALMONTHVARCHAR(6) )

RETURNSTABLE ( DATE_SQLDATE )

      LANGUAGESQLSCRIPT

      SQLSECURITYINVOKERAS

BEGIN

 

  RETURNSELECTDATE_SQLFROM"_SYS_BI"."M_TIME_DIMENSION"WHERECALMONTH = :IN_CALMONTH;

 

END;

CM.jpg

 

LYCM:

 

FUNCTION"WORKSHOP"."workshop.00::LYCM" ( IN_CALMONTHVARCHAR(6) )

RETURNSTABLE( DATE_SQLDATE )

      LANGUAGESQLSCRIPT

      SQLSECURITYINVOKERAS

BEGIN

 

  DECLARECALMONTHVARCHAR(6);

  DECLAREMONTHVARCHAR(2);

  DECLAREYEARVARCHAR(4);

 

  YEAR :=LEFT(IN_CALMONTH,4);

  YEAR :=YEAR - 1;

  MONTH :=RIGHT(IN_CALMONTH,2); 

  CALMONTH :=CONCAT(:YEAR,:MONTH);

  

  RETURNSELECTDATE_SQLFROM"_SYS_BI"."M_TIME_DIMENSION"WHERECALMONTH= :CALMONTH;

 

END;

LYCM.jpg

CYTD:

 

FUNCTION"WORKSHOP"."workshop.00::CYTD" ( IN_CALMONTHVARCHAR(6) )

RETURNSTABLE ( DATE_SQLDATE )

      LANGUAGESQLSCRIPT

      SQLSECURITYINVOKERAS

BEGIN

 

  DECLARECALMONTHVARCHAR(6);

  DECLAREYEARVARCHAR(4);

 

  YEAR := LEFT(IN_CALMONTH,4);

  CALMONTH := CONCAT(:YEAR,'01');

  

  RETURNSELECTDATE_SQLFROM"_SYS_BI"."M_TIME_DIMENSION"WHERECALMONTHBETWEEN :CALMONTHAND :IN_CALMONTH;

 

END;

CYTD.jpg

LYTD:

 

FUNCTION"WORKSHOP"."workshop.00::LYTD" ( IN_CALMONTHVARCHAR(6) )

RETURNSTABLE( DATE_SQLDATE )

      LANGUAGESQLSCRIPT

      SQLSECURITYINVOKERAS

BEGIN

 

  DECLARECALMONTH_FROMVARCHAR(6);

  DECLARECALMONTH_TOVARCHAR(6);

  DECLAREYEARVARCHAR(4);

  DECLAREMONTHVARCHAR(2);

 

  YEAR :=LEFT(IN_CALMONTH,4);

  YEAR :=YEAR - 1;

  MONTH :=RIGHT(IN_CALMONTH,2);

  CALMONTH_FROM := CONCAT(:YEAR,'01');

  CALMONTH_TO   := CONCAT(:YEAR,:MONTH);

  

  RETURNSELECTDATE_SQLFROM"_SYS_BI"."M_TIME_DIMENSION"WHERECALMONTHBETWEEN :CALMONTH_FROMAND :CALMONTH_TO;

 

END;

LYTD.jpg

 

Use Table Functions in Joins Nodes to limit data

 

Join_SO_CM 1 of 2.jpg

Join_SO_CM 2 of 2.jpg

Similary defined Join Nodes for LYCM, CYTD and LYTD Measures

 

 

 

Map Calculation View Input Parameter into Table Functions Input Parameters

 

Manage Mappings.jpg


Viewing all articles
Browse latest Browse all 676

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>