You are on page 1of 34

1.

What are the differences between Personal, Shared and


Secured connections?
1. A Personal connection is created by one user and cannot be used by other users. The
connection details are stored in PDAC.LSI file.
2. A shared connection can be used by other users through a shared server. The
connection details are stored in SDAC.LSI file in the Business Objects installation
folder. However one cannot set rights and securities on objects in a shared
connection. Neither can a Universe to export to repository using a shared connection.
3. A secured connection overcomes these limitations. Through it rights can be set on
objects and documents. Universes can be exported to the central repository only
through a secured connection. The connection parameters in this case are saved in
the CMS.

2. What are custom hierarchies? How can they be created?


Custom Hierarchies are defined in a universe in order to facilitate custom drill down between
objects from same or different classes according to user requirement. They can be created
from Tools -> Hierarchies in the BO Designer.

3. What is a context in universe? How are they created?


In an universe, a context defines a particular join path between tables or a specific group of
joins for a particular query. Any objects created on a table column which belong to specific
contexts is naturally compatible with all other objects from same contexts. When objects
from two or more contexts are used, separate SQL is generated and results are then
merged in a micro cube. This makes sure that no incorrect result is generated due to loop or
any other join path issue.
Contexts may be created using detect contexts feature or manually. They are generally
created based on logical calculation and business requirements, hence the detect context
method is not very effective. To manually create a context Go to Insert Context, give the
context name and select the joins that should be present in the context. For a universe
contexts should be created in a way that all joins(except shortcut joins) fall in at least one
context

4. What is a chasm trap? How can it be solved?


In a dimensional schema based universe, we may have one dimension table joined with two
fact tables such that both of them are one-to-many joins(F >- D -<F ). In such a scenario, if
we drag a measure each from both the fact tables along with dimensions from dimension
table, the value of the measures in the fact tables are inflated. This condition is known as
chasm trap.
A chasm trap can be solved using 2 methods:

In the universe SQL parameters, the option, generate multiple queries for each
measure needs to be selected. This will generate separate SQL statement for each
measure and give the correct results. However, this method would not work, if a
dimension (for example date) occurs multiple times in the result set due to chasm
trap.

A better approach is to put the two joins in two different contexts. This will generate
two synchronized queries, thus solving the problem.

5. What is a fan trap? How can it be solved?


In a universe structure, we may have 3 tables joined in such a way that, the 1st table has a
one to many join with the 2nd table, which in turn has a one to many join with the 3rd
table(A -< B -< C). In such a scenario, if a measure is present in the 2nd table and it is
dragged along with any dimension from the 3rd table, the value of the measure will be
inflated. Such a condition is known as a fan trap.
A fan trap is solved by creating an alias of the 2nd table and defining contexts such that, the
normal table is joined only with the first table, while the alias is joined with both the 1st and
the 3rd table. We would take 2nd tables measure only from the normal table and other
dimensions of the 2nd table from the alias table

6. Should we encounter fan traps in a data warehouse


scenario? If so, then how?
If a data warehouse is based on the Kimball model, it is a dimensional schema. In a
universe built on that DW, for a fan trap to occur in such a schema, we require direct join
between two fact tables, which is against the principles of dimensional modeling.

On the other hand in a data warehouse based on Inmon model, it is a normalized schema.
Though in such a case, universes are generally designed on Data Marts, which are
dimensional schemas (where fan traps should not occur). However, if a universe is built on
the DW (for the purpose of operational reporting), then a fan trap can occur in that universe

7. What is aggregate awareness? What is its advantage?


Aggregate awareness function is used in scenarios where we have same fact tables in
different grains. Using this function we can define only one object for the measures in the
fact tables as
@aggregate_aware(highest_level,lower level)
We also need to define dimensions for associated granularities and define their
incompatibilities with the corresponding facts through the aggregate navigation. This is
accesses through Tools -> Aggregate Navigation1. What are the differences between
Personal, Shared and Secured connections?
1. A Personal connection is created by one user and cannot be used by other users. The
connection details are stored in PDAC.LSI file.
2. A shared connection can be used by other users through a shared server. The
connection details are stored in SDAC.LSI file in the Business Objects installation
folder. However one cannot set rights and securities on objects in a shared
connection. Neither can a Universe to exported to repository using a shared
connection.
3. A secured connection overcomes these limitations. Through it rights can be set on
objects and documents. Universes can be exported to the central repository only
through a secured connection. The connection parameters in this case are saved in
the CMS.
2. What are custom hierarchies? How can they be created?
Custom Hierarchies are defined in a universe in order to facilitate custom drill down between
objects from same or different classes according to user requirement. They can be created
from Tools -> Hierarchies in the BO Designer.

