Understanding How KPI Values are Calculated when Rounding Precision is Defined
Rounding is used to create a logic that allows the same KPI values to be calculated in different instances such as account plan, claims, and promotions. KPI values are calculated by applying an internal rounding to a desired rounding precision. Rounding also considers carry, and even for an imperfect split, the total value adds up to the correct value.
Required Editions
Available in: Lightning Experience Available in: Enterprise and Unlimited Editions where Consumer Goods Cloud is enabled |
Two types of carry are:
- Global carry: The carry value is carried over to the next period.
- Local carry: The carry value is dropped at the end of each period.
Rounding type can either be rounding enabled or rounding with carry.
Types of rounding order are:
- Period first: Rounding uses No Carry or With Carry.
- Subperiod first: Rounding uses No Carry.
There’s no general rule and the KPIs must be evaluated based on their use cases. Here’s a few use cases that helps you understand the usage of rounding.
| Rounding Type | Value Type | Rounding Order | Description | Usage |
|---|---|---|---|---|
| Rounding Enabled | Volume, Money | Default (Period first) | Values at period level are first rounded, without considering carry, and then sub periods are rounded considering carry, to calculate the period value. | Volume or Actual KPIs rounded using a defined precision. For example, Baseline. |
| Rounding With Carry Over | - | Default (Period first) | Values at period level are first rounded considering carry, and then sub periods are rounded considering carry to calculate the period value. |
|
| Rounding Enabled | Price, Percentage | Default (Subperiod first) | Values at the sub period level are calculated first by rounding. Values at period level are calculated and rounded later because they mostly represent average values. | Price or Rate KPIs, where sub period values are accurate and rounded to the desired precision. For example, COGS. |
Without rounding precision, you can feel that the calculated values aren’t accurate because you can’t see the decimal places. In calculations such as cost or revenue, a minute difference can lead to adverse implications. To avoid these discrepancies, rounding precision ensures that all the values are calculated accurately.
The value is 10 at the KPI level and the distribution is equal over plan and time hierarchy.

If you manually enter 10 at the KPI level, the values get distributed to product and weeks. Despite the numbers being more precise with decimal places, it appears that the values don't add up to the exact value. So, 3.33 + 3.33 + 3.33 = 9.99 vs 10.
The numbers distributed to a cell (product and week) can’t be directly rounded to a given decimal place. If it’s rounded, then the precision can be lost and the numbers don’t add up to the correct value that is manually entered. To avoid this issue, a KPI can be configured to use precision rounding to ensure that the distributed values add up to the exact value manually entered.
To resolve these issues and ensure more accurate results, Consumer Goods Cloud Trade Promotion Management uses the rounding feature on KPIs. The key benefits of rounding feature are:
- Values at the sub period or period level are rounded to the given precision.
- Rounded value is used in calculation and other processes such as writebacks.
- The calcHelper.round function isn’t required.
The calculation engine ensures that the sub period and period values are always rounded to the desired precision. That is, rounded sub period values add up to the rounded period value.
The rounded values depend on the configuration made in the Rounding section of the KPI definition. Based on these settings, here are a few possible scenarios.
| Rounding Order | Rounding Type | Description |
|---|---|---|
| - | None | No rounding |
| Default | No carry | Rounding is based on the value type of the KPI.![]() |
| Default | With carry | Each cell of the matrix of product or week values is rounded to the configured number of decimal places, with period values rounded first, followed by sub period values. The global carry values are considered. |
| Default | Without carry | Each cell of the matrix of product or week values is rounded to the configured number of decimal places, with period values rounded first, followed by sub period values. The global carry values aren’t considered. |
| Period then Subperiods | With carry | Values at the period level are rounded and calculated by considering global carry, and then the sub period values are rounded with local carry. |
| Period then Subperiods | No carry | Values at the period level are first rounded without considering carry, and then the values at the sub period level are rounded by considering local carry to add up to the period value. |
| Subperiods then Period | With carry | Values at the sub period level are first rounded considering global carry, and then merged with the period values. These period values are then rounded without carry. |
| Subperiods then Period | No carry | Values at the sub period levels are first rounded without considering carry, and then the values at the period level are calculated and rounded without carry. |
- Special Cases
Here are the special cases that are applicable in all scenarios. - Example: Value Type Volume, Money, and None
Here’s an example with value type Volume, Money, and None. - Example: Value Type Price and %
Here’s an example with value type Price and %. - Example: Period Then Sub Periods
Here’s an example to explain how rounding is done for period then sub periods. - Example: Sub Period Then Period
Here’s an example to explain how rounding is done for sub period then period.


