What if scenarios in general require a model of their own and seeding from the production data.
Using this modelling strategy what if becomes somewhat easier.
House Number |
Postcode |
Door Colour |
Startpoint |
Natural_key |
Generation |
1 |
OL4 5RT |
RED |
01/01/2000 |
6469c5a75309898f66eba215f45dc0f0 |
1 |
2 |
HX4 1QP |
BLUE |
01/01/2000 |
f4f44df34b5c3bcc165699468c5a9dbf |
1 |
1 |
OL4 5RT |
BLACK |
02/02/2010 |
6469c5a75309898f66eba215f45dc0f0 |
2 |
This Dimension would be presented in the model as
House Number |
Postcode |
Door Colour |
Startpoint |
Natural_key |
Generation |
2 |
HX4 1QP |
BLUE |
01/01/2000 |
f4f44df34b5c3bcc165699468c5a9dbf |
1 |
1 |
OL4 5RT |
BLACK |
02/02/2010 |
6469c5a75309898f66eba215f45dc0f0 |
2 |
And we have a fact of
AddKey |
Adults |
Children |
pets |
Income |
6469c5a75309898f66eba215f45dc0f0 |
1 |
4 |
0 |
20000 |
f4f44df34b5c3bcc165699468c5a9dbf |
2 |
2 |
0 |
30000 |
Perhaps we have a summary rule that calculates income per head by door color
The above would resolve to a result set of
Door Colour |
Occupancy |
Income |
Average |
BLUE |
4 |
30000 |
7500 |
BLACK |
5 |
20000 |
4000 |
In or what if scenario we may want to consider if all doors where black
We take the original dimension and add the what if instances with Negative Generations
House Number |
Postcode |
Door Colour |
Startpoint |
Natural_key |
Generation |
1 |
OL4 5RT |
RED |
01/01/2000 |
6469c5a75309898f66eba215f45dc0f0 |
1 |
2 |
HX4 1QP |
BLUE |
01/01/2000 |
f4f44df34b5c3bcc165699468c5a9dbf |
1 |
1 |
OL4 5RT |
BLACK |
02/02/2010 |
6469c5a75309898f66eba215f45dc0f0 |
2 |
2 |
HX4 1QP |
BLACK |
01/01/2000 |
f4f44df34b5c3bcc165699468c5a9dbf |
-1 |
1 |
OL4 5RT |
BLACK |
02/02/2010 |
6469c5a75309898f66eba215f45dc0f0 |
-1 |
We present this out for the ‘what if’ scenario by reversing the sign on the generation and presenting the greatest generation as before.
An intermediate object (if this actually existed) may look like the following:
House Number |
Postcode |
Door Colour |
Startpoint |
Natural_key |
Generation |
1 |
OL4 5RT |
RED |
01/01/2000 |
6469c5a75309898f66eba215f45dc0f0 |
-1 |
2 |
HX4 1QP |
BLUE |
01/01/2000 |
f4f44df34b5c3bcc165699468c5a9dbf |
-1 |
1 |
OL4 5RT |
BLACK |
02/02/2010 |
6469c5a75309898f66eba215f45dc0f0 |
-2 |
2 |
HX4 1QP |
BLACK |
01/01/2000 |
f4f44df34b5c3bcc165699468c5a9dbf |
1 |
1 |
OL4 5RT |
BLACK |
02/02/2010 |
6469c5a75309898f66eba215f45dc0f0 |
1 |
It should be noted that any dummy records created during the bucket process will be unaffected and still present out as generation zero.
House Number |
Postcode |
Door Colour |
Startpoint |
Natural_key |
Generation |
2 |
HX4 1QP |
BLACK |
01/01/2000 |
f4f44df34b5c3bcc165699468c5a9dbf |
1 |
1 |
OL4 5RT |
BLACK |
02/02/2010 |
6469c5a75309898f66eba215f45dc0f0 |
1 |
So applying our same rule would resolve to
Door Colour |
Occupancy |
Income |
Average |
BLACK |
9 |
50000 |
5555.55 |
In this way we use the existing fact and dimension objects - however we relate the fact object to the what if presentation of the dimensional object