3. What is a context in universe? How are they created?


In an universe, a context defines a particular join path between tables or a specific group of
joins for a particular query. Any objects created on a table column which belong to specific
contexts is naturally compatible with all other objects from same contexts. When objects
from two or more contexts are used, separate SQL is generated and results are then
merged in a micro cube. This makes sure that no incorrect result is generated due to loop or
any other join path issue.
Contexts may be created using detect contexts feature or manually. They are generally
created based on logical calculation and business requirements, hence the detect context
method is not very effective. To manually create a context Go to Insert Context, give the
context name and select the joins that should be present in the context. For a universe
contexts should be created in a way that all joins(except shortcut joins) fall in at least one
context

4. What is a chasm trap? How can it be solved?


In a dimensional schema based universe, we may have one dimension table joined with two
fact tables such that both of them are one-to-many joins(F >- D -<F ). In such a scenario, if
we drag a measure each from both the fact tables along with dimensions from dimension
table, the value of the measures in the fact tables are inflated. This condition is known as
chasm trap.
A chasm trap can be solved using 2 methods:

In the universe SQL parameters, the option, generate multiple queries for each
measure needs to be selected. This will generate separate SQL statement for each
measure and give the correct results. However, this method would not work, if a
dimension (for example date) occurs multiple times in the result set due to chasm
trap.

A better approach is to put the two joins in two different contexts. This will generate
two synchronized queries, thus solving the problem.

5. What is a fan trap? How can it be solved?


In a universe structure, we may have 3 tables joined in such a way that, the 1st table has a
one to many join with the 2nd table, which in turn has a one to many join with the 3rd
table(A -< B -< C). In such a scenario, if a measure is present in the 2nd table and it is
dragged along with any dimension from the 3rd table, the value of the measure will be
inflated. Such a condition is known as a fan trap.
A fan trap is solved by creating an alias of the 2nd table and defining contexts such that, the
normal table is joined only with the first table, while the alias is joined with both the 1st and
the 3rd table. We would take 2nd tables measure only from the normal table and other
dimensions of the 2nd table from the alias table
6. Should we encounter fan traps in a data warehouse scenario? If so, then how?
If a data warehouse is based on the Kimball model, it is a dimensional schema. In a
universe built on that DW, for a fan trap to occur in such a schema, we require direct join
between two fact tables, which is against the principles of dimensional modeling.
On the other hand in a data warehouse based on Inmon model, it is a normalized schema.
Though in such a case, universes are generally designed on Data Marts, which are
dimensional schemas (where fan traps should not occur). However, if a universe is built on
the DW (for the purpose of operational reporting), then a fan trap can occur in that universe
7. What is aggregate awareness? What is its advantage?

Aggregate awareness function is used in scenarios where we have same fact tables in
different grains. Using this function we can define only one object for the measures in the
fact tables as
@aggregate_aware(highest_level,lower level)
We also need to define dimensions for associated granularities and define their
incompatibilities with the corresponding facts through the aggregate navigation. This is
accesses through Tools -> Aggregate Navigation

The advantage is that in a Webi or Deski report when one drags the measure object with the
dimension object of a particular granularity, the measure column from the Fact table of the
corresponding granularity is selected in the BO default Query. If we did not use aggregate
awareness, we would need to define separate objects for each of the fact tables which would
be difficult to understand from a users point of view.
8. What are the 2 different approaches of implementing aggregate awareness? Which one is
better in terms of performance?
The 2 approaches are as follows:
1. Aggregate tables are built in the database, which contains the dimension fields(not
foreign keys) along with the aggregated measures. In the universe they are present
as standalone tables, i.e they are not joined with any dimensions. Aggregate aware
function is used to define both the dimensions and measures of such tables.

