Professional Documents
Culture Documents
Loops occur when there are two different paths to accomplish one join. The following
structure now includes PRODUCT_PROMOTION_FACTS in the Test Fashion
universe. If users want to analyze articles versus time, there are now two join paths.
Business Objects does not know which path to take, the one via SHOP_FACTS or the
one via PRODUCT_PROMOTION_FACTS.
The circular appearance of these four joins is a loop, which can give undesired SQL
results.
One way of spotting the problem table in the loop is the table which has at one end of
the one-to-many relationship.
If loops are not resolved and report is run following error might come.
There are different methodologies to resolve loops depending on the type of loop.
Contexts
Context is simply a list of joins that defines a specific path for query.
It breaks loop by defining set of joins that define path through table in a loop.
It ensures that joins are not included from different path within the same sql.
If object from two different contexts are used in report. BO generates two different
SQL.
Dis-advantage:
When you use a context, you expose the BO end user to the database structure. They
are forced to decide which context they want to use to run their query. The role of the
universe is to shield end users from the database structure, so they do not have to
make such decisions.
Create a query which includes objects which are only in one context : BO should be
able to get the correct result by determining the context.
Create a query which includes objects from both the contexts. BO should generate
two queries and then unions it.
Create a query which includes object which are common two both the context. BO
should prompt for contexts to be used.
Designer detects context by identifying table which has only many ends of joins
attached. No joins following back from one to many are included.
Every Join except shortcut join must exist in at least one context.
Alias
Alias breaks the loop by using same table with different name in the query.
Original table would join to shop facts and alias will join to promotion fact which
would break the loop.
However you would need to define the object based on there meaning.
e.g. to get the shopping month you can use original table whereas to get the promotion
month you need to use alias table.
Fan traps and Chasm traps are problems in which are inherent in SQL that are caused
by the order in which the elements of SELECT are processed.
In SQL a select statement processes SELECT, FROM and WHERE cause first and
forms a result table in memory based on the tables specified in where clause and
restrictions specified. However this does not cause a problem, but if aggregates are
applied then it may cause a problem in particular circumstances.
These traps are difficult to identify unless you take a deeper look at the detailed data.
Chasm trap is a common problem in relational database in which a join path returns
more data than expected.
A chasm trap is a join path between three tables when two many-to-one join path
converge on a single table and there is no context in place that separates the
converging path.
For example in above diagram there is no loop, but the flow around three table is
many-to-one-many.
When a query that uses objects Y and Z is run, the inferred SQL includes tables
B,C,A that have a many-to-one-many relationship. The chasm traps causes a query to
return every possible combinations of one measure with every possible combination
of another measure. The results in the values for each objects being multiplied by
other. The effect is similar to a Cartesian product but known as CHASM trap.
CHASM trap is resolved by executing separate statement for Y and Z and combining
the result.
Note: the chasm trap is not dependent on object type. Y and Z can be dimension
Unlike loops chasm traps are not detected automatically by designer. Need to detect
manually.
Analyze the one to many relationship join paths in schema to detect CHASM trap
graphically.
Analyze the proposed detected to separate the queries for such join paths.
Add additional dimension or detail objects to display more information in the report .
If there is chasm trap aggregated value wil be doubled alerting you a chasm trap.
Now if you run query with client name and sale revenue or rental revenue. You would
see correct result. However you want to see client name with sale and client revenue
you would end up getting wrong result.
Suppose Sale revenue is 2000 and rental revenue is 4000 for client Kumar. You
would see result as
And while projecting this data in report BO aggregates it to client name and shows
wrong result.
Modify SQL parameters of the universe and click generate separate queries for
measures. However this works with measures and might result in inefficient queries
and does not works with dimensions.
Create a contexts for each fact. This solution works well and recommended.
When you create context and two entities from separte context are used in SQL. BO
generates separate queries regardless of measure/dimension. Which solves this trap
problem
When any new universe changes are deployed how does the end user get the view
of the new classes/objects added(apart from specs doc)?
when universe get changed, we do export the changed universe to enterprise server.
user gets the view of changed classes objects what ever we done at universe and
already existed objects which are not changed are viewed as same like before.
I have 2 universes. that is u1 and u2. From u1,i created one report that is r1.
Now i want to give the connection r1 to u2 and at the same time delete the
connection from u1 to r1 ? How is it possible explain?
can change the connection for the report r1.For webI reports in query panel on left
side we have query properties there we can change the connection of the universe to
u2.then it will map to the u2.
This module of the application is hybrid of the thin client and the Full Client Modules
of Business Objects Reporting Module. ZABO stands for Zero Administration
BusinessObjects. This application uses the hardware resources of the client machine
for application level processing and communicates through the protocol defined for
the browser to use the server resources for processing External requests (like running
a database Query, creating a data provider to access data.)
ZABO means Zero Administration Business Objects and this is 3-tier level
architecture.
Full Client means 2 -tier level architecture we can directly connect to repository only
we defines key file and this Fullclient we need BO tools our local system also.
If Cardinalities are not specified between the tables i.e the relationship between the
tables ( 1-1,1-MANY,MANY-MANY)
We get more results at report level more than the actual result,like a Cartesian
product.
We can’t detect the Loops & Traps (Chasam & Fan) Which are mainly detected by
the
CARDINALITIES option
week and by day.If you set up a measure as aggregate aware from both tables – total
quantity for example, the select might be something like: -
@Aggregate_Aware(sum(week_agg.qty),sum(day_agg.qty))
The week table listed first as this would be the preference. But as BusinessObjects
needs a reason to not go to the week_agg table, this is done using incompatibilities.
For example the Week Number dimension object would be compatible with the
week_agg table as it will link to it and the data is held at an appropriate level to
report against it. However the Date dimension object would be set as incompatible
with the week_agg table, such that when it is selected alongside the Quantity object,
BusinessObjects knows to jump to the next option in its select definition.
The objects that you create in the universe are based on database columns that are
meaningful to an end user. For example, a customer objects retrives the fields that
contains name. In this situation the customer table typically has primary key (e.g. in
integer) that is not meaningful to the end user, but which is very useful for DB
performance. When you set up index awareness in designer, you tell designer which
database columns are primary and foreign keys. This can have dramatic effect on
query performance in the following ways.
Designer Can take advantage of the indexes on key columns to speed up data retrieval
Designer can generate SQL that filters in the most efficient way. This is particularly
more important in a start schema . If you build a query that involves filtering on a
value from dimension table. Designer can apply the filter directly on the fact table
using table foreign key. This eliminates unnecessary joins to dimensions tables.
Designer does not ignore duplicates with index awareness. If two customers have
same name. Designer retrieves only one unless it is aware that each customer has a
separate primary key.
To setup index awareness open the properties of objects, open “Keys” tab. Click
insert and add respective PK and FK.
@Aggregate_Aware (2) @Prompt (3) @Script (4) @Select (5) @Variable (6)
@Where
@Script: This function recovers the results of Visual Basic for Applications macro
(VBA macro).
Syntax: @Script (‘var_name’, ‘vartype’, ‘script_name’)
@Select: This function enables you to re-use the Select statement of an existing
object.
Syntax: @Select (ClassnameObjectname)
@Variable: The @Variable is used to reference the value assigned to a name or
variable.
Syntax: @Variable(‘myname’)
@Where: This function lets you re-use the Where clause of an existing object.
Syntax: @Where (ClassnameObjectname)
The core universe is a universe to which other universes are linked. It contains
components that are common to the other universes linking to it. These
A core universe can be a kernel or master universe depending on the way the core
universe components are used in the derived universes.
link allows the derived universe to share common components of the core
universe:
• If the linked core universe is a master universe, then the derived universe
contains all the core universe components. Classes and objects are not added to the
derived universe. They can be hidden in the derived universe depending on the user
needs of the target audience.
Linked universes are universes that share common components such as parameters,
classes, objects, or joins. Among linked universes, one universe is said to be the
kernel or master while the others are the derived universes.A kernel or master
universe represents a re-useable library of components.
Derived universes may contain some or all of the components of the kernel or master
universe, in addition to any components that have been added to it.
• Reduce development and maintenance time. When you modify a component in the
core universe, Designer propagates the change to the same component in all the
derived universes.
• You can centralize often used components in a core universe, and then include them
in all new universes. You do not have to re-create common components each time you
create a new universe.
You can link the active universe to a core universe, only if the following requirements
are met:
The core universe and derived universe use the same data account, or database, and
the same RDBMS. Using the same connection for both the core and the derived
universe makes managing the universes easier, but this can be changed at any time.
• The core universe was exported and re-imported at least once. The derived
universe does not need to have been exported before creating a link.
• You can use only one level of linking. You cannot create derived universes from a
universe which is itself derived.
• All classes and objects are unique in both the core universe and the derived
universes. If not conflicts will occur.
• The two universe structures must allow joins to be created between a table in one
universe to a table in the other universe. If not, then Cartesian products can result
when a query is run with objects from both structures.
• Only the table schema, classes and objects of the core universe are available in the
derived universe. Contexts must be re-detected in the derived universe.
• Lists of values associated with a core universe are not saved when you export a
derived universe with the core universe structures.
You can link an active universe to another universe. When you do so, the active
universe becomes the derived universe, and the linked universe becomes the core
universe. Components from the core universe are inherited by the derived universe.
To link a universe to a core universe, the core universe must have been
Note: When you link universes, you can relocate the core universe within the same
repository with out breaking the link. This allows you to export the core universe to a
different repository folder, while keeping the links with derived universes valid.
For the purposes of multidimensional analysis, objects are qualified as one of three
types: dimension, detail, or measure.
A condition object is a predefined Where clause that can be inserted into the Select
statement inferred by objects in the Query pane.
Condition objects are stored in the Conditions view of the Universe pane. You access
the conditions view by clicking the Conditions radio button at the right bottom of the
universe pane
• Condition objects do not change the view of the classes and objects in the Universe
pane.
Note: You may need to direct users to use the condition objects view of the Universe
pane. The only disadvantages for using condition objects is that you may want to
force a condition on users to restrict their access to part of the data set. In this case
you need to define a Where clause in the object definition.
Defines the security access level of the object.You can select a security level which
restricts use of the object to users with the appropriate security level. You can assign
the following security access levels:
• Public
• Controlled
• Restricted
• Confidential
• Private
If you assign Public then all users can see and use the object. If you assign Restricted,
hen only users with the user profile of Restricted or higher can see and use the object.
You can define a WHERE clause that restricts access to row and limits the result set
returned by a query.
To create restrictions Select Tools > Manage Security > Manage Access Restrictions
and click rows
How do you determine when to use alias and when to use context.
There is no strict rule to follow for resolving loops. However, whenever possible you
should use an alias instead of a context. When you use a context, you expose the
BUSINESSOBJECTS end user to the database structure. They are forced to decide
which context they want to use to run their query. The role of the universe is to shield
end users from the database structure, so they do not have to make such decisions.
A context can be confusing for end users when they are forced to make a decision
about the meaning of an object. For example an object called Country can have
several meanings; the customer’s country of residence, the shipment destination, or
the product’s country of manufacture. When you run a query in BUSINESSOBJECTS
or WEBINTELLIGENCE, you are also asked to indicate the correct database path to
follow.
You can use the following rules to help you decide whether an alias or context is
appropriate for resolving loops: When you create aliases and you end up with object
names that sound very different (Customer’s Country of Residence, Shipment
Destination, and Products Country of Manufacture), aliases are probably the right
solution.
If you end up with object names that sound very similar (such as Ordered Products
and Loaned Products as well as Ordered Products’ Country of Manufacture and
Loaned Products’ Country of Manufacture), you should consider using contexts.
You can use any the following approaches when linking universes:
• Kernel approach
• Master approach
• Component approach
You can use any of the three approaches individually, or, combine one
or more together.
Kernel approach
With the kernel approach, one universe contains the core components. These are the
components common in all universes. The derived universes that you create from this
kernel universe contain these core components as well as their own specific
components.
In the example below, the universes Human Resources and Sales are derived from a
kernel universe. They contain core components of the kernel universe as well as their
own specific components.
Any changes you make to the kernel universe are automatically reflected in the core
components of all the derived universes.
Master approach
The master approach is another way of organizing the common components of linked
universes.
The master universe holds all possible components. In the universes derived from the
master, certain components are hidden depending on their relevance to the target users
of the derived universe.
The components visible in the derived universes are always a subset of the master
universe. There are no new components added specific to the derived universe. The
example below shows the universes Human Resources and Sales are derived from a
master universe. They contain components from the master universe, some of which
may be hidden. Any changes you make to the master universe are automatically
reflected in the core components of all the derived universes.
Component approach
The component approach involves merging two or more universes into one universe.
The Sales universe below was created by merging two universes: Part 1 and Part 2.
List Mode provides list of all the tables, joins, and contexts.àList mode command
View
Parse checking means how DESIGNER is to determine the validity of an object, join,
or condition.
• Quick parsing checks only the syntax of components.
• Thorough parsing checks both the syntax and semantics of components.
If there are changes in the database on which you have already created a universe,
how do you include those additional changes into your universe?
A list of values contains the data values associated with an object. These data values
can originate from a corporate database, or a flat file such as a text file or Excel file.
In Designer you create a list of values by running a query from the Query Panel. You
can then view, edit, purge, refresh, and even export this file. A list of values is stored
as an .lov file in a subfolder of the UserDocs folder.
You can link the active universe to a kernel universe, only if the following
requirements are met:
The kernel universe and active universe were created from the same data account and
the same RDBMS.
The kernel universe was exported and re-imported at least once.
Exported derived universes are located in the same universe domain as the kernel
universe.
All classes and objects are unique in both the kernel universe and the derived
universes. (Otherwise, collisions may occur.)You are authorized to link the given
universe.
Note:
A derived universe does not recover the lists of values containing personal data from
the kernel universe. However, if you need certain lists of values, you can use the
following workaround: in the derived universe, create new objects defined in the same
way as those in the kernel, then hide them. You can then assign them to these objects
lists of values, which you can then modify and export.
A hierarchy, which the designer sets up when creating the universe, consists of
dimension objects ranked from “less detailed” to “more detailed”. The objects that
belong to hierarchies are the ones you can use to define scope of analysis.
Creating hierarchies
You can create your own custom hierarchies from any dimensions available in
the report. The dimensions you include in a hierarchy can be local variables,
Note: You can also use a date-type user object as the basis for a time hierarchy.
For information on user objects see “Creating User Objects” on page 78.
3. Type the name of the new hierarchy, then click outside the name box.
4. In the Available Dimensions box, click the first dimension for the new
hierarchy, then click Add.
The dimension you clicked appears in the new hierarchy’s folder in the
Add the other dimensions you want to include and then click OK.
Linked universes are universes that share common components such as parameters,
classes, objects, or joins. Among linked universes, one universe is said to be the
kernel or master universe while the others are the derived universes.
• Reduce development and maintenance time. When you modify a component in the
core universe, Designer propagates the change to the same component in all the
derived universes.
• You can centralize often used components in a core universe, and then include them
in all new universes. You do not have to re-create common components each time you
create a new universe.
You can link the active universe to a kernel universe, only if the following
requirements are met:
The kernel universe and active universe were created from the same data account and
the same RDBMS.
Exported derived universes are located in the same universe domain as the kernel
universe.
All classes and objects are unique in both the kernel universe and the derived
universes. (Otherwise, collisions may occur.)
Note: A derived universe does not recover the lists of values containing personal data
from the kernel universe. However, if you need certain lists of values, you can use the
following workaround: in the derived universe, create new objects defined in the same
way as those in the kernel, then hide them. You can then assign them to these objects
lists of values, which you can then modify and export.
The universe design methodology described in this manual consists of one planning
stage, and three implementation phases:
Designing a schema
Before starting the first phase, you should spend up to eighty percent of the time
allotted for the universe creation project, planning the universe. You should note the
following points:
• You must analyze the data analysis and reporting needs of the target audience for the
universe. The structures that you use to create the schema should be based on a clearly
defined user need to access the data contained in those tables and columns.
• You should have a clear idea of the objects that you need to create before you start
using Designer. Do not create objects by looking at the columns available in the
database, but identify columns that match an object that you have already identified
from your user needs analysis.
Designing a schema
You create a schema for the underlying database structure of your universe. This
schema includes the tables and columns of the target database and the joins by which
they are linked. You may need to resolve join problems such as loops, chasm traps,
and fan traps, which may occur in the structure by using aliases or contexts. You test
the integrity of the overall structure.
You create the objects that infer Select statements based on the components of your
schema. You organize these objects into classes. These are objects that you have
identified from an analysis of user reporting needs. You can create many types of
objects to enhance user reporting capabilities, multidimensional analysis, and
optimize query performance. You test the integrity of your universe structure. You
should also perform tests by running reports in Web Intelligence.
You can distribute your universes to users for testing, and eventually for production,
by exporting them to the Crystal Management System (CMS) repository.
each other.
This section presents an overview of a universe design methodology that you can use
to plan and implement a universe development project. The table below outlines the
major phases in a typical universe development cycle