Version / Scenario dimension best practice
Posted: Tue Jul 23, 2013 2:49 pm
Hi,
I'm designing an application to pull in banking risk data using TI from an star schema Oracle database, and subsequently build rules on top of it. The main target cube has around 10 dimensions, all contained in the data except for a 'Version' or 'Scenario'-style dimension. The 'version' dimension we want in this case is 'Regulator', and the rules will vary by regulator, though the incoming fact data does not vary by regulator.
For example, we may have two regulators: "FCA" and "Fed" (UK and US regulators). Different regulatory risk rules have slightly different formulae, eg under regulator FCA, we might have (Risk Exposure = Drawn Balance + Undrawn Balance) whereas under regulator Fed, we might have (Risk Exposure = Drawn Balance + 0.5 * Undrawn Balance), and then perhaps some catch-all rule such as (Risk Exposure = Drawn Balance) for all others.
One way to do this in a non-dimensional system would of course be to have multiple Measures:
['FCA Risk Exposure'] = N: ['Drawn Balance'] + ['Undrawn Balance'];
['Fed Risk Exposure'] = N: ['Drawn Balance'] + 0.5 * ['Undrawn Balance'];
['Other Risk Exposure'] = N: ['Drawn Balance'];
But this is not flexible and does not make use of the Regulator dimension therefore we cannot slice/dice the data. Ideally I think in TM1 we would do something like this:
['Risk Exposure', 'FCA'] = N: ['Drawn Balance'] + ['Undrawn Balance'];
['Risk Exposure', 'Fed'] = N: ['Drawn Balance'] + 0.5 * ['Undrawn Balance'];
['Risk Exposure'] = N: ['Drawn Balance'];
However, the incoming data does not hold Regulator - it has only one record across all regulators. Finally, my question: What is the best practice here in TM1?
I'm guessing: include the dimension Regulator in the target cube, and load the fact data into a cube multiple times with TI: once for every regulator. Then rules can vary by Regulator with different results also being stored in the rules, which can also be sliced/diced by Regulator.
The main drawback I can see with this approach would be that if Regulator is not explicitly set on a report (ie if the parent 'All Regulators is included rather than a specific regulator), the data will be aggregated automatically and will be double-counted. Should we get around this by telling TM1 not to aggregate over the Regulator dimension?
Apologies for what may be a basic question for this kind of analysis. I'm fairly new to TM1 so just getting used to best practice for some of these techniques. I've searched the forums but couldn't find a thread quite suitable (this came close but didn't have a satisfactory conclusion: http://www.tm1forum.com/viewtopic.php?p=15218) - feel free to point me in the right direction!
Many thanks,
Zac
I'm designing an application to pull in banking risk data using TI from an star schema Oracle database, and subsequently build rules on top of it. The main target cube has around 10 dimensions, all contained in the data except for a 'Version' or 'Scenario'-style dimension. The 'version' dimension we want in this case is 'Regulator', and the rules will vary by regulator, though the incoming fact data does not vary by regulator.
For example, we may have two regulators: "FCA" and "Fed" (UK and US regulators). Different regulatory risk rules have slightly different formulae, eg under regulator FCA, we might have (Risk Exposure = Drawn Balance + Undrawn Balance) whereas under regulator Fed, we might have (Risk Exposure = Drawn Balance + 0.5 * Undrawn Balance), and then perhaps some catch-all rule such as (Risk Exposure = Drawn Balance) for all others.
One way to do this in a non-dimensional system would of course be to have multiple Measures:
['FCA Risk Exposure'] = N: ['Drawn Balance'] + ['Undrawn Balance'];
['Fed Risk Exposure'] = N: ['Drawn Balance'] + 0.5 * ['Undrawn Balance'];
['Other Risk Exposure'] = N: ['Drawn Balance'];
But this is not flexible and does not make use of the Regulator dimension therefore we cannot slice/dice the data. Ideally I think in TM1 we would do something like this:
['Risk Exposure', 'FCA'] = N: ['Drawn Balance'] + ['Undrawn Balance'];
['Risk Exposure', 'Fed'] = N: ['Drawn Balance'] + 0.5 * ['Undrawn Balance'];
['Risk Exposure'] = N: ['Drawn Balance'];
However, the incoming data does not hold Regulator - it has only one record across all regulators. Finally, my question: What is the best practice here in TM1?
I'm guessing: include the dimension Regulator in the target cube, and load the fact data into a cube multiple times with TI: once for every regulator. Then rules can vary by Regulator with different results also being stored in the rules, which can also be sliced/diced by Regulator.
The main drawback I can see with this approach would be that if Regulator is not explicitly set on a report (ie if the parent 'All Regulators is included rather than a specific regulator), the data will be aggregated automatically and will be double-counted. Should we get around this by telling TM1 not to aggregate over the Regulator dimension?
Apologies for what may be a basic question for this kind of analysis. I'm fairly new to TM1 so just getting used to best practice for some of these techniques. I've searched the forums but couldn't find a thread quite suitable (this came close but didn't have a satisfactory conclusion: http://www.tm1forum.com/viewtopic.php?p=15218) - feel free to point me in the right direction!
Many thanks,
Zac