2. No aggregate tables are built in the database level. They contain the normal fact
table at different granularities. In the universe, aggregate aware is used only to
define the measures and aggregate incompatibility is set accordingly.
The first approach is better in terms of performance, since for the higher levels of
aggregation, all the information is obtained for a single table. However, a large scale
implementation of this approach in a dimensional schema is difficult. In most BI projects,
the second approach is preferred
9. What is a derived table? What is its utility?
A derived table is a table created in the universe using an SQL Query from database level.
The columns selected in the query become the columns of the derived table. A derived table
can be used for complex calculations, which are difficult to achieve in report level. Such
calculations are done in query level itself.
Another use of derived table can be to access tables from a different schema through a
dblink.

10. How is a derived table different from a view? Which one is a preferred solution?

A derived table is present only in the universe level, while a view is created in data base
level. Generally views are preferred since, in its case the onus of calculation remains on the
database and it does not load the BO server. However, in cases where developers do not
have access to database, derived table is the only solution.
11. How can we access one derived table from another?
We can access one derived table from another using the function @derived_table. The
syntax is:
@derived_table(Derived Table Name)
12. What is Index Awareness? How is it implemented?
Index awareness is a property of the universe, by means of which values in the filter
conditions of the queries/data providers built from the universe, are substituted by their
corresponding indexes or surrogate keys. Generally the values in the filter condition come
from a dimension table (like country etc) and we require a join with the fact table to get this
value.
However, if index awareness is implemented, this join is eliminated and the query filter
takes the equivalent index value from the fact table itself.
To implement index awareness, one needs to identify the dimension fields which are to be
used in query filter. In the Edit Properties of the object, we get a Keys tab. In this tab, the
source primary key of the table from which the object is derived needs to be defined as
primary key, and the database columns for all foreign key relationships with the other tables
also need to be defined here. Once this is done for all required dimensions, the universe will
become index aware

13. How can we use index awareness in universe prompt?


An extended prompt syntax is available since BO 3.1. It is as follows
@Prompt( message, 'type, [lov],
mono/multi,
free/constrained/primary_key,
persistent/not_persistent,
{'default value':'default key'} )
If the indexes for the dimension object is defined in the universe and we define the prompt
condition on the object with the clause primary key in place of free or constrained, then the
filter condition will convert the prompt values entered to their corresponding indexes and
eliminate the join with the dimension table

14. What is a condition object? How is it different from query filter?


To know the answer of the above question (and many such high frequency BO Reporting
questions) please continue to the next page:

The advantage is that in a Webi or Deski report when one drags the measure object with the
dimension object of a particular granularity, the measure column from the Fact table of the
corresponding granularity is selected in the BO default Query. If we did not use aggregate
awareness, we would need to define separate objects for each of the fact tables which would
be difficult to understand from a users point of view.

8. What are the 2 different approaches of implementing


aggregate awareness? Which one is better in terms of
performance?
The 2 approaches are as follows:
1. Aggregate tables are built in the database, which contains the dimension fields(not
foreign keys) along with the aggregated measures. In the universe they are present
as standalone tables, i.e they are not joined with any dimensions. Aggregate aware
function is used to define both the dimensions and measures of such tables.

2. No aggregate tables are built in the database level. They contain the normal fact
table at different granularities. In the universe, aggregate aware is used only to
define the measures and aggregate incompatibility is set accordingly.
The first approach is better in terms of performance, since for the higher levels of
aggregation, all the information is obtained for a single table. However, a large scale
implementation of this approach in a dimensional schema is difficult. In most BI projects,
the second approach is preferred

9. What is a derived table? What is its utility?


A derived table is a table created in the universe using an SQL Query from database level.
The columns selected in the query become the columns of the derived table. A derived table
can be used for complex calculations, which are difficult to achieve in report level. Such
calculations are done in query level itself.
Another use of derived table can be to access tables from a different schema through a
dblink.

10. How is a derived table different from a view? Which


one is a preferred solution?
A derived table is present only in the universe level, while a view is created in data base
level. Generally views are preferred since, in its case the onus of calculation remains on the
database and it does not load the BO server. However, in cases where developers do not
have access to database, derived table is the only solution.

