The design starts off from looking at the requirements.
- What are the reports? This is usually well known...
- What metrics are there?
This is sometimes lesser known as the business analyst may not recognize that different metrics are really the same, just rolled-up differently.
e.g. He/She may have a "sales total metric" and a "branch sale for the month" metric.
I suggest using two terms to differentiate here e.g. in the requirements document call it metric, in the design document call it measure. "measure" can then become sort of the "normalized metric.
Start the design by collecting these, why not enter this information into two tables: Report and Metric - Collect the different levels where the metrics appear.
- Figure out which levels belong to the same dimension.
- What are the attributes that have to be displayed for each level?
- Categorize the levels into hierarchies. Is there a need for more than one hierarchy per dimension?
Store all this into table also. So far we added Level, Attribute, Dimension and Hierarchy, HierarchyLevel - Which metric appears at which level? What is the roll-up aggregation?
- Which report uses which metric at which level?
Yes... store this info also in tables. Add MetricLevel, ReportMetricLevel - ... and there you go!
Then you can create very interesting reports from this:
- Dimension hierarchy
Report on the Dimension, Hierarchy, Level and Attribute tables
Will describe what dimensions to create and how to set them up - Cube design
Report on the MetricLevel, Level, Hierarchy, Dimension tables
Will describe what cubes to create, what are the roll-up aggregations - Report usage of metrics
Report on the ReportMetricLevel, MetricLevel, Level, Metric, Report tables
Will describe how the requirements are met and how each report will be built from the dimensional model - Star Schema design
Report on the Metric, MetricLevel, Level, HierarchyLevel tables. Find the lowest granularity level in each hierarchy
Will describe the star schema structure
It helps to verify the requirements and produces all sections (of what I can think of) of a "design document".
It can be reviewed and has sufficient information to start implementation.
Furthermore I would suggest to create a placeholder model i.e. one with no real values for measures, but all dimensions hooked up.
The bulk of the work goes into building the "real" metrics.
The placeholder model serves a double purpose:
- Development can be split between report authors and modelers, here modeling really means implementing the logic for each metric.
- A mock-up of each report can be created that in my opinion shoud still belong to the design phase. This can be reviewed with the customer and serves to verify both the design and the requirements.
Hi Tamas, The idea of design utility seems interested. Do you have this database already built and will you like to share this me.
ReplyDeleteThanks,
Waqar
Hi Simon
ReplyDeleteI'm one of your biggest fan :-)
By collecting measures and metrics ,I would add company role attribute to this structure so that I can prioritize and hierarchize decision makers in this DB model info.
I am interested in this utility ,
Could you please share the ERD with me
I used MS Acess... and I kept adjusting the model as I was working with the tool to suite my needs ... I suppose you would be doing the same.
ReplyDeleteHow about you buy me an iPad and u get the little app? ;-)