Sie sind auf Seite 1von 24

Universe Designer

Business Objects General


What is Business Objects" ]
Business Objects is an integrated query, reporting and analysis solution for business
professionals that allow them to access the data in their corporate databases directly from their
desktop and present and analyze this information in a Business Objects document.
It is an O!" tool that high#le$el management can use as a part of a %ecision &upport &ystems
'%&&(.
Business Objects makes it easy to access the data, because you work with it in business terms
that are familiar to you, not technical database terms like &).
What are the diferent Business Objects Products?" ]
*ser +odule, %esigner, &uper$isor, !uditor, &et !nalyzer, Info ,iew '-eb Intelligence(, Business
Objects &oftware %e$elopment .it '&%.(, Broadcast !gent etc.
What are diferent access modes in Business Objects Universe?" ]
/here are two types of access modes in which uni$erse can be sa$ed and accessed.
0nterprise +ode
-orkgroup +ode
0nterprise +ode
-hen you are working in a design by connecting to repository means you are working in
enterprise mode.
-orkgroup +odel
-hen you sa$e uni$erse for other users so that they can access it without connecting to
repository is called as workgroup mode.
By default uni$erse is sa$ed in a mode in which you presently working.
How do you save a universe for others so that other users can be accessed it in
workrou! mode?" ]
1egardless of access mode you can sa$e uni$erse for all users so that they can access it. -hile
sa$ing uni$erse for other users connection type must be 2unsecured3
&teps to sa$e uni$erse for all users4
5. +ake sure uni$erse you want be a$ailable to all users does not ha$e secured connection
6. &elect 7ile #8 &a$e !s
9. 7rom &a$e !s dialog , check on 2&a$e for !ll *sers3
:.

What do you mean by on"ine or o#ine mode?" ]
/hese two modes define whether you are connected to repository or not while working with
in
uni$erse designer.
Online Mode4 -hen you are connected to the repository while working with uni$erse designer
then it called as online mode
Offline Mode4 -hen you access uni$erse designer without connecting to repository is called as
offline mode,
;ou can open the uni$erse in offline mode only when that uni$erse was pre$iously opened in
online mode.
;ou can access the database if you ha$e access information and security information stored on
local machine.
Offline mode comes pretty handy if you need to work when tra$eling, offsite etc.
What is Business Objects Universe?" ]
Business Objects uni$erse is semantic layer< it hides the data comple=ity from the business user
by presenting underlying data base structure in the form of friendly business terminology by
using objects and classes. It helps user query the database without knowing the comple=ity of
database.

%atabase >onnection and parameters
How do you connect universe to database?" ]
In order to create uni$erse and reports you need to connect to the database where data is
stored.
/o connect to database you need to define the connection. >onnection is a named set of
parameters which contains details of how to connect to database.
Business Objects be default pro$ides data access dri$ers of $arious popular databases also it
supports popular connection type like O%B>, O0%B. ?owe$er it is recommended to use nati$e
dri$ers of database for data access.
What a"" ty!es of connection can be created?" ]
Business Objects has three types of connection which can be used based on need.
5. &hared >onnection
6. &ecured >onnection
9. "ersonal >onnection
!ll the connection details are stored in &I folder located at.
>4@%ocuments and &ettings@Auser name8@!pplication %ata@Business Objects@Business Objects
56.B@lsi
&hared >onnection
ItCs an unsecured type of connection and generally used when multiple designers are working on
uni$erse.
/he details of shared connection are stored in &%!>.&I file.
&ecured >onnection
&ecured connection plays a $ital role in data access as these are the most secured data
connection and used to distribute the uni$erse.
5. &ecured connection is used to centralize and control the access to data.
6. ItCs the safes type of connection and must be used to pre$ent sensiti$e data.
9. &ecured connections are must when you are distributing uni$erse to end users.
"ersonal >onnection
ItCs a personal use connection and restricts the data access on the machine where uni$erse and
connection is created.
;ou can not use personal connection type while e=porting uni$erse to >+&.
Its details are stored in "%!>.&I file
$%!"ain diferent Universe Parameters?" ]
Business Objects %esigner lets you set the uni$erse options through uni$erse parameters.
7ollowing parameters options are a$ailable.

%efinition4
In /ab we can pro$ide the uni$erse name, %escription and choose the connection. If connection
is not a$ailable you can create or edit the e=isting connection.
&ummary4

/his tab gi$es you information about the uni$erse. It shows following information.
>reated4 /he date uni$erse was created
+odified4 /he last time uni$erse was modified.
1e$ision4 Dumber of times uni$erse was e=ported
>omments4 ;ou can enter the informati$e te=t here.
&tatistics4 !ll the object le$el statistics
&trategies4

;ou can select the strategies to get the metadata of the uni$erse. ;ou can define the e=ternal
strategies and select here to apply to current uni$erse.
>ontrols4

>ontrols tab allows to set the $arious result set le$el parameters here.
imit size of result set to4 /his allows limit the number of records to be returned by the query. It
only limits the rows returned to the web intelligence. /his limit does not limits the number of
records returned by database
imit e=ecution time to4 /his limits the time query e=ecuted. It does not limit the actual time
query e=ecutes on 1%B+&. It does not stops the query if query e=ecuting on the database.
-arn if cost estimates e=ceeds4 /his parameter depends on if database statistics is updated.
&)4

/his tab allows to control the &) generation.
inks4

/his tab allows to specify the linked uni$erses like .ernel uni$erse and deri$ed uni$erse.
"arameters4

In this tab you can specify the parameters which are specific to the data access dri$er.
Dote4 "arameters set here are specific to uni$erse. It does not affect other uni$erse.
&tructural Information
$%!"ain diferent ty!es of joins avai"ab"e in Universe &esiner" ]
7ollowing joins are a$ailable in uni$erse designer
Equi or Inner or Natural or Simple join4 is based on the equality between the $alues in the
column of one table and the $alues in the column of another. Because the same column is
present in both tables, the join synchronizes the two tables.
Self-Join: join a table to itself i.e create a self#join to find rows in a table that ha$e $alues in
common with other rows in the same table. &elf join is actually self restriction join.
>ardinality of self join should be set to 545 otherwise you might recei$e 2Dot all cardinality is
set message3 during integrity check.
Theta or Non-Equi join: links tables based on a relationship other than equality between two
columns. ! join is a relational operation that causes two or more tables with a common domain
to be combined into a single table. /he purpose of joins is to restrict the result set of a query
run against multiple tables.
Example: /heta join
/he !geEGroup table below contains age range information that can be
used to analyze data on the age of customers.