11. How can we access one derived table from another?


We can access one derived table from another using the function @derived_table. The
syntax is:
@derived_table(Derived Table Name)

12. What is Index Awareness? How is it implemented?


Index awareness is a property of the universe, by means of which values in the filter
conditions of the queries/data providers built from the universe, are substituted by their
corresponding indexes or surrogate keys. Generally the values in the filter condition come
from a dimension table (like country etc) and we require a join with the fact table to get this
value.
However, if index awareness is implemented, this join is eliminated and the query filter
takes the equivalent index value from the fact table itself.
To implement index awareness, one needs to identify the dimension fields which are to be
used in query filter. In the Edit Properties of the object, we get a Keys tab. In this tab, the
source primary key of the table from which the object is derived needs to be defined as
primary key, and the database columns for all foreign key relationships with the other tables
also need to be defined here. Once this is done for all required dimensions, the universe will
become index aware

13. How can we use index awareness in universe prompt?


An extended prompt syntax is available since BO 3.1. It is as follows
@Prompt( message, 'type, [lov],
mono/multi,
free/constrained/primary_key,
persistent/not_persistent,
{'default value':'default key'} )
If the indexes for the dimension object is defined in the universe and we define the prompt
condition on the object with the clause primary key in place of free or constrained, then the

filter condition will convert the prompt values entered to their corresponding indexes and
eliminate the join with the dimension table

14. What is a condition object? How is it different from


query filter?
To know the answer of the above question (and many such high frequency BO Reporting
questions) please continue to the next page:

14. What is a condition object? How is it different from


query filter?
A condition object is a filter condition created in the universe level. When this object is
dragged in the Query Panel, the filter condition appears in the query SQL.
However a query filter exists in the report only. It is added during building a query. This also
appears in the query SQL

15. How can we create a mandatory filter condition for


every query generated from the universe?
For this to happen, one prerequisite is that the table which contains the object on which the
filter condition is applied should be present in each and every context defined in the
universe. It can be done in 2 ways:

Row level Security:


From Tools -> Manage Security Click on Mange Access Restrictions. Create a new
restriction. In the rows tab of the restriction select the table and add the where
clause on the desired column. Apply this restriction to all user groups. The limitation
of this method is that this filter condition would not be imposed unless we drag an
object from the table in the query panel

Condition Object Property:


Create a condition object with the where clause on the desired column of the desired
table. In the condition object definition; check on the boxes Use Filter As Mandatory
in Query and Apply On Universe and Apply On List of Values. The advantage of this
method is that even if no object from the table is dragged in the Query Panel, the
filter condition will still appear in the query

16. What is a linked universe? How are they created?


Linked universe are universes which share common component such as objects,
classes and joins. When two universes are linked, the source universe is called core
universe while the destination is called derived universe.
A link can be created by going to Universe Parameters -> Links and using Add Link
button. The tables from core appear as faded structures in the derived universes.
Their joins are intact, but the contexts need to be defined afresh.

17. What happens when we click the Include button


after linking two universes?
After creating a link if the Include button is clicked then the tables from core
universe are permanently copied into the derived universe and the link is severed

18. What is an Input control? How is it different from


a report filter?
Input Control is a feature in Webi report(starting from XI 3.1 SP2), which allows
filtering of data based on a dimension in the report.
The Report Filter also does a similar thing. However an input control allows
multiselection of values(via Multiselect Input control) which a report filter does not
support. Input Control appears in the left panel of the report, whereas Report Filter
appears in the top filter pane

19. What are the added features of Interactive mode in


Web Intelligence over the normal Java report panel?
What are its uses?
When Web Intelligence is in Interactive mode, one can create variables, input
controls, add report filters, tables and charts in the view mode itself. This is not
possible in the normal Java report panel.
The advantage of interactive mode is for power users, who want to do further
manipulations on an existing report. Since, it does not allow user to modify queries
or existing variables in the report, but allows doing the above mentioned activities on

top of the report, it provides a very good means for analysis by the power users
without changing the core report in any way.

20. What is the use of the scope of analysis pane in the


Query tab of Webi report?
It has 2 uses:
o

