Sample 15-C: Rows of Averages
This Essbase report script sample restricts columns during calculation to average rows that contain partly numbers and percentages.
The report must calculate the total regional average percentages using previously calculated rows that contain the total sales for the region. Also, the report must compute (for averaging) a count of regions. The number of regions is set as a constant in the cube outline. If this number changes, the report definition must be modified. If a count of regions is not computed, a hard-to-notice error can result.
Actual Total Sales for the 3 Video Products in Qtr1: 36,914 35,126 25,119
Budget Total Sales for the 3 Video Products in Qtr1: 37,300 34,250 26,940
================================================== ====== ====== ======
Qtr1
Television VCR Camera
Profit Profit_% Profit Profit_% Profit Profit_%
====== ======= ====== ======== ====== =========
New_York Budget 1,020 20.40% 1,382 31.41% 540 16.68%
Actual 847 17.66% 1,243 29.62% 352 11.79%
Boston Budget 1,020 24.88% 1,344 35.37% 277 11.79%
Actual 1,405 33.48% 1,002 27.49% 207 9.28%
Chicago Budget 1,100 25.58% 1,062 31.24% 430 16.54%
Actual 728 16.51% 1,190 30.68% 369 14.72%
San_Fran~ Budget 930 21.63% 718 21.12% 1,270 31.75
Actual 674 15.54% 1,197 31.12% 1,000 27.4%
Seattle Budget 390 15.60% 973 32.98% 376 16.00%
Actual 340 12.20% 977 31.56% 312 13.79%
Denver Budget 690 22.26% 929 30.97% 462 18.86%
Actual 334 11.94% 914 30.48% 361 15.92%
Los_Ange~ Budget 810 18.41% 1,101 29.76% 506 18.40%
Actual 429 9.11% 1,127 28.81% 377 14.62%
Dallas Budget 780 21.08% 1,341 36.24% 333 13.88%
Actual 163 4.69% 1,055 30.28% 243 10.71%
Houston Budget 690 24.64% 1,128 36.39% 432 18.00%
Actual 256 10.44% 1,064 34.98% 241 10.98%
Phoenix Budget 630 20.32% 894 31.93% 498 20.75%
Actual 251 8.49% 940 31.07% 261 11.99%
Total Regions Averages
Avg Budget 806 21.61% 1,087 31.74% 512 19.02%
Avg Actual 543 14.70% 1,071 30.49% 372 14.82%
Use the following script to create Sample 15-C:
{ // Declare some of the Calculated Rows to be used
CALCULATE ROW "Avg~Budget" OFF
CALCULATE ROW "Avg~Actual" OFF
CALCULATE ROW "Tot Sales~Budget" OFF
CALCULATE ROW "Tot Sales~Actual" OFF
}
// We need the values of Market->Visual->Qtr1->Sales->Actual and
// Market ->Visual->Qtr1->Sales ->Budget to compute some
// percentages at the bottom, so get them now
Market
<CHILDREN Visual Qtr1 Sales
{ SAVEROW "Actual Sales" } Actual // stores into first 3
// data columns
{ SAVEROW "Budget Sales" } Budget // of these rows, which
// are cols 1-3
// change to columns 2-4 when we
// specify 2 row dimensions in
// next section
// Since this is an example, not a formal report, we'll
// type out the values for Actual Sales and Budget Sales here so
// you can check the numbers:
{ SKIP 2
TEXT 0 "Actual Total Sales for the 3 Video Products in Qtr1:" 55 "*CALC" "Actual Sales"
TEXT 0 "Budget Total Sales for the 3 Video Products in Qtr1:" 55 "*CALC" "Budget Sales"
UCHARACTERS
SKIP 5 }
! // Now we can do the main report
{ AFTER "%" 3,5,7 DECI 2 3,5,7 ZEROTEXT "--" MISSING "--"
WIDTH 10 0 1 }
<PAGE(Year)
Qtr1
<COLUMN(Product,Accounts)
<CHILDREN Visual
Profit // split these 2 accounts onto
// 2 lines to prevent default
Profit_% // to asymmetric mode
// because both column
// dimensions have the same # of
// members selected. Could have
// used <SYM instead.
<ROW(Market,Scenario)
<ONSAMELEVELAS New_York
{ SETROWOP "Avg~Actual" OFF
SETROWOP "Avg~Budget" +
CALCULATE ROW "Count" = "Count" + 1. }
Budget
{ SETROWOP "Avg~Budget" OFF
SETROWOP "Avg~Actual" + }
>{ SKIP }
Actual
{ UCOLUMNS SKIP 2 }
{
// at this point, Avg~Budget and Avg~Actual ARE NOT YET
// AVERAGES--they are the SUM of the Profit rows of each type.
// Before converting them to averages, the report computes
// Profit as a % of total sales for each type. Since we only
// have 1 value for "Budget Sales" and "Actual Sales",
// for each of the three visual products in those
// rows, the report restricts the reference to those rows to
// columns 2-4 while computing the percentage columns 3, 5, and 7,
// based on profits in columns 2, 4 and 6
// calculate the percentages for Budget
CALCULATE ROW "Avg~Budget" 3 = "Avg~Budget" 2 % "Budget Sales" 2
CALCULATE ROW "Avg~Budget" 5 = "Avg~Budget" 4 % "Budget Sales" 3
CALCULATE ROW "Avg~Budget" 7 = "Avg~Budget" 6 % "Budget Sales" 4
// now calculate the averages
CALCULATE ROW "Avg~Budget" 2 = "Avg~Budget" / "Count"
CALCULATE ROW "Avg~Budget" 4 = "Avg~Budget" / "Count"
CALCULATE ROW "Avg~Budget" 6 = "Avg~Budget" / "Count"
// calculate the percentages for Actual
CALCULATE ROW "Avg~Actual" 3 = "Avg~Actual" 2 % "Actual Sales" 2
CALCULATE ROW "Avg~Actual" 5 = "Avg~Actual" 4 % "Actual Sales" 3
CALCULATE ROW "Avg~Actual" 7 = "Avg~Actual" 6 % "Actual Sales" 4
// now calculate the averages
CALCULATE ROW "Avg~Actual" 2 = "Avg~Actual" / "Count"
CALCULATE ROW "Avg~Actual" 4 = "Avg~Actual" / "Count"
CALCULATE ROW "Avg~Actual" 6 = "Avg~Actual" / "Count"
TEXT C "Total Regions Averages"
PRINTROW "Avg~Budget"
PRINTROW "Avg~Actual" }
!