If you never use drilling, and you never use linked data providers, then details are wasted in your universe.
Details are designed so that you don’t have to do a lot of work defining custom hierarchies if you don’t want to. Any detail objects in your classes won’t be drillable, by definition. So, using Island Resorts as an example, in the Customer class you have Country of Origin, Region, City, and Customer as dimension objects. They define a hierarchy. The customer detail objects Age, Phone Number and Address are automatically not drillable, and probably shouldn’t be. If they weren’t details, you would have to define a custom hierarchy to eliminate those items (like they did for Age Group) and keep them from being drillable.
Details are also designed so that “extra” information doesn’t get in your way when you are using linked data providers. Suppose you like DP1 and DP2 together; every common dimension must be linked, and unlinked dimensions can’t be used.
Suppose you have Customer ID (Dim), Customer Name (Dim), and Customer Phone (Dim) from one data provider. Next, you have Customer ID (Dim) and Address (Dim) from another data provider. For the sake of this example, assume only one address.
Now you can link Customer ID -> Customer ID, but that’s really the only item in common. Since you can’t link Phone and Address, you can’t use both of them in the same block. You get “Variables are not compatible” instead.
But if Phone is a detail of customer, and Address is a detail of customer, then once you link customer, details are freely usable anywhere. That’s ultimately what details were designed for, I think.
It’s like working with each cube as a miniature database, which is really what it is. Dimensions are keys, and keys must be linked to other keys to avoid a cartesian product. Details are attributes, and once their parent key is linked, they can be joined / used in a common (combined) block without any problems.
Note that some objects may require both; you may want to be able to drill on a date field on one report, and use it as a detail object in another.
As Steve said, there is an extra step required to “reveal” detail objects. If you are using linked data providers, the advantages overwhelm that extra step, in my opinion. Otherwise you have multiple extra steps that are required on the report in order to “demote” a dimension to a detail for use on each report.
I did an entire one-day session on this at the prior user conference. We haven’t posted that material on our web site as we keep thinking we’ll add it to our training curriculum as a one-day addendum to the designer class.
Dave
Dave Rathbun (BOB member since 2002-06-06)