Question

Scenario

Designing a Star Diagram for an OLAP environment for the process Incident Management. Management requests to be able to both filter on SLA status (breached, achieved or in progress) and being able to calculate the percentage of sla achieved vs breached. Reporting will be done through in Excel/SSRS through SSAS (tabular).

Question

I’m reasonable inexperienced in designing for an OLAP environment. I know my idea will work but I’m concerned this is not the best approach.

My idea: SLA needs to be both a measure and a dimension.

DimSLA

  • (Nullable bool) Sla Achieved -> Yes=True, No=False, and InProgress=NULL

FactIncident

  • (Nullable Integer) Sla Achieved Yes=1,No=0 and In Progress=NULL

Then in SSAS, publish a calculated percentage field which averages FactIncident-SlaAchieved. Is this the right/advisable way to do it?

Was it helpful?

Solution

As you describe it, "SLA achieved" should be an attribute, as you want to classify by it, not sum it. The only thing you want to sum or aggregate would be other measures (maybe an incident count) under the condition that the "SLA achieved" attribute has certain values like "achieved" or "not achieved". This is the main rule in dimensional design: Things you use for classifying or break down are attributes, and things that you calculate are measures. There are a few cases where you need a column for both, but not many.

Do not just use a boolean value. Use a string value easily understand by users like the texts "SLA achieved", "SLA not achieved", "in progress". This makes it much more easy for non technical users to use the cube. In case you use this in a dimension table , there would be just three records with the strings, and the fact table would reference them with maybe a byte foreign key, hence more meaningful texts do not use up millions of bytes.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top