The Scope of Analysis pane sets the limit of drill down in the report. Suppose
we have a hierarchy defined in 3 levels, but if we set the scope of analysis is
set to 2 levels, the report will not be able to drill down to the 3rd level. We
can also remove objects showing in the scope of analysis pane and limit the
drill down

If the analysis level is set to custom, the objects from existing hierarchies can
be dragged in the scope of analysis panel to set the scope for drilldown in the
report. This has an advantage that we can drill down to more than 3 levels,
which is not possible in the normal level setting, since it is up to 3 only

21. There is a requirement that in a numeric column


of a webi report we need to display the sum of the
above rows. Which function should we use?
In this case we should use the RunningSum() function. The syntax is:
RunningSum( [measure] ; [Row|Col] ; [ (reset_dimensions) ] )

22. When should we use a query filter and when a


report filter?
The choice of query or report filter has to take in consideration the performance of
the report.
Suppose we have report where are multiple tabs having different objects requiring
same or different filter conditions, it is advisable to use a Query Filter.
In case where there are multiple tabs having same objects, but with slightly differing
filter conditions, it is advisable to fetch the whole data in the query and then apply
report filters to the various tabs to get the desired data instead of using separate
queries for each tab

23. What is the use of merge Dimensions


functionality? How does auto-merge work?
The merge dimensions is used to combine objects having similar properties from
multiple data providers which enables using dimensions and measures from both
data providers in the same table. It works like a full outer join. Without this we
cannot drag dimensions from different data providers in the same table and though
the measures can be dragged, their calculation levels may not be uniform.
When the Auto Merge Dimensions checkbox in the document properties is checked,
the report automatically merges multiple dimensions with same name coming from
different data providers

24. What is the difference between Input and Output


calculation contexts in a Webi report?
Input context consists of any dimension objects that need to be included directly in
the calculation itself.
Output context consists of one or more dimension objects that determine the
aggregation level at which the calculation is displayed

25. In oracle, we use Instr function to display the


position of a character in a string. What is the
corresponding BO Web Intelligence report function,
that does the same?
The corresponding function is Pos(). The syntax is:
Pos( string input_string; string pattern )

26. Suppose in a report, we have a filter on a block. In


the table, we need to display an aggregate of a
measure for all data in report. But if we use only the
aggregate function, it will be limited by the block
filter. How can we achieve that?
We have to use the NoFilter() function. When we put the expression within NoFilter(),
it overrides any report filter as well as ranking applied in report level. The syntax is :
NoFilter( expression )

27. Suppose we want to display the total sum of a


measure in row level of the report block. What will be
the solution?
We have to use context Operator In along with keyword report. This will give the
total sum of the measure in row level(and anywhere in the report). The expression
will be like:
Sum( Measure In Report )

28. Which selector gives the option of multiple selection in


Xcelcius Dashboard? How do we make the multiple
selection?
Only List Builder gives the option of multiple selection in Xcelcius. We select multiple rows from the
input list and add them to the output list using Add button. The output list gives the selection parameter

29. Which Xcelcius components can we use for linking


multiple dashboard flash outputs(swf files)? Can the
same components be used for a complete
presentation?
We can use Swf Loader as well as Slideshow components for linking multiple
dashboards. Swf Loader can open swf files only, while Slideshow can open both swf
files and image files.
For presentation purposes, we often need text and images. Hence these are
embedded in image files are added to a Slideshow along with dashboard outputs.
Moreover Swf Loader can only open swf through Push Button or selector
components, whereas Slideshow has a feature of automatic slide transition, which
loads the image and swf files in the specified sequence. Hence, Slideshow is the
only feasible option for a complete presentation.

30. What are the different ways in which an Xcelcius


dashboard can access data from a BO universe?
There are 3 ways in which Xcelcius can access data from the universe:
o

Query as a Web Service: Using Query as a Web Service tool, we can create
a queries from the universe along with filter condition. The QAAWS qury panel
is similar to the WebIntelligence query panel. In Xcelcius dashboard, we can
create a QAAWS connection that would point to a particular Query and import
the data into the excel data sheet of the xlf