;ou need to include this table in the uni$erse, but there is no common column between the
>ustomer table and the !geEGroup table, so you cannot use an equi#join. ;ou create a theta join
using the operator FBetweenF for ma=imum age range and minimum age ranges. By using a theta
join, you infer that a join e=ists where the $alue in a row of the !ge column in the >ustomer
table is between the $alues in a row for the !geE+in and !geE+a= columns of the !geEGroup
table.
/he join is defined by the following e=pression4
Customer.ae !et"een #e$roup.ae$min and #e$roup.ae$max
Outer join: links two tables, one of which has rows that do not match those in the common
column of the other table.
%eft Outer Join: !ll records from first table with matching rows from second.
1ight Outer Goin4 !ll records from second#named table with matching rows from left.
7ull outer join4 !ll rows in all joined tables are included, whether they are matched or not.
Short&ut join: can be used in schemas containing redundant join paths leading to the same
result, regardless of direction. Impro$es &) performance.
! shortcut join is a join that pro$ides an alternati$e path between two tables. shortcut joins
impro$e the performance of a query by not taking into account intermediate tables, and so
shortening a normally longer join path. ! common use of shortcut joins is to link a shared lookup
table to another table further along a join path. /he join path comprises se$eral different tables
in the same conte=t. In such a case, the shortcut join is only effecti$e when the $alue being
looked up has been demoralized to lower le$els in a hierarchy of tables, so the
&ame $alue e=ists at all the le$els being joined.
Example: &hortcut join
In the following e=ample the column !rticleEcode appears in both the tables
"roductE"romotionE7acts and &hopE7acts. /he $alue of !rticleEcode is the same for both tables.
/he normal path for a query using !rticleEcode
from "roductE"romotionE7acts and &hopE7acts, is to pass through the intermediary table
!rticleEookup.

/he shortcut join directly linking "roductE"romotionE7acts and &hopE7acts allows the query to
ignore the intermediary table !rticleEookup, optimizing the query.
Dote4 %esigner does not consider shortcut joins during automatic loop and conte=t detection.
?owe$er, if you set the cardinality for a shortcut join you a$oid recei$ing the message HDot all
cardinality is set while detecting conte=ts.
What is cardina"ity and why it's im!ortant to set cardina"ity?" ]
>ardinality e=presses the minimum and ma=imum number of instances of an entity B that can be
associated with an instance of an entity !. /he minimum and the ma=imum number of instances
can be equal to B, 5, or D.
Because a join represents a bi#directional relationship, it must always ha$e two cardinalities.
/here are two main methods for detecting or editing cardinalities4
I %etect >ardinalities command
I 0dit Goin dialog bo=
If you selected the %etect cardinality in joins options in the %atabase tab of the Options dialog
bo=, %esigner detects and retrie$es the cardinality of the joins. If you do not use this option, you
can still retrie$e the cardinality for one or all joins in the uni$erse.
&etting up cardinality is $ery important as it lets you find the &) trap problems as well as it
helps in detecting the conte=ts.
Why it's im!ortant to detect cardina"ity manua""y instead of automatica""y?" ]
!utomatic cardinality detection tool fires three queries per join to detect the cardinality of a
join. /his could lead to serious performance problem if there are lots of table in uni$erse which
contains huge data.
e.g. &uppose I ha$e a employee table and %epartment table. /o detect its cardinality Business
Objects will fire following three queries
select count'J( from calendarEyearElookup<
select count'J( from shopEfacts<
select count'J( from calendarEyearElookup a, shopEfacts b where a.weekEidKb.weekEid<
/able which contains higher number of records will be at many ends.
!lso, !utomatic join detection is totally depends on data in the table, if you are creation
uni$erse on empty database or dummy data , automatic join detection might not return correct
result.
Classes and O!je&ts:
What are classes?" ]
! class is a logical grouping of objects within a uni$erse. In general, the name of a class reflects
a business concept that con$eys the category or type of objects.
e.. in a uni$erse pertaining to human resources, one class might be 0mployees. ! class can be
further di$ided into subclasses. In the human resources uni$erse, a subclass of the 0mployees
class could be "ersonal Information.
!s designer, you are free to define hierarchies of classes and subclasses in a model that best
reflects the business concepts of your organization.

What are objects?" ]
!n object is the most refined component in a uni$erse. It maps to data or a deri$ation of data in
the database. *sing objects, end users can build queries to generate reports. /he name of an
object suggests a concept drawn from the terminology of a business or discipline.
7or a human resources manager, objects might be 0mployee Dame, !ddress, &alary, or Bonus,
while for a financial analyst, objects might be "rofit +argin, 1eturn on In$estment, etc. 7or the
purposes of multidimensional analysis, objects are qualified as one of three types4 dimension,
detail, or measure.
Objects can be of any type of amongst three.
I %imension Objects
I %etails Objects
I +easure Object

What are &imension(&etai"()easure objects?" ]
-hen creating uni$erses, uni$erse designers define and qualify objects. /he qualification of an
object re$eals how it can be used in analysis in reports. !n object can be qualified as a
dimension, a detail, or a measure.
# dimension o!je&t is the object being tracked< in other words, it can be considered the focus
of the analysis. ! dimension can be an object such as &er$ice, "rice, or >ustomer.
%imension objects retrie$e the data that will pro$ide the basis for analysis in a report.
%imension objects typically retrie$e character#type data 'customer names, resort names, etc.(,
or dates 'years, quarters, reser$ation dates, etc.(
# detail o!je&t pro$ides descripti$e data about a dimension object 'or attribute of a dimension(.
It is always associated with a specific dimension object. ?owe$er, a detail object cannot be used
in drill down analysis.
0.g. !ddress L phone number can be attributes about the customer dimension.
# measure o!je&t is deri$ed from one of the following aggregate functions4
>ount, &um, +inimum, +a=imum or a$erage or is a numeric data item on which you can apply, at
least locally, one of those functions. /his type of object pro$ides statistical information.
0=amples of measure objects include the following4 1e$enue, unit price etc
$%!"ain *uery !rocess or How do Business objects !rocess measures and how va"ues
are !rojected?" ]
/here are two le$els of aggregation in the query process
5. !ggregation at &00>/ le$el
6. !ggregation at projection le$el

