Step 2: Writing a Rules Allocation Dimension
When we have the RDS costs we want to split grouped as an element within a dimension, we are ready to build our Rules Allocation Dimension.
Stub out the Dimension to see what information we need to add:
...
SplitDataLake:
Type: Allocation
Name: Split Data Lake
AllocateByRules:
AllocationMethod: Proportional
SpendToAllocate:
...
AcrossElements:
...
Within the AllocateByRules
rule, we can see the main pieces of information we must add.
AllocationMethod
: Here we have chosenProportional
, since we want the costs in this Dimension to follow the relative costs of our products. We could also have chosenEven
, and have the cost of our RDS database spread evenly among this Dimension's elements.SpendToAllocate
: This specifies what spend we want to split. In this case, it will reference the RDS spend we grouped in the previous step.AcrossElements
: This specifies how we will split the cost. The elements referenced here will be the elements of our Rules Allocation Dimension as well, and their relative costs will define the proportionality of our split.
There is an additional optional element
ForEachElementOf
that allows for further segmentation ofSpendToAllocate
. For more information, see Optionally Partition Rules Based Allocation Using ForEachElementOf.
The goal in this exercise is to allocate the shared RDS spend to the Product A, Product B, and Product C, each a SingleTenantProduct, relative to the amount we are currently spending on each of those products. For this purpose we have a Shared Database and a SplitDataLake.

If we had chosen an
AllocationMethod
ofEven
, then $3,333 would be assigned to each SingleTenantProject, Product A, Product B, and Product C.
First, we will use SpendToAllocate
to specify the Shared Data Lake
element in the Shared RDS
dimension.
...
SplitDataLake:
Type: Allocation
Name: Split Data Lake
AllocateByRules:
AllocationMethod: Proportional
SpendToAllocate:
Source: User:Defined:SharedRDS
Conditions:
- Equals: Shared Data Lake
AcrossElements:
...
Next, we will use AcrossElements
to define the output elements for our split. In this case, we want to split relative to the elements Product A, Product B, and Product C in the dimension SingleTenantProduct
.
...
SplitDataLake:
Type: Allocation
Name: Split Data Lake
AllocateByRules:
AllocationMethod: Proportional
SpendToAllocate:
Source: User:Defined:SharedRDS
Conditions:
- Equals: Shared Data Lake
AcrossElements:
GroupBy:
Source: User:Defined:SingleTenantProduct
Conditions:
- Equals:
- Product A
- Product B
- Product C
Notice that under AcrossElements
we have used the GroupBy
shorthand to clearly express the logic. It is also possible to use the Groups
shorthand or the standard Rules
long form syntax.
The next step is to review the work so far.
Updated 3 days ago