Optimize BSO Cubes
Optimizing BSO cubes reduces the size of the database; it involves the following processes:
- Replacing zero blocks with #missing blocks
- Removing #missing blocks to reduce the database size
- Using
Never
as the consolidation operator for members with data type of SmartList, Date, Text, and Percentage
Removing Zeros in a BSO Cube
Begin by removing zero blocks in the sparse dimensions in the cube by replacing them with #missing blocks.
To replace zero blocks with #missing blocks:
- Create a business rule to replace zero blocks with #missing blocks.
Set business rule environment to optimize this business rule:
SET UPDATECALC OFF; SET CREATENONMISSINGBLK OFF; SET CREATEBLOCKONEQ OFF; FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0)) FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
Note:
- Although
UPDATECALC
,CREATENONMISSINGBLK
andCREATEBLOCKONEQ
are, by default, disabled. Oracle recommends explicitly turning them off in the business rule. - Be sure to replace "
SparseDim
" with the names of the sparse dimensions in which zero blocks are to be replaced. - Use
FIXPARALLEL
to help improve performance, for example,FIXPARALLEL(4, @RELATIVE("Scenario",0))
. - Be sure to specify
ENDFIXPARALLEL
.
- Although
- Use one of the following optimized calculation designs to change zero blocks to #missing blocks. Select the calculation design that performs better depending on your dimension design, data patterns, and processes.
Calculation Design 1 (for Dense or Sparse Calculation)
This calculation results in the original value and changes zero values to #missing.
"DenseMbr" = "DenseMbr" * "DenseMbr" / "DenseMbr"; "SparseMbr" = "SparseMbr" * "SparseMbr" / "SparseMbr";
Calculation Design 2 (for Dense Members in Block Mode Only)
"DenseBlockHeader" ( @CALCMODE(BLOCK); IF ("DenseMbr" == 0) "DenseMbr" = #Missing; ENDIF
Note:
ReplaceDenseMbr
andSparseMbr
, andDenseBlockHeader
with actual names.
Removing #Missing Blocks from Cubes
Remove #missing blocks to reduce BSO database size. Use one of the following two methods to clear #missing blocks:
Method 1Perform an explicit dense restructure
In Planning, this process can be run manually or through a job. Database restructures can also be performed using EPM Automate and REST APIs.
To execute a database restructure using Calculation Manager:
- Open Calculation Manager. From the Navigator, select Rules from Create and Manage.
- Click Actions and then select Database Properties.
- In Enterprise View, expand the database containing the cube that you want to restructure.
- Right-click the cube that you want to restructure and then select Restructure Database.
Information Sources:
- restructureCube command in Working with EPM Automate for Oracle Enterprise Performance Management Cloud
- Restructure Cube in REST API for Oracle Enterprise Performance Management Cloud
Method 2
Clear all data. Reload all data from files that you previously uploaded to the environment.
Using Never as the Consolidation Operator for Members with SmartList, Date, Text, and Percentage Data Types
Dimension members that have a data type of SmartList, Date, Text, and Percentage should use Never
as the consolidation operator. Using the Addition consolidation operator increases the cube size without adding any value. Using Ignore as the consolidation operator will only stop addition within the dimension of the member; it will not stop the rolling up of values from other dimensions, which potentially can create unneeded blocks.