!ggregation at &00>/ le$el
!ggregation at &00>/ le$el occurs first in query process
*ser creates a query in -eb Intelligence.
-eb Intelligence infers the &) from the query and sends a &elect statement to the target
database.
/he data is returned to the micro cube. /his is the first aggregation le$el.
/he micro cube projects the aggregated data onto the report. %ata is split out in the )uery pane
requiring aggregation to lower le$els. /his is the second aggregation le$el.
!ggregation at projection le$el
-hen you run the query the result set of the &elect statement is stored in the micro cube, and
all data then held in the micro cube is projected into a block. !s data is projected from the
lowest le$el held in the micro cube no projection aggregation is taking place.

?owe$er, when you use the )uery pane to project only partial data from the microcube,
aggregation is required to show measure $alues at a higher le$el. 7or e=ample, in the pre$ious
e=ample, if you do not project the year data into the block, the three rows related to ;ear need
to be reduced to one row
/o show the o$erall &ales 1e$enue for that resort, so a sum aggregation is used.

-hen projecting all $ariable from the micro cube. Do aggregation takes place. -hen projecting
some $ariables from micro cube aggregation takes place.
;ou set projection aggregation on the "roperties page of the 0dit "roperties sheet for a measure
'right#click object 8 Object "roperties 8 "roperties(. "rojection aggregation is different from
&elect aggregation.
&etting selection and projection aggregates.
&tatically only certain &00>/Mprojection aggregation is compatible.
&00>/ aggregate
1ecommended projection aggregate
&*+
&*+
>O*D/
&*+
!,01!G0
Done
+!NI+*+
+!NI+*+
+IDI+*+
+IDI+*+
7or the report to present statistically correct data for a measure object both at a query le$el
and projection le$el, &00>/ and projection aggregates needs to be complement each other.
?owe$er, as *ni$erse designer if you configure a measure differently, the BO end user querying
tool will not stop you.
Dote4 7or !,01!G0 aggregate, projection aggregate would be set as &*+. ;ou would need to
change it to DOD0 manually.
What is !rojection areation?" ]
"rojection aggregates are those who take place when either dimension is mo$es on le$el abo$e
or below.
7ollowing are the recommended projection functions.
&elect !ggregate
"rojection 7unction
&*+
&*+
+ID
+ID
+!N
+!N
>O*D/
>O*D/
!,01!G0
DOD0
;ou can set the projection aggregate at measure properties. Dote the projection aggregate of
a$erage should be set to none.
What a"" unit tests you wou"d !erform to test the measure object?" ]
/esting measure object is $ery important as it is dynamic in nature.
7ollowing unit test can be performed to test measure object.
5. >reate a report which includes at least two dimensions and a measure.
6. /est the measure object with at#least 9#: different queries.
9. /ry remo$ing dimensions from the report to test the projection
:. ,alid date output by firing actual &) queries on database.
What is de"eated smart measure?" ]
! delegated measure is a measure whose calculation as is done at database le$el means its
delegated to database.
%elegated measure is useful when web intelligence does not pro$ide correct result of measure in
certain scenario like.
5. Don !dditi$e measure like *nique users
6. >omple= a$erage like weighted a$erage
9. 1atios
Benefits of %elegate +easures4
5. Increase web Intelligence querying efficiency
6. +akes Don#additi$e measures a$ailable in *ni$erse.
9. It also helps in performance optimization as it performs calculation at database le$el.
:. It e=tends calculations beyond -eb Intelligence.
'o" deleate measures "or(:)
In normal scenario, web intelligence calculates measures based on dimensions objects in the
query.
%elegate measures calculate measure for e$ery subset of dimensions required in the report.
e.. If you ha$e report with
>ountry, 1egion, ;ear dimension and &ales /otal and !$erage &ales /otal , Dormal measures will
calculate these two measures for all the dimensions in the report howe$er, If you ha$e remo$ed
the any of the dimensions from grouping set , -eb Intelligence does not no how to calculate
correct a$erage and might present wrong a$erage $alue.
7or abo$e scenario in case of delegate measures, measure $alues will be calculated for all the
dimensions set as
>ountry
>ountry, 1egion
>ountry, 1egion, ;ear
-hen report changes and user adds any new dimensions in the report web intelligence shows
O/O10710&? in place of measures indicating report to re#run to calculate measures correctly.
Best "ractices
5. *se %elegate measures when web intelligence might return wrong output for measures like
comple= a$erage.
6. %o not use delegate measures when standard measure works
9. %o Dot use delegate measures when you ha$e filter on measure and further aggregation on
filtered measure $alue as web intelligence returns O*D!,!I!B0 for such measures as it does
not know how filter affects measure.
%OO*S:
What is "oo! in universe and e%!"ain ways to reso"ve it?" ]
oops occur when there are two different paths to accomplish one join. &uch join forms a closed
path of table relationship causing loops. -hen loops e=ist in uni$erse it returns fewer records
than e=pected.
/he following structure now includes "1O%*>/E"1O+O/IODE7!>/& in the /est 7ashion uni$erse.
If users want to analyze articles $ersus time, there are now two join paths. Business Objects
does not know which path to take, the one $ia &?O"E7!>/& or the one $ia
"1O%*>/E"1O+O/IODE7!>/&.
/he circular appearance of these four joins is a loop, which can gi$e undesired &) 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 resol$ed and report is run following error might come.
0rror4 Incompatible combination of objects
/here are two ways to sol$e loops4 *sing >onte=t and !lias.
OO"&
What is a"ias and it can be used to reso"ve +oo!s?" ]
!lias is an alternati$e name gi$en to table or any other object. &ame technique can be used to
break the loop in designer.
In our loop problem >O*D/1; table is ser$ing two purposes, resort country and customer
country. -e can break this loop by creating an alias table for country table to separate resort
country and customer country as.
>ountry table will join to resort to become resort country
>ountryE1egioin alias will be joined to region to become customer country

