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.