Business Intelligence Web Service: In this method, we can use the output
of a report directly in the Xcelcius dashboard. Using Webi Rich Client, we
export the report to repository, then select a block from the report, right click
and select Publish as Web Service option. However BIWS does not have a
connection of its own. We access this BIWS through a QAAWS connection
only.

LiveOffice: LiveOffice is an additional component that needs to be installed.


This creates a sort of plugin for all MS Office applications, though which they
can access data from Web Intelligence reports. I MS Excel, we can launch the
Live Office Insert Wizard by Insert -> Web Intelligence Content. We can use
this wizard to add selective content from a webi report. In the Xcelcius

dashboard, a Live Office connection is created andwe access this Live Office
excel sheet though thi connection

Top 5 BusinessObjects (BO) Scenario Based Questions


In this tutorial, we will look into some of the fundamental and widely asked scenario based
questions in BusinessObjects (BO) interviews. Let's get started.

Scenario 1:
Suppose in a Universe structure we have tables as shown in the diagram
below. Tables A,B and C are in context ABC and C,E and F are in context CDE
Now if there is a requirement which requires a join between Table E and Table
B, we can define a new context BCDE. But what is the easiest way to
implement this?

Define a shortcut join between tables B and E. To do this, join the tables normally. Then
open the join editor and check the box shortcut join.

The join will show as a dotted line between the two tables. This kind of a join does not
create loop and cannot be placed in any context. The shortcut join between Table B and
Table E will only work when objects from both the tables are selected in the query panel of
report.

Scenario 2:
We have objects from 3 tables A,B and C in the query panel of a report. Among
them C is a lookup table which holds values with respect to keys. Table B holds
the foreign key to the table C. A filter condition is applied to Table C in Query
Level. The resulting Query is:
SELECT A.a, B.b
FROM
A,B,C
WHERE A.bfk=B.pk
AND

B.cfk=C.pk

AND

C.val=XXX

Now, we define Primary key and foreign key relations for Tables B and C.
Suppose the surrogate key corresponding to val XXX is 12. How will the
query change after implementing this index awareness?

The resulting query will be:


SELECT A.a, B.b
FROM
A,B
WHERE A.bfk=B.pk
AND

B.cfk=12

The table C will be eliminated from the Query and the foreign key to C in table be will be
equated to 12, the key corresponding to XXX. The join with C will be eliminated.

Scenario 3:
A User named User1 wants a privilege of running a BO Report for 40 mins and
retrieving a report with row limit 40,000. However, in the SQL parameters of
the universe, the row limit is set to 10,000 and the execution time limit is set
to 10 mins. How can you give the user the required rights?
Go to Tools -> Manage Security Click on Mange Access Restrictions. Create a new
restriction. In the Controls tab of the restriction, set the row limit to 40,000 and execution
time limit to 40 mins.
In the Main Window, apply this restriction to User1

Scenario 4:
In a report we have a table like this:
Dim A

Dim B

Measure 1

AA

12

100

BB

34

50

CC

21

40

DD

43

90

EE

45

200

FF

54

75

There is a report filter applied on this block which restricts both DIM A and
DIM B in the table, i.e only select values of DIM A, DIM B and the
corresponding measures from the query are displayed in the table. Another
column needs to be added which will calculate the average for each row based
on the sum of Measure 1 in the table (not all values in report). What would be
the formula?

For this we will require the sum of Measure 1 in the table, which can be achieved only by In
Block keyword.
The formula will be:
Sum( Measure 1 ) / Sum( Measure 1 In Block )

Scenario 5:
In the embedded sheet of an Xcelsius dashboard, we have data like:

Field A

Field B

Field C

Field D

Xxx

Tyu

100

98

Xxx

Yyy

45

76

Xxx

Dev

56

87

Yyy

Wes

78

13

Yyy

Rid

200

106

In the dash board, we need a selector on Field A for a chart which will plot the
values of Field C and Field D against all Field B values against one Field A.
How can we achieve that?
This can be achieved using filtered rows. In the Selector Properties, select Insertion Type as
filtered rows and map the Labels by selecting all values of Field A(including the duplicates).

The labels will display unique values and when a particular value is selected, all rows corresponding to
the value of Field A will be selected as output. The chart component needs to be mapped to the output this
selector.

You might also like