Académique Documents
Professionnel Documents
Culture Documents
Now we have understood how to insert tables and create relationship amongst them. This posts covers how to create different types of
Classes
Classes are nothing but a logical group of objects. Classes are represented as a folder in a universe. Classes are very useful to group
related objects in order to locate them fast and for better organization of universe. The order of objects in a particular class forms a default
Classes can also contain sub classes and objects can’t exist without classes.
Right click on the free area of left tree bar and click on class OR
An create class dialog will appear provide the name and description of class and click on ok
To create sub classes repeat above process by click on a particular class under which you want to create subclass
Objects
Objects represent a database column or an expression in a Business Objectsuniverse. These objects are represented as different icon
based on type of objects. Creating meaningful objects is a very essential part of universe development as these would be used
Users will drag drop these objects in a report panel in order to create a reports. An object or combination of objects infers a SQL which in
turn gets fired on underlying database to fetch the data for report.
Dimension Objects
Detail Objects
Measure Objects
Drag-drop the column from a universe pane under a class you want to create an object
Once objects icon appears under a class, double click on it to edit its properties
Select the type of objects. It depends on type of data to be returned by a column which would be used in Select clause
of objects property
If you want impose a restriction on data to be returned by object enter a SQL expression in Where clause
Further you can force a Business Objects to use specific table in a join condition when particular objects is used in query by click
· Check if you want associate LOV with objects and other properties based your universe specification and type of objects
· Controlled : User with controlled or higher profile can see and use object
· Restricted : User with controlled or higher profile can see and use object
· Confidential : User with confidential or higher profile can see and use object
· Private : User with private or higher profile can see and use object
· Check the required check boxes to specify if a objects can be used in result, condition and sort operations
· Database format is applicable only to date objects by default its windows regional format further it can be set
· Click on Keys tab to define primary key and foreign key to make object index aware which is helpful in performance optimization
· Source Information tab is useful when Universe is create from Data Integrator. It help to define technical information of an object like
Dimension Object
A dimension objects is an object against which analysis is done. It’s a main part of analysis. It represents single column of a table or multiple
column of table.
To create dimension object follow the procedure give in “Creating Object” and from properties tab select dimension radio button.
Detail Object
A detail provides descriptive data about a dimension. A detail is always attached to a dimension. It maps to one or more columns or functions
in the database that provide detailed information related to a dimension. You define a detail object by selecting Detail as the qualification for
To create dimension object follow the procedure give in “Creating Object” and from properties tab select Detail radio button.
Measure Object
Measure object are numeric objects and they are dynamic in nature as they valuereturned by measures changes based on dimension
To create dimension object follow the procedure give in “Creating Object” and from properties tab select measure radio button. You would
Following five basic aggregate functions are available to be used while creating measures.
SUM
COUNT
AVERAGE
MAXIMUM
MINIMUM
Well, Most of the designers make this mistake and they jump directly on designer. But this might end up you in future Universe Maintenance
problems. Understanding the data source on top which universe to be developed is very important. The Universedesigner must understand
the tables, type of data stored in those tables, relationship between tables, Business terms and their meaning, any specific formula which will
be used to derive the measures. Understand Reporting need and what all tables are required to feed the data to reports.
Before you actually start building the Universe plan it well in advance. Identify number of universes required for reporting. Identify mesures,
dimensions and details objects. Try to document it well and in detail. This would be a Universe blueprint which will help while actually
Once you have completed first two stages, start building the universe using Universedesigner. The planning document created in planning
stage will help you a lot while building the universe. While building the universe its always better to create a Unittesting document for
universe and create unit tests fof every object you create in universe. Test each and every object in universe as soon as you create it. This
will minimize the possible errors and bugs. Frequently use the universe integrity test tool to identify SQL traps, join path problems.
This is one of the very important stage of Universe building process. have very detailed universe testing plan ready for this stage. Test
universe against different scenarios, for SQL traps by creating sample reports, test measures, compare the data against manual SQL data. if
possible ask few business users to use the universe for creating some sample ad hoc reports.
5. Deploy it.
Once all above stages are completed and well documented, Its time to deploy it for actual use for creating reports. You can deploy universe
using BIAR tool. if productionBusiness Objects Server is available from development environment you can directly export the universe to
production servers.
6. Maintenance.
Since nothing is prefect issues are supposed to come frequently after deployment. Change the Universe for possible resolution and re-
deploy it. Make sure you document every change you made in universe against the change request.
Measure object definition contains aggregate function and a column. When measures are used with dimension or details objects query
As a thumb rule of SQL, if any aggregate function is used in SQLquery rest of the attributes should be used in Group by clause. Same
e.g.
If you have used above objects in query, Following query will be inferred
Now if you use another dimension object in query following query will be generated .
Let’s understand how Business Objects processes the measure objects in a report query.
TODO: Diagram
2. web Intelligence infers the SQL based n objects used in report query and it send select query to database
3. The data is returned to the micro cube. First level of aggregation takes place at micro cube.
4. Micro cube then projects the data to report. Lowest level aggregated data is now held at micro cube.
Micro cube holds data ate lowest level of aggregation. This data is then project to the report in the form of chart, table. Since you are
projecting all the data from micro cube no projection aggregation takes place.
TODO: Diagram
However, if you edit the table or chart and remove any of the dimension or column from table, the measure needs to be aggraded at higher
e.g. if you are have defined report as region wise, country wise sales revenue. In this report
region, country are dimension whereas sales revenue is measure. Now if you delete any of the dimension say region then sales revenue
JOIN_BY_SQL is a one of the parameter in Universe Parameters. Its included to define how to handle multple SQL. When multiple
Business Objects will combine the the results of SQL’s if database permits it, When JOIN_BY_SQL is set to NO Business Objects will not
While designig a Universe, I am sure you must have encountered join path problems and various traps like chasm traps, fan trap to solve this
we have to use alias or contexts and separate query for measures. In situation like this, Business Objectsgenerates mutple queries and
synchronizes the queries in a single cube. However this can result in slow running report as each query can bring lots of record (e.g. 2M) and
combining them into a single cube can be performance intensive task resulting slow running report.
To avoid this we can use JOIN_BY_SQL which uses JOIN_BY_SQL and push the sunchronization of resultsets on to database side instead
help significantly to imporve performance as database servers are more powerful and pushing synchronizatin on DB side will reduce the load
SELECT DISTINCT
Article_lookup.Family_name,
sum(Article_lookup.Sale_price)
FROM
Article_lookup
GROUP BY
Article_lookup.Family_name
SELECT DISTINCT
Article_lookup.Family_name,
sum(product_promotion_facts.promotion_cost)
FROM
Article_lookup,
product_promotion_facts
WHERE
( Article_lookup.Article_id=product_promotion_facts.Article_id )
GROUP BY
Article_lookup.Family_name
SELECT
NVL( F__1.Axis__1,F__2.Axis__1 ),
F__1.M__262,
F__2.M__194
FROM
SELECT
Article_lookup.Family_name AS Axis__1,
sum(product_promotion_facts.promotion_cost) AS M__262
FROM
Article_lookup,
product_promotion_facts
WHERE
( Article_lookup.Article_id=product_promotion_facts.Article_id )
GROUP BY
Article_lookup.Family_name
F__1
SELECT
Article_lookup.Family_name AS Axis__1,
sum(Article_lookup.Sale_price) AS M__194
FROM
Article_lookup
GROUP BY
Article_lookup.Family_name
F__2
ON ( F__1.Axis__1=F__2.Axis__1 )
well, after reading this dont just go back and turn on the JOIN_BY_SQL. There are cases when JOIN_BY_SQL might degrade your
performance than improving it. You should evaluate it for any of your report which is slow performing and which has multiple queries and
JOIN_BY_SQL can is Universe parameter. open the Universe Options dialog and click on Parameters tab and you can find it there, if its not
JOIN_BY_SQL = YES/NO
In this SAP Business Objects Universe Designer Tutorial we will learn about shortcut joins, How to use shortcut join to generate
Shortcut join is a join that joins tables by bypassing middle table that exist in the universe. Generally shortcut joins are used to generate
e.g. Consider following scenario. If we want to see article and its sold amount the query will join article_lookup and shop_facts through
product_promotion_fact,
However this is not a efficient query as we can simple join article_lookup ans shop_facts using article_id.
But creating such a join, It will introduce a loop in universe, now you can solve this loop using alias or shortcut join.
Lets see how we can solve this using shortcut join.
Instead of creating normal join between article_lookup and shop_fact, we will create shortcut join. Now check the loop. You could see that,
4. Click OK.
Types of Joins in Business Objects Universe
by BID W TEAM on OCTOBER 27, 2010
In Previous post we have covered cardinalities in BO universe. In this post we would be learning types of join in SAP Business
Following join types are available in Business Objects UniverseDesigner which can be used to join two tables.
Equi-Join
Equi-join is join which uses “=” equal operator to join two tables. Generally equi join is used to join primary table using primary key with
When two tables are used using equi-join it returns all those rows from selected table which matches the equality condition.
Outer Join
Outer join links two tables using a join operator. When tables are linked using outer joins the select query returns all the records which
matches the join condition and returns all the records from one table even though do not match the join condition.
Left Outer join: This outer join returns all the records from left table even when they do match the join condition.
Right Outer join: This outer join returns all the records from right table even when they do match the join condition.
You should avoid using outer joins as it may cause query to run slower. Outer joins should be placed at the end of a join path otherwise it
maybe causes other queries to match a NULL equality condition which might give an error.
Theta Join
A theta join is a between-type join that’s joins tables based on a relationship other than between two columns. It is generally used to
demonstrate ranges. A theta join can use any operator other than equality operator.
2. Select the table1 which should be joined to another table using between operator.
4. Now select the two columns from table two which should represent the range.
6. Click Ok
This theta joins uses between operators to join two tables
Shortcut Join
A shortcut join is a join which provides shorter way to join two tables by avoiding intermediate tables between join paths of tables. It is very
Shop_facts, Article_lookup and product promotion facts are joined through Article id. Now if we want to see Duration and amount sold the
query will have un-necessary join of shop_fact and Article_lookup table as there is no join between shop_facts and product_promotion_fact.
However if we join shop_facts and product_promotion_fact, it will create a circular loop which might confuse universe to decide on which join
path to take. This can be avoided by using shortcut join instead of using normal join. Shortcut join is represented by dotted line in designer.
2. Select the table on which you want to create self restricting join.
3. Select the same table name from table 2 combo box also.
6. Click OK.
Cardinality of self restricting join should be set to 1:1 otherwise it gives error whiledetecting contexts.
Try to create each type of join in BO universe and practice it and test it using Query Panel.
How to Define Cardinalities in Business Objects Universe
by BID W TEAM on OCTOBER 26, 2010
In previous post we have learned how to set up join in BO universe. in this post we will lean what is cardinality and how to define cardinalities
What is cardinality?
Cardinality means a relationship between two tables based on a join. Means how many rows of one table will match with rows in other tables
A manager can have many employees reporting to him, so the relationship between manager and employee table is 1-N.
One-to-One (1-1)
One-to-Many(1-N)
Many-to-many (N-N)
Many-to-one(N-1)
Cardinality in universe design is based on a logical algorithm, which uses physical count of record from the table.
The automatic detection tool only gives correct cardinality if the database is populated with realistic data.
Also, the automatic detection tool fires three queries for every join to set the cardinality. So if you have lots of table in schema, automated
cardinality detection tool is not a good idea as it might overload the database with queries.
automated cardinality detection tools determines the cardinality for this join.
3. One query to find number of rows when these two tables are joined
1st query will return 10, second query will return 20, and third query will return 20 which would tell that employee table is at many sides and
The output of queries is very important for automated tool and that’s why database should contain realistic data.
2. If no joins is selected, it asks for if you want to detect cardinality for all joins.
3. Click OK.
5. Click ok.
After reading this article you should be comfortable with cardinality concept and its usage in SAP Business Objects Universe Design.
Since now we have inserted table in designer pane. We need to define joins between tables. For correct SQL query generation its very
There are two different ways to define joins in Business ObjectsUniverse Designer.
Define joins manually in schema
2. Drag the column from one table on the column of other table to which you want to join the table
2. Select the columns from both the table which would be part of joins
3. Once Columns are selected join expression will be created in expression text box you can specify join operator here if you want to
3. A dialog will pop up showing possible joins for selected tables based on similar column name
What is a context?
A context is a group of path that defines a specific path for a query. Any objects created on a table column which belong to specific contexts
is naturally compatible with all other objects from same contexts. When objects from two or more contexts are used, separate SQL is
generated and results are then merged in a micro cube. This makes sure that no incorrect result is generated due to loop or any other join
path issue.
3. Manually
2. Designer will show up the name and joins for the candidate context
3. Review the highlighted joins in respective context if you are ok with it click on add button.
1. Click on tools
3. Detection tool will show the loops in universe and it will propose either alias on context to resolve the loop.
4. Click on forward button till it says “The loop is not covered by any context”
2. It will show the possible context. Follow the process of “Creating context automatically” to create context and resolve loop.
1. Click on Insert->Context
4. Click OK
5. Make sure each join except shortcut join is included in at least one context.
Testing Contexts
When context exist in universe. Designer can generate three types of queries.
Ambiguous query
Inferred query
Whenever you create a context you should check context against these three queries two test correctness of context.
Ambiguous query
If you have multiple contexts in universe, try creating a report which includes objects common to both the context. This situation does not
give enough information on which context to use while generating the query and inturn it prompts all available contexts to user to choose
Make sure Allow selection of multiple context option is selected from SQL tab of universe parameters as user might select multiple
If you have used object in a report which belong to multiple context and objects which are unique to each contexts. The tool creates multiple
SELECT statements for each context and then result is merged in to present in single table form this is called as Incompatible Objects query.
Inferred query
Inferred query is query which gives enough information to tool to choose the right context without prompting to user.
When you have context in universe make sure you test the contexts by creating all three types of query and observe the behavior of tool in
Apart from alias and context, shortcut join can also be used to resolve the loops in universe.
In the series of Business Objects Designer Tutorial in this post we will be learning about loops in Universe how to resolve it.
What is Loop
Loop is a join path problem which causes query to return less records than expected. Loop arises when join between tablesforms a closed
path.
e.g. in below tables, join arrangement between table forms a loop when these tables are joined in universe.
There two ways to detect loop, automatically and manually. You can just view the structure in BO designer and detect the loop visually by
seeing a closed or circular join path or other way is detect it using loop detection tool.
1. Click on Tool
2. Automated Detection
Now if you look carefully at country table. Country table has two meaning, country where resort exists and country of a tourist.
Now if you create a report to see number of tourist and their country by each resort country, you will get undesired result. Query will only
show data for only that country where tourist country and resort country is same, means it will not show tourist which came from other
country.
If you build report on above object, designer will generate query like
WHERE
( City.city_id=Customer.city_id )
AND ( City.region_id=Region.region_id )
AND ( Country.country_id=Region.country_id )
AND ( Resort_Country.country_id=Resort.country_id )
AND ( Customer.cust_id=Sales.cust_id )
AND ( Sales.inv_id=Invoice_Line.inv_id )
AND ( Invoice_Line.service_id=Service.service_id )
AND ( Resort.resort_id=Service_Line.resort_id )
AND ( Service.sl_id=Service_Line.sl_id )
Now if carefully notice the WHERE caluse you will see why result are coming wrong.
Country.country_id=Region.country_id
Country.country_id=Resort.country_id
Above two joins are putting the restriction causing query to return only those tourists which reside in same country of resort
You can fix the loop issue using Aliases or Context in designer.
Alias is an alternative name given to table or any other object. Same technique can beused to break the loop in designer.
In our loop problem COUNTRY table is serving two purposes, resort country and customer country. We can break this loop by creating an
alias table for country table to separate resort country and customer country as.
Country_region =Region.country_id
Country.country_id=Resort.country_id
There is now one join applying a restriction on the Country table and another join applying a restriction on the Resort_Country table. Now
Context is another way to resolve loops in universe. Contexts resolves loop by defining a set of join that defines specific path through tables
in a loop. It makes sure that join are not included from different path in the same query.
Generally contexts are used solve a loop caused by multipurpose lookup table.
The Business Objects Universe is a semantic data model or layer between users and database ( that stores organization data ). InBusiness
Objects terminology its a semantic layer which contains Objects ( dimension, detail and measure), Classes and which depicts Organization
Classes : A class is nothing but a logical grouping of a related objects. Name of the class describes the object it contains.
Objects: Object is nothing but a names entity that’s maps to the column of a underlying data source table.
While naming the Classes and Objects one should use Business Terminology as these are the things which gets exposed to report users
e.g. instead of naming an objects as YEAR_REVENUE you should name it as “Yearly Revenue”
1. The places an layer between database and business uers and presents database/data warehouse in Business Terminologies which
2. Universe allows user to have no knowledge of SQL only developer needs to know the SQL. Business User can simply drag drop the
objects and the tool will generate the required query to fetch the data.
3. All types and security can be applied on Universe making it data secure and only available to related person.
List of values or LOV is a distinct list of data values associated with an object. When any dimension of details object is created LOV is
When user needs to filter data in a query based on specific object values, User can simply view the LOV of that objects and choose the value
A,B,C and if user wants to filter the data of country B, user can put a filter on Country dimension and choose the B as filter while executing
the query.
Objects 12.0Universes@<ServerName><UniverseName>
LOV Options
List Name
It’s the name of LOV file by which it will stored on local file system. User can override the default name and can enter his own LOV name.
When checked this option allows report users to edit the list of values of an objects. The purpose of a list of values is usually to limit the set of
available values to a user. If they can edit a list, you no longer have control over the values they choose. Normally, if you are not using a
personal data file as a list of values source, you clear this option to ensure that users do not edit lists of values.
underlying column are frequently changing. This options should be use very carefully after evaluation. If this option is not selected LOV is
Hierarchical Display
Select the Hierarchical Display property to display the cascading list of values as a hierarchy in Web Intelligence.
When this option is selected LOV file associated with object is exported to universe CMS and gets stored as XML on CMS
To view the LOV of an objects click on display button on properties tab of an object
You can remove the values from LOV of an object by applying a filter or add values to LOV by adding a column.
2. The designer query panel will appear showing default object of a LOV
3. Drag drop the condition object in condition pane and specify the appropriate condition.
4. You can also view the SQL of the LOV query by click on SQL icon on toolbar.
5. Run the query to test the values after applying condition on LOV
You can also view all the object which has LOV associated with them and edit them.
3. Select the LOV objects and click on Edit if you want to edit a LOV.
1. In addition to query you can also define LOV for an object using personal data file like CSV and values from this file can also be
2. Click on Personal Data and provide the details on Personal data LOV dialog box.
Cascading LOV
Cascading LOV is a LOV associated with hierarchy of an object in the universe. Cascading LOV is created, and if any of the object is used
as prompt filter in report query, user has to answer series of values from cascading LOV.
3. Click OK.
Now if you use any of the objects as prompt in query. It will prompt the hierarchical LOV to user.
In this topic we would be covering very basics of starting universedesigner and basics of universe file name and other details which are very
3. Click on Designer
On Login screen you would need to provide following information
System:
Sever Name: It’s the Business Objects Server Name or a CMS Name.
Port Number: It’s the port number which would be used to communicate betweenDesigner and Business Objects Server default is 6400
Authentication:
Enterprise: enterprise is the most widely used authentication in which a Universedesigner user is created in Business Objects CMS
enterprise server.
Standalone: This mode is used when no CMS is available or you are working locally
It will open up Business Objects Universe Designer and Quick Design Wizard screen will appear. Cancel it as we are not going to use a
Basics of Universe
Lets understand the basic concepts around the Business Objects Universe which would help you to work with the designer in well manner.
Apart from other universe concepts understanding Classes and Objects initially is important to go ahead with universe design.
Classes: A Class is logical group name of objects created in universe. Basically it represents the category of a objects it groups.
e.g. Marketing class will hold all the objects related to marketing department.
Objects: An object represents the table column or column expressions of a database table.
Importing Universe:
Importing a universe means getting it from Business Objects repository and storing it to the local file systems for development and
modification. When you import a universe its latest copy from universe gets stored on local file system and gets opened in the
universe designer.
To import a universe
1. Open designer
2. Click on File>Import
3. It will list all universes which are available to be imported.
4. Click on universe
5. Click OK
However you can choose the folder where you want to import the universe while importing the universe.
Exporting Universe
Exporting universe means saving universe in the repository to be consumed by end users and report developers for report development.
To export universe.
4. If universe names is listed inn the listed click on Add button to add it.
5. Click ok
Once Universe is exported to the repository it is available all users who have access to universe and CMS. They can now use to create
When you save universe it is saved locally with filename.unv but not in the repository. When you export universe its saved locally as well as
If you want to make universe available to other universe designer who do not have access to CMS. You need to save this universe with
While saving universe for all users you need to save universe with unsecured data source connection like personal connection instead of
Universe gets saved on local file system with filename with .UNV extension. The maximum length of universe file names depends on the
Long Name: The Universe name which will be published to the end user is called as universe long name and you cam use up to 200
characters.
Designing Schema
This is the very first step of universe design. Designing schema involves adding table, setting up joins and cardinalities and then assessing
To design a good schema universe designer is expected to know the basics of database schema design, business concepts, relationship
Add Tables
2. Launch database table browser in universe. You can launch table browser either by two way
1. Select the table of view by clicking on it and click on Insert button to insert a table in universe designer pane. You can also add
2. After adding all tables in universe designer pane it should like as below. Once tables are added it is represented graphically along
1. After adding all tables in universe designer pane it should like as below.
Tips:
When tables are added to designer pane it gets arranged horizontally. To arrange them properly click on arrange table icon
You can change the table display by pressing Ctrl+T which would be very helpful if you have lots of table in universe.