Database tables of InfoCubes often contain several million records, so database operations of any nature are time-consuming for these tables. For such cases, the partitioning of an InfoCube tables is a very effective option to improve performance.
With portioning, the structure of a InfoCube table in database systems will basically be defined to use a partitioning field to physically divide it into several database areas (tables, blocks, etc.).
The partitioning of the tables has two advantages:
- Instead of having one read process that searches the complete fact table for the required information, several read processes can be executed in parallel in the individual partitions.
- When the read access to the partitioning characteristic is limited, a number of partitions may be possibly excluded from the read process, so the data base will be smaller and comprehensive data will be found and read significantly faster.
Figure 1:- Partitioning Logic
Steps for InfoCube Partitioning
Step 1:- Time Characteristics
InfoCube partitioning is done at database level and can be based on one of the following date based info objects:
- Calendar Month (0CALMONTH) or
- Fiscal Year/Period (0FISCPER)
Hence include either of these time characteristic in the InfoCube to be partitioned under the Time dimension as per the business requirement.
Figure 2:- 0CALMONTH & 0FISCPER Characteristic
Step 2:- Setup InfoCube Partitioning
To setup partitioning for an InfoCube, open the InfoCube in Edit Mode and choose Extras -> DB Performance -> Partitioning as per the below figure.
Figure 3:- InfoCube Partitioning
Step 3:- Determine Partitioning Condition
As per the business requirement, select either of the time characteristics 0CALMONTH (Calendar Year/Month) or 0FISCPER (Fiscal year/period) to partition the InfoCube.
Figure 4:- Partitioning Condition
If you use the Fiscal Year/period characteristic (0FISCPER) which is compounded with the fiscal year variant (0FISCVARNT) as the partition condition, then you need to use a special procedure when you partition an InfoCube using 0FISCPER.
Always set the Fiscal Year Variant (0FISCVARNT) to constant in “Provider-Specific properties” of the characteristic 0FISCVARNT as shown in the below figures.
Assign the Constant value (For Example: – K3 – Cal Year, 3 Special Periods) to the Fiscal Variant to enable the partitioning based on Fiscal Year/period.
Figure 5:- Fiscal Year Variant (0FISCVARNT)
Figure 6:- Constant of 0FISCVARNT
Figure 7:- 0FISCVARNT Values
Step 4:- Value Range
Specify the value range in the form of From Date (von) and To Date (bis) for Calendar Year/Month and From Period (von) and To Period (bis) for Fiscal Year/Period.
Figure 8:- Calendar year/month
Figure 9:- Fiscal year/period
Step 5:- Maximum No of Partitions
Once the value range is updated, an optional parameter called maximum no of partitions can be included. When activating the InfoCube, the fact table is created on the database with one of the number of partitions corresponding to the value range and maximum no. of partitions.
You can also determine how many partitions are created as a maximum on the database for the fact table of the InfoCube.
If you choose the partitioning criterion as 0CALMONTH and use the value range from 01.2005 to 12.2010, then maximum no of partitions can be calculated as given below.
From Date (Von) = 01.2005
To Date (bis) = 12.2010
No of months between from and to date = (12.2010 – 01.2005) = 6 * 12 = 72 months
Hence, No of partitions = 72 + 2 = 74 partitions
(2 partitions for values that lay outside of the range, meaning<01.2005 or >12.2010).
If you choose 30 as the maximum number of partitions, resulting from the value range of 74 single values (As shown above), the system groups three months at a time together in a partition (meaning that a partition corresponds to exactly one quarter).
In this way, 6 years * 4 partitions/year + 2 marginal partitions = 26 partitions are created on the database.
The performance gain is only gained for the partitioned InfoCube if the time dimension of the InfoCube is consistent. This means that all values of the 0CAL* characteristics of a data record in the time dimension must fit each other with a partitioning via 0CALMONTH.
Where necessary, limit the maximum number of partitions, the SAP recommended optimal maximum number of partitions is 30-40, so consider this when planning the range spilt.
In BW 3.5 you had to setup partitions whilst the InfoCube was empty but this constraint has disappeared in BI 7.0 (for all database providers except for DB2).
In 7.0 it is not only possible to partition whilst the InfoCube has data but also re-partition any existing groupings.
Repartitioning can be useful if you have already loaded data to your InfoCube and you have loaded more data into your InfoCube than you had planned when you partitioned it, you did not choose a long enough period of time for partitioning or some partitions contain no data or little data due to data archiving over a period of time.
You can access repartitioning in the Data Warehousing Workbench using Administration, or in the context menu of your InfoCube.