Dow if you create same report you will see
>ountryEregion K1egion.countryEid
>ountry.countryEidK1esort.countryEid
Once you ha$e created an alias, you would also need to redefine the object to use alias table. In
abo$e case origin country should use coutryEregion.country column instead of country.country
column.
1esol$ing oops using >onte=ts
>onte=t is another way to resol$e loops in uni$erse. >onte=ts resol$es 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 conte=ts are used sol$e a loop caused by multipurpose look table.
What is a conte%t?" ]
! conte=t is a group of path that defines a specific path for a query. !ny objects created on a
table column which belong to specific conte=ts is naturally compatible with all other objects
from same conte=ts. -hen objects from two or more conte=ts are used, separate &) is
generated and results are then merged in a micro cube. /his makes sure that no incorrect result
is generated due loop or any other join path issue.
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 &).
If you are using conte=t make sure its testes properly. ;ou should test using following scenarios.
5. >reate a query which includes objects which are only in one conte=t 4 BO should be able to get
the correct result by determining the conte=t.
6. >reate a query which includes objects from both the conte=ts. BO should generate two queries
and then unions it.
9. >reate a query which includes object which are common two both the conte=t. BO should
prompt for conte=ts to be used.
%esigner detects conte=t by identifying table which has only many ends of joins attached. Do
joins following back from one to many are included.
0$ery Goin e=cept shortcut join must e=ist in at least one conte=t.
%is#ad$antage4
-hen you use a conte=t, you e=pose the BO end user to the database structure. /hey are forced
to decide which conte=t they want to use to run their query. /he role of the uni$erse is to shield
end users from the database structure, so they do not ha$e to make such decisions.
?ow to identify conte=ts
5. *ni$erse designer does ha$e automatic detection tool for conte=t. +ake sure cardinality of all
joins is set correctly for this.
6. ook for tables which are only at many end of relationship.
What testin stratey wou"d you fo""ow to test conte%ts?" ]
-hen conte=t e=ist in uni$erse. %esigner can generate three types of queries.
I !mbiguous query
I Inferred query
I Incompatible Objects query.
-hene$er you create a conte=t you should check conte=t against these three queries two test
correctness of conte=t.
!mbiguous query
If you ha$e multiple conte=ts in uni$erse, try creating a report which includes objects common
to both the conte=t. /his situation does not gi$e enough information on which conte=t to use
while generating the query and inturn it prompts all a$ailable conte=ts to user to choose from.
Once user selects the conte=t, query is generated accordingly.
+ake sure !llow selection of multiple conte=t option is selected from &) tab of uni$erse
parameters as user might select multiple conte=t in case of ambiguous query.
Incompatible Objects query.
If you ha$e used object in a report which belong to multiple conte=t and objects which are
unique to each conte=ts. /he tool creates multiple &00>/ statements for each conte=t 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 gi$es enough information to tool to choose the right conte=t
without prompting to user.
-hen you ha$e conte=t in uni$erse make sure you test the conte=ts by creating all three types of
query and obser$e the beha$ior of tool in each query type.
Goin "ath "roblems '&) /raps(
What are diferent ,*+ -ra!s you need to take care in universe?" ]
7an traps and >hasm traps are problems which are inherent in &) that are caused by the order
in which the elements of &00>/ are processed.
In &) a select statement processes &00>/, 71O+ and -?010 cause first and forms a result
table in memory based on the tables specified in where clause and restrictions specified.
?owe$er this does not cause a problem, but if aggregates are applied then it may cause a
problem in particular circumstances.
/hese traps are difficult to identify unless you take a deeper look at the detailed data.
/hese traps return many rows than e=pected.
/here are two types of trap which you might need to deal with.
>?!&+ /rap
7an /rap
What is .H/,) -ra! and e%!"ain ways to so"ve it?]
! >hasm trap is a join path type problem between three tables where two many#to#one join path
con$erge on a single table and there is no conte=t to separate the con$erging path.
?owe$er e$en if we ha$e abo$e type of joins in uni$erse we e=perience chasm trap problem only
when
5. /here is many#to#one#to#many relationship between three tables
6. 1eporting query ha$e objects on tables from many end
9. /here is more the one $alue for a single dimensional $alue.
etCs see it in detail. >onsider below diagram.

Dow in abo$e case when a query includes object from table B and /able > and objects from table
!, the >?!&+ trap causes a query to return e$ery possible combination of one measure with
other. /his result gets multiplied by number of rows in result set and output is similar like a
>artesian product.
/his >?!&+ trap can be resol$ed by e=ecuting separate query for each measure and then
merging the results.
?ow to detect >?!&+ trap in a uni$erse
>?!&+ trap can be detected automatically< you would need to use multiple ways to identify a
possible >?!&+ trap issue.
+ake sure you arrange one#to#many table from left to right in uni$erse and analyze one#to#many
relationship to detect possible >?!&+ trap issue.
*se detect conte=t automatic tool to detect possible conte=t in uni$erse and use them in order
to a$oid >?!&+ traps.
/est many#to#one tables by creating reports using object from table at many end. /ry adding
additional dimension object in report. If there is a >?!&+ trap aggregated $alues will be double
which might help you to detect possible >?!&+ trap.
ets see a practical >?!&+ trap e=ample in a uni$erse
et consider a following joins in uni$erse. In following diagram three tables are joined by many#
to#one#to#many join relationship.

If I want to see number of guest for a sports ser$ice, report returns following result
&er$ice
Dumber of Guests
&ports
5:P
If I want to see number of future guest for a sports ser$ice, repot returns following result
&er$ice
Dumber of 7uture Guests
&ports
Q
?owe$er If I include moth the measure together in the same query.
&er$ice
Dumber of Guests
Dumber of 7uture Guests
&ports
5QQ
RS
1esult seems to be inflated due to >?!&+ trap issue.
?ow does >?!&+ trap inflate the result of a queryT
>?!&+ trap can be detected automatically< you would need to use multiple ways to identify a
possible >?!&+ trap issue.
+ake sure you arrange one#to#many table from left to right in uni$erse and analyze one#to#many
relationship to detect possible >?!&+ trap issue.
*se detect conte=t automatic tool to detect possible conte=t in uni$erse and use them in order
to a$oid >?!&+ traps.
/est many#to#one tables by creating reports using object from table at many end. /ry adding
additional dimension object in report. If there is a >?!&+ trap aggregated $alues will be double
which might help you to detect possible >?!&+ trap.
ets see a practical >?!&+ trap e=ample in a uni$erse
et consider a following joins in uni$erse. In following diagram three tables are joined by many#
to#one#to#many join relationship.

