The universe design to support the process analysis engine can often result in loops in the universe. There are two ways to deal with loops: table aliases and contexts.
A table alias has been used in the manufacturing universe to resolve a loop. In this case the defect_type and item tables both need to be joined with the defect and reject tables creating a loop. This loop has been resolved by aliasing defect_type as reject_type for the join with the reject table.
An alternative approach, which may be necessary in some cases, is to use contexts to resolve the loop. For example, the use of two fact tables for rejects and inspections may result in a loop if a number of filter and breakdown objects are required from different dimension tables. One context can be named for the tables included in the rejects query, and one context for the inspection query.
You
must include the self-joins in the relevant context.
Refer to the chapter Resolving Join Problems in a Schema for information on solving loop problems.