In BI system Fan trap and chasm trap are common problem When designing a Universe (semantic Layer) which is used by BI reports to dynamically generate query.
The query information is passed to other system using CWXML (common warehouse XML files) this makes query data inter-operable to desperate systems requiring various different software landscape.
Fan Trap: happen when Object A representing table is mapped to another object B in 1:m cardinality. Which is also mapped to Object C in 1:m cardinality.
This WHEN this happens it lead to double or triple values in summary numerical attributes measures when query generated over them.
A (5) –> B(5,5) = may have value 10 then B –> C may have over calculated summaries c (5,5,5)=15.
A (Emp, salary) now B(dept, emp), C(section, dept).. now you can clearly see 1:m relationship between tables. as explained above the Emp,dept,sum(salary) would have 3 times or more over calculated values when dynamic query is genrated by semantic Layer. this is Called Fan Trap:
This can be solved by using Aliases, aggragate awareness functions @object, @ functions..
Chasm trap: A –> B (1:m) and B –> C (m:1) when relationship between objects is of this type it leads to Chasm trap.
There Chasm trap can also be solved by using aggregate awareness functions @userObjects etc…
Along with this loops are common problem in BI designing ?
Loops are resolved by setting context, which actually defines the path query is going to takes thus resolving ambiguity of join suppose A,B,C are joined but there are in web of tables which join happens dynamically by BI system it can take path like
join path 1: A, B, D1, D2, C
join path 2: A, B, D3, D4, C
Which introduces loops in BI semantic layer is systems like SAP Business Objects, IBM cognos or Micro strategy. Because as report utilizes the semantic objects directly and tool creates query as defined by semantic layer by BI architect it leads to loops.
the two intermediary routes available to tool creates two different types of query and hence two different types of results which leads to distortions in values and duplicate values on reports.
There are resolved by defining path by setting context so suppose we say always when A,B,C join use path 1 by using context.