If I want to see number of guest for a sports ser$ice, report returns following result
&er$ice
Dumber of Guests
&ports
5:P
If I want to see number of future guest for a sports ser$ice, repot returns following result
&er$ice
Dumber of 7uture Guests
&ports
Q
?owe$er If I include moth the measure together in the same query.
&er$ice
Dumber of Guests
Dumber of 7uture Guests
&ports
5QQ
RS
1esult seems to be inflated due to >?!&+ trap issue.
?ow to sol$e >?!&+ /rapT
;ou can sol$e >?!&+ trap using conte=t. In abo$e e=ample you can create conte=t.
5. !nalyze many#to#one#many relationship to detect possible >?!&+ trap.
6. *se %etect >onte=t to create conte=ts

5. &elect the conte=ts and click on !dd.
6. &elect 7ile#8"arameters to launch uni$erse parameter bo=.
9. >lick &) /ab
:. &elect +ultiple &) for each conte=ts option.
P. >lick O.
Dow when you create query, two separate queries will be generated and result will be merged.
/his is how >?!&+ trap gets resol$ed using conte=ts.
*sing 2+ultiple &tatement for +easure3 to sol$e >?!&+ trap.
If you ha$e only measure objects defined for both fact tables, then you can use the *ni$erse
"arameters option +ultiple &) statements for each measure. /his force the generation of
separate &) queries for each measure that appears in the )uery pane.
/his solution does not work for dimension and detail objects.
What is 0an -ra! and e%!"ain ways to so"ve it?" ]
!part from >?!&+ trap, fan trap is another kind of trap that may occur in uni$erse causing
wrong results in reports. ! fan trap can occur in uni$erse when there is a one#to#many join
between two tables which again joins to another table ha$ing one#to#many join relationship.

?owe$er ha$ing one#many#many relation in uni$erse does not always cause fan trap. ;ou get fan
trap issue only when reporting query ha$e
5. /here is a measure object based on middle table U /able B
6. +easure object from last table. U /able >
9. /able B '+iddle table( holds $alues which is aggregate of $alues from ,/able >
e.g. >onsider following e=ample.

It satisfies the first condition of 7an trap i.e 5#D#D relationship between three tables.
Dow if user creates a query to see how many models were sold by customer &ham and show his
sale quantity and sale total.
)uery will include following object.
>ustDame, &ale/otal, +odelId, &ale )uanity
which would certainly gi$e a wrong result as below due to e=isting fan trap issue.

If you could obser$e, &ham has sold total two models and its sale total is 5BB, howe$er in abo$e
report it would come as 6BB as for each instance of model sale total is repeated in report.
&o whatCs really happening in 7an /rap
-hen you run the query with following objects
>ustDame, &ale/otal and &ale)ty, measures are correctly aggregated, ?owe$er when also want
to know modelid, you get saletotal for e$ery model which makes result looks inflated.
/here is now way can detect 7an /rap automatically, you would need to $isually analyze the
relationship between table and result in report.
?ow to sol$e 7an /rap
/here are three ways to resol$e fan trap.
5. >hanging the uni$erse parameters to generate different &) for each measure.
/his method works only for measure objects. /hough it works to sol$e >?!&+ trap and 7an trap
itCs not recommended.
5. *se combination of alias and conte=t based on scenario in 7an traps.
&cenario 5
5. -hen three tables are joined by 5#many relationship
6. 1eport query contains dimension from first table and measure from rest of the two tables.

&olution
5. >reate an alias for a middle table which is at many ends.
6. >reate a join between new alias table and first table which is at one end.
9. &et the cardinality and set conte=t
:. >hange the &00>/ of &!0E/O/! object to refer to alias table.
V
Dow if you create a create query by implementing abo$e solution you would see two queries for
each measure and in turn result gets merged at the report cube le$el. /his should sol$e the fan
trap.
&cenario 6
5. -hen two tables are joined by 5#many relationship
6. 1eport query contains dimension and measure from first table and measure from last table.

&olution
5. >reate an alias for table !
6. >rate join from the alias != to table ! and set cardinalities
9. &et conte=t B and !
:. 0dit object ; so that it refers to columns in the alias != instead of table !

?ow to !$oid 7an /rap
-hile designing a uni$erse you can a$oid the 7an trap altogether by creating measure from the
table which is at the end table of 5#+#+ relationship howe$er it also depends on if you ha$e
those aggregate columns present in end table.

How wou"d you identify if there is a ,*+ tra! in universe?" ]
/here is not automated way to detect &) traps in uni$erse. One needs to do $ery detailed
analysis to identify possible traps in uni$erse. ;ou can use following techniques to identify traps
in uni$erse.
>heck and analyze all the one#to#many relationships
*se 2%etect >onte=ts3 tool to detect possible conte=ts. /his tool will analyze all D45 join paths
will show possible conte=ts.
!nalyze conte=ts. /he table where conte=ts intersect is the source of possible trap.
>heck if you ha$e any two tables which con$erge in to a single row. It could be a >?!&+ trap
source.
In the report if you are using any object from a tables which are con$erging into a single table.
>heck the result using database queries.
Object 1estrictions
What is object restriction?" ]
Object restriction is nothing but a condition applied on object to restrict the data. -hene$er
that object gets used in query, condition gets imposed automatically restricting the data.
Why one shou"d avoid !uttin restriction at object "eve"?" ]
Object restriction should be used with caution. !s it might sometime confuse the user after
seeing the data.
It has following drawbacks.
5. *ser can not o$erride the objects restriction.
6. *ser might not know that there is default restriction on objects and might get confused after
seeing a data.
&o if user is not aware of restriction it might create confusion for user. &o one should a$oid
putting restrictions at object le$el.
Wou"d you recommend usin condition objects instead of object restrictions?" ]
! condition objects or a predefined condition is restriction, created in designer which user can
choose to apply or not.
-hen user creates a report query they can inert these restriction whene$er they want to restrict
the data which gi$es much more control to user to apply restriction than forced restriction.
!d$antages4
5. *ser can choose the restrictions.
6. -e can apply it on entire uni$erse or a class.
&o itCs good to use condition objects compared to object restrictions.
W7unctions
.an you e%!"ain diferent functions avai"ab"e in desiner with its use?" ]
W7unctions are a$ailable in *ni$erse designer and are a$ailable in edit select bo= of an object.
7ollowing Wfunctions are a$ailable in %esigner.
W&elect'(
W,ariable'(
W-here'(
W&cript
W"rompt
W!greegateE!ware
et learn them one by one.
W"rompt
/his function is $ery useful to create an interacti$e object which would force user to enter some
$alue for a condition in order to restrict the dataset to be returned by the query.
"rompt functions are generally used in where clause of an object to build interacti$e filter
condition in the report.
/he synta= of Wprompt function is as below.
W"rompt'HmessageC,XtypeC,
Ylo$Z,monoMmulti,freeMconstrainedMprimaryEkey,persistentMnotEpersistent, Y[Xdefault
$alueX4Xdefault keyXY,Xdefault $alueX4XdefaultkeyX,...Z\(
+essage4 Is the te=t which would be prompted to user. It should be included in single quotes.
/ype4 %ata type to be returned by function. It can be any one of following.
!4 !lphanumeric
D4 Dumber
%4 %ate
O,4 ist of $alues which would be displayed to end user to chose from. O, could be hardcode
or you can use O, of an e=iting object.
e.g. [H!C,CBC\ or H>ountry@DameC
+ono4 *ser can select only one $alue from list
+ulti4 user can select multiple $alues from list
7ree4 *ser can select or enter $alue.
>onstrained4 *ser ,ust select $alue from the list.
"rimary .ey4 /his options needs to be used with free or constrained. -hen used , user selected
$alues are not used its key $alues is used from inde= awareness column.
"ersistent4 ast user selected $alue is persistent when report is refreshed.
%efault$alue4key$alue4 %efault $alues to be presented to user. If you ha$e used "rimary .ey in
function you must specify the key $alue here.
Wprompt'H0nter $alue's( for >ustomer with !4C, H!C,X>ustomer@>ustomer!C, +ulti,primaryEkey,
[H!C4C5C,HBC4C6C\(
W&elect
/his function is used to reselect the select clause of another object. /his function is pretty
useful to reuse the e=isting select clause of another object instead of creating it again. &o when
original object select clause changes, all other objects would be changed if they are using
original objects select clause using this function.
&ynta=.
W&elect'>lassname@Objectname(
W-here
/his function can be used to re#use the where clause of another object.
&ynta=4
W-here'>lassname@Objectname(
W,ariable
/he W,ariable function is used to call the $alue assigned to $ariables. /his function is generally
used in security implementation. ;ou can more information on this function on business objects
user guide.
e.g. ;ou $ariable 'HBO*&01C( will return the name of currently logged in business objects user
W!ggregateE!ware'(
/his function is used to define the aggregate awareness and will be discussed in another chapter.
W&cript
/his function is used to call a ,B! macro and works only for desktop intelligence and designer
and is not ad$ised to use in case of web intelligence. It works only on windows platform.
W&cript'H$arEnameC, H$artypeC, HscriptEnameC(
?ierarchies
What is hierarchy in Business Objects and 1ts use?" ]
?ierarchy is an ordered sequence of dimensions which is $ery helpful for multi#dimensional
analysis of data.
e.g. time hierarchy.
%ay#8-eek#8+onth#8)uarter#8;ear
+ultidimensional analysis enables user to see data from different perspecti$e which unco$ers
the $arious pattern in data which would be $ery helpful in taking tactful business decision.
?ierarchies can be naturalM%efault or logical based on business rules.
%efault ?ierarchiesMDatural ?ierarchies4
! natural hierarchy is nothing but natural order of dimensions.
e.g. /ime ?ierarchy
%ay#8-eek#8+onth#8)uarter#8;ear
Geographic ocation ?ierarchy.
>ity#8&tate#8>ountry#81egion
ogical ?ierarchies4
ogical hierarchies are set of dimensions whose order is set based on business domain of
analysis.
e.g. ?ierarchy of designation.
>0O#8>/O#8%irector#8+anager
How many ty!es of hierarchies are avai"ab"e in universe?" ]
/here are two types of hierarchies in Business Objects *ni$erse.
%efault ?ierarchies
By default hierarchy is set based on order in which dimensions are placed in the class.
e.g In store class dimensions are arranged as &tate#8>ity#8&tore Dame. &o by default hierarchy
would be set as from top dimension to lower dimension.

>ustom ?ierarchies4
Business Objects allows creating logical hierarchies using custom hierarchy. In custom hierarchy
the sequence of dimensions is defined by de$eloper based on business need of analysis.
0nd user might want to drill down the re$enue generated based on employee designation. ;ou
can define the sequence of dimensions based on business need.
If two or more hierarchies starts with same dimensions but follow different dimensions at lower
end and if user performs drill#down on dimensions from such hierarchy then -eb Intelligence
asks user to select the drill path.
e.g. If we create two custom hierarchy which starts with ;ear but follow different path.

/hen it asks user to select the drill path as there two drill path defined from ;ear.

What is time hierarchy and its bene2ts and disadvantaes?" ]
Generally, almost e$ery business wants to analysis the data based on time e.g. ;ear, +onth,
)uarter
In data warehouse time analysis is done by associating a date dimensions howe$er there might
be cases where date dimensions are not a$ailable. ID such cases Business Objects gi$es an
facility to create time hierarchy based on %ate.
e.g. -e ha$e re$enue table which has date in it howe$er we want to analyze the re$enue based
on year, month.
!d$antages of !utomatic /ime ?ierarchy4
5. ItCs the fastest way to create time hierarchy
6. Business Objects uses database scalar function automatically and uses it in &) &elect
statement.
%is#ad$antages of !utomatic /ime ?ierarchy4
5. %e$eloper can not control the appearance of object.
6. %e$eloper can not edit the object definition of automatic time hierarchy.
9. O, can be applied to original %ate object not the deri$ed objects like ;ear.
I&/ of $alues 'O,(
What is +O3?" ]
ist of $alues or O, is a distinct list of data $alues associated with an object. -hen any
dimension of details object is created O, is assigned to an object automatically.
*se of ist of $alues.
-hen user needs to filter data in a query based on specific object $alues, *ser can simply $iew
the O, of that objects and choose the $alue on they want to filter the data.
e.g. if >O*D/1; dimension has following distinct $alues
!,B,> and if user wants to filter the data of country B, user can put a filter on >ountry
dimension and choose the B as filter while e=ecuting the query.
-hen first O, is created it is stored in .O, file name at uni$erse subfolder on the system file
system.
/he default location is
>4@%ocuments and &ettings@A*serDame8@!pplication %ata@Business Objects@Business Objects
56.B@*ni$erses@WA&er$erDame8@A*ni$erseDame8
1s it a ood idea to associate +O3 with each object and why(why not?" ]
Business Objects first select distinct query on database to create O,. &o O, is e=pensi$e in
terms of performance also, O, is useful only when object is used in prompts where use needs to
select some $alues. &o we should associate O, with only those object which are used in
prompts.
%eri$ed /ables
What is derived tab"e?" ]
%eri$ed table is not a physical in database howe$er its logical table created in Business Objects
*ni$erse using &). %eri$ed table can be considered like $iews in database where its structure is
defined using &00>/ statement.
!d$antages of %eri$ed /able4
%eri$ed table in *ni$erse lets you create a &) statement to fetch data using $arious
e=pressions, joins which is not possible using uni$erse structure.
Its lets you put inline $iews 'select statement in 71O+ clause( which are not possible in *ni$erse
normally.
e.g.
select agg5Eid as id from
'select J from !ggEyrEqtEmtEmnEwkErgEcyEsnEsrEqtEma(
%eri$ed table can be treated as normal tables and can be joined with actual table in *ni$erse.
Its lets you merge data from different table which is not possible using normal in uni$erse using
underlying data sources.
One can embed prompts in deri$ed table definition.
;ou can use deri$ed table as a lookup when you ha$e multiple fact table separated by conte=ts.
Dormally if you want to use measured from different fact table then Business Objects creates
two queries one for each measure. Dow some time this may result in performance issues. ;ou
can a$oid this by creating a lookup table for different fact tables using deri$ed tables.
e.g.
&uppose you ha$e measure5 in fact5 and measure6 in fact6 and dimension is dim5. Dow if you
create a query with dim5, measure5, measure6 you will get two different queries. Dow instead
of this you can create separate deri$ed table which includes dim5, measure5, measure6.
%isad$antages of deri$ed table.
&ince deri$ed table is not an actual table you may face performance issues if underlying &)
query has performance issues.
What is nested derived tab"e?" ]
Dested deri$ed table is nothing but a deri$ed table using another deri$ed in definition. It
beha$es similar to normal deri$ed tables. Dested deri$ed tables are generally using when
underlying deri$ed table is comple= to build. In that case you can create different small deri$ed
tables and then use this deri$ed table in main deri$ed table.
!d$antage of using nested deri$ed table is the simplicity in deri$ed table creating. !lso Business
Objects combines the definition in single &) and itCs treated as single &).
Business Objects does not limit number of deri$ed tables but nesting is limited to 6B le$els.
;ou can create a nested deri$ed table by using e=isting deri$ed table in the from clause.

Inde= awareness
$%!"ain inde% awareness with its advantaes?" ]
+aking uni$erse inde= aware means telling uni$erse on which columns inde=es are created. /his
helps Business Objects to generate efficient query which uses inde=es instead of actual column
$alues which help to speed up the data retrie$al.
e.g. If we ha$e customer name in the query its useful to end user of report howe$er we can use
customer id to retrie$e the data by making the use of inde= awareness which would help to
fetch data faser.
;ou can define two types of inde= awareness in uni$erse.
"rimary .ey4 *sing primary key inde= awareness uni$erse can use inde= $alue instead of actual
$alue of column. /he query will thus use the key $alue. /his helps database to fetch data faster.
7oreign .ey4 *sing foreign key inde= awareness on object uni$erse can filter the data without
the need of join in query. &uppose you need to build a report which has filter on dimensions
table. In absence of inde= awareness designer will use actual dimension $alues which requires
join between fact table and dimension table. ?owe$er if we had foreign key inde= awareness
applied. %esigner can apply filter directly in fact table using foreign key inde=. &o this a$oids
join between dimension table and fact table. ?owe$er foreign key inde= awareness requires
dimension column $alues to be unique if same $alue is represented by different key. /hen this
may return unwanted result.
How inde% awareness can im!rove !erformance?" ]
&uppose you are building a report on Island *ni$erse 2&er$ice wide &ale re$enue.3, !fter you
drag drop the object, ;ou will see following query generated.

Dow if you see in the query, designer has joined OutletEookup table to put restrictions on the
states and using actual $alues from ser$ice table to filter the data.
Dow &uppose we apply inde= awareness on ser$ice object defining primary keys and foreign
keys.
/he query will look as below.

If you could see in the query, %imension $alues ha$e been replaced with actual foreign keys
filtering data on fact table. -hich is an efficient way to filter dataT &o query will run faster
compared to earlier way.
?owe$er remember, inde= awareness might return wrong result if you ha$e dimension $alue
which ha$e two different keys in dimension table.
e.g.
If we ha$e data as below in ser$ice dimension
&er$iceEid
&er$ice
656
!cti$ities
659
!cti$ities
Dow if you ha$e inde= awareness applied on ser$ice object and using ser$ice as a filter in report.
&ince H!cti$itiesC ha$e two keys, Business Objects does not know this might put any of the ". as
filter returning wrong data in report
-hile defining the inde= awareness for particular column you can also define the data restriction
for the object using -?!10 clause in inde= awareness. ItCs $ery useful to restrict the data in
inde= awareness.
e.g. for ser$ice object I can define ser$ice price -?010 clause as below.

Inde= awareness when used with proper data analysis can gi$e you significant performance
gains.
inked *ni$erse
What is universe "inkin?" ]
inked uni$erse are uni$erses which share common component such as objects, classes and
joins. -hen two uni$erses are linked the one uni$erse is called as core uni$erse. ItCs the main
uni$erse which contains common components where other uni$erse is called as deri$ed uni$erse.
>hanges made to core uni$erse are automatically propagated to deri$ed uni$erse.
$%!"ain advantaes and disadvantaes of universe "inkin?" ]
*ses and ad$antages of uni$erse linking.
I -hen you ha$e to de$elop multiple uni$erses but there are some common components across
these uni$erses in that you can create a core uni$erse of common components and link it to
other uni$erses.
I inking of *ni$erse enables to distribute the uni$erse designing task amongst other de$elopers.
I ItCs also helps to follow the code#reusability practices.
I If there are any changes to common objects. It needs to be done only in core uni$erse. It gets
propagated to all deri$ed uni$erses.
I inking of uni$erses help in uni$erse maintenance.
What is core universe?" ]
/he core uni$erse is a uni$erse to which other uni$erses are linked. It contains
components that are common to the other uni$erses linking to it. /hese
uni$erses are called deri$ed uni$erses./he core uni$erse represents a
re#usable library of components.
! core uni$erse can be a kernel or master uni$erse depending on the way the core uni$erse
components are used in the deri$ed uni$erses.
What is derived universe?" ]
! deri$ed uni$erse is a uni$erse that contains a link to a core uni$erse. /he
link allows the deri$ed uni$erse to share common components of the core
uni$erse4
If the linked core uni$erse is a kernal uni$erse, then components can be
added to the deri$ed uni$erse.
If the linked core uni$erse is a master uni$erse, then the deri$ed uni$erse
contains all the core uni$erse components. >lasses and objects are not added to the deri$ed
uni$erse. /hey can be hidden in the deri$ed uni$erse depending on the user needs of the target
audience.
What are diferent strateies of universe "inkin?" ]
>ore &trategy4 /his strategy is used when you need to de$elop a uni$erse for different functions.
In such case you can create multiple uni$erses for each function and the link all uni$erses in
single uni$erse. /his strategy allows us to create a common object only once and also help to
split the uni$erse design task amongst de$elopers.

+aster &trategy4 &uppose you ha$e a requirement to create clone of e=isting uni$erse. ;ou can
achie$e this by creating another copy of e=isting uni$erse howe$er this will increase
maintenance as you would need to maintain two uni$erses now. /o a$oid that you can use master
linking strategy. In which e=isting uni$erse is linked to new blank uni$erse so it creates a copy of
e=isting uni$erse with different >*I% and we need to maintain only one uni$erse as core uni$erse
is linked.

+ultiple >ore &trategy4 Dow if you want di$ide the de$elopment task then you can follow this
approach in which de$elopers can de$elop their uni$erse and at the link all uni$erse in one
uni$erse.
What is the diference between "inkin and inc"udin?" ]
In linking uni$erse contents are not copied to deri$ed uni$erse and one cannot edit the core
uni$erse components in deri$ed. ?owe$er sometimes one need to merge two uni$erse into one.
7or this purpose one can use 2Include3 uni$erse approach instead of linking. -hen uni$erse are
included components of one uni$erse are copied into another.
%ifference between inking and Including *ni$erses
Including and inking decision needs to be taken based on your own need following are the
points which may help.
inking.
I >ore uni$erse structure is created once and used in many deri$ed uni$erse.
I Only one copy of components from core uni$erse e=ists in repository.
I >hanges needs to done only to core uni$erse and it gets propagated to all deri$ed uni$erse.
I inking uni$erse needs both the uni$erse to be present in repository.
I Only one le$el of linking is allowed.
I >onte=t and O, needs to recreate in deri$ed uni$erse.
I Both the uni$erse must use same connection and connect to same database
Including
I ItCs the easiest and fastest way to copy uni$erse into another.
I >onte=t needs to redefine after including.
I >hanges are not propagated from core to deri$ed uni$erse.
I Both the uni$erse must e=ist in repository like in linking.
I One can easily maintain one uni$erse rather than multiple uni$erse o maintenance becomes bit
easy.
What are diferent "imitation and restriction of inkin?" ]
imitations and 1estrictions of inking *ni$erses4
I Both the uni$erses 'core and deri$ed( must use same connection and should connect to same
database.
I Both the uni$erse must be present in same repository in order to link.
I Only one le$el of linking is allowed you can create deri$ed uni$erse from another deri$ed
uni$erse.
I Both uni$erses should ha$e unique object and classes. If there are duplicate objectsMclasses it
will be renamed in core uni$erse.
I /ables from two uni$erses must be joined after linking in order to a$oid >artesian product.
I -hen core uni$erse is linked in deri$ed uni$erse only classes, objects and tables are made
a$ailable in deri$ed uni$erse. >onte=t and O, needs to be recreated in deri$ed uni$erse.
1estrictions in *ni$erse
What are diferent access restrictions avai"ab"e in universe?" ]
Once you are done with de$elopment of uni$erse there might be requirement to restrict the
uni$erse access to particular user or user group. ;ou can achie$e this by applying $arious access
restrictions in uni$erse.
*ni$erse has $arious types of access restriction as e=plained below.
>onnection4 *sing this access restriction you can define which connection is accessible to which
user group.

&) >ontrols4 *sing the restriction type one can define result set size and query e=ecution time.

&)4 *sing this restriction you control the &) generation.

Objects4 *sing this restriction you can define which objects will be not be accessible to which
usersMgroup.

1ow4 *sing the restriction type you can define row le$el access restriction. It uses the -?010
clause to restrict the data access.

/able +apping4 *sing the restrictions you can define alternate tables for particular group of user.

$%!"ain row "eve" security in universe?" ]
*ni$erse +anagement and %eployment
$%!"ain diferent ways to de!"oy universe?" ]
%esigner allows you to distribute uni$erses by importing and e=porting uni$erses to the >entral
+anagement &ystem '>+&( repository. ;ou can use any of the following method to deploy
uni$erses.
5. %irectly e=port the uni$erse to target repository if you ha$e access to it from designer.
6. *se I+"O1/ wizard to import and create a BI!1 to deploy uni$erse and report on another
Business Objects en$ironment.
9. *se ifecycle +anager to promote uni$erse and report to different en$ironment.
How to create mu"ti"inua" universe?" ]
Business Objects pro$ided creating multilingual uni$erse using /ranslation manager. *sing
translation manager you can define the names of objects and classes based on your language
requirement. -hen these uni$erses are access by uses. Business Objects will display the names
of classesMobjects based users ocale preference.

Das könnte Ihnen auch gefallen