I am working on combining 2 star schemas into one universe and I am running into a problem. To try to explain the problem in simple terms, let me use an example. Let’s say you have 2 fact tables which share 2 dimensions (basically,
in the shape of a baseball diamond, with 1st and 3rd base being the fact tables and 2nd base and home plate being the dimensions).
When you define the joins between the fact tables and the dimensions, you get a loop. You can resolve this loop by using contexts, but if you do this then if you want to run a query which combines one object from each fact table (with one object from one of the shared dimensions), Business Objects will split the SQL into 2 statements and then join the results. I believe this final join would be done on the PC. The problem is that there may be a lot of data to join on the PC and this could greatly affect performance.
Ideally, you would want this final join to be done on the server. If you were
to code this in SQL yourself, you could do this with one SQL statement.
The other alternative to using contexts is to use aliases to resolve the loop, but if you choose this method, then you would need to have 2 different dimension objects in the universe (for what is the same data base field);
one associated with each fact table. Unfortunately, then your query would need to
contain both objects in order to have both joins included. This is not something we would want our users to have to do.
The problem is really magnified for us as we often divide total cost (from one fact table) by total members (from another fact table) to come up with a Per Member Per Month (PMPM) amount. This appears to be impossible to implement as an object in the universe (if you use contexts to split the SQL). It seems like we will have to use variables on the reporting side to get these PMPM amounts.
Am I missing something? Is there a simple solution to this scenario?
Bill
Listserv Archives (BOB member since 2002-06-25)