Você está na página 1de 16

In guided navigation when same report is used for guided condition then report will be queried only

once - checked with optima report.


How to create group filter?
Pivot view error
================
View Display Error
Maximum total number of cells in Pivot Table exceeded (Configured Limit: 500000). Try moving one or
more attributes to the page axis.
Error Details
Error Codes: QDJMKBAJ
View selector - Create different views by using duplicate layer, new layer, etc for each kind of view(in
case u need 2 pivot view etc) and then rename each view in view selector so that users will see custom
names instead of the actual view names. How will you identify the type of view based on name. Is there
a way to do that?
get back to original names or identify the original names.
When u select a particular view, on right side of the view name you will have an icon which can be used
to new, duplicate, specialize and delete the view. All these options will create similar type of view
selected.
For report long version short version etc., create a report with different view and hide few columns in
short view.
For hiding and unhiding filter create a view selector and add filters view and none … rename according
to requirement like view filters, hide filters respectively.
In a pivot view we have pages, sections, rows, columns, measures and excluded.
If you go to edit dashboard and properties of any report then you properties->report links....using this
you can control what option you have to see under a report ex modify, refresh, printer friendly,
download, add to briefing book, copy.
For each report added to a section you will get three option from properties->Display results : Embed in
section, Link with in dashboard, Link in a separate window.

For each section click on properties you will see...


Guided navigation - for guided navigation
Permissions - for setting permissions specific to sections
Format section - Formatting properties of the section.
Drill in place - What is the use of this option
Arrange horizontally - Arrange objects added to the section horizontally else by default vertically
Collapsible - You will get two double arrow the right top corner of the report to collapse the section
In optima main page link or image dashboard object is used as we are embedding pages we should not
use link in a separate window via display results option coz that will show only report not dashboard
that too without prompt.
Whenever you want to embed a dashboard page in another page use “link or image” object.
Dashboard objects: Total 7 types
Section
Link or Image

Embedded content

Text

Folder
Guided Nav. Link

Brifing book nav.link

BI Publisher Report
In edit dashboard page after page name you will have printer and pdf options. After this you will add
column option.
Hierarchy of dashboards...dashboard group -> Dashboard ->Page ->columns ->Sections
->Reports/Prompts

For using no result view you can create two sections for one section you can set show when data returns
and for other section show data when no data returns and use no rows returned view in this condition.
Will the prompt used in a dashboard be applied to a guided navigation report?
If you don’t want to show any report data except some text message but user should get option to
download data then user static text view and enable download link for the report.

To hide a section heading you will get that option under rename option.
In title view we have Title, logo, subtitle, started time, help url.

When you create a new physical table in physical layer you can set the table type as physical table,
stored procedure, opaque view/select statement

Define pipeline. Did you use it in your projects?


o Yes, pipelines are the stages in a particular transaction. assessment, finance etc.

Have you heard of Implicit Facts? If, so what are they?


o An implicit fact column is a column that will be added to a query when it contains columns from two or
more dimension tables and no measures. You will not see the column in the results. It is used to specify
a default join path between dimension tables when there are several possible alternatives.

Can you use physical join in BMM layer?


o yes we can use physical join in BMM layer.when there is SCD type 2 we need complex join in BMM
layer.

What are other ways of improving summary query reports other than Aggregate Navigation and Cache
Management
Indexes
Join algorithm
Mat/view query rewrite
Web proper report design its optimal by making sure that it is not getting any addition column or rows

How do you split a table in the rpd given the condition. ( the condition given was Broker and customer in
the same table) Split Broker and customer.
o we need to make an alias table in the physical layer.

Filter is better than a case in filter condition of logical column since filter condition is added to the where
clause while case condition is added in the select clause. So performance using filter is better.
For displaying month names in chronological order you can use a dummy column in bmm with number
and then user set column order for the dates column as the newly created dummy column.
Create a new calculation in pivot view using new calculated item
OBIEE allows you to specify Rows per Page for a Table View, but there is no such property for a Pivot
Table. However, we have a trick that will allow you to mimic this behavior for most simple Pivot Tables.
First, build your report, and add an additional column at the end. Rename this column “Page Number”
and change the column formula to an expression that will generate page numbers based on the row
number; for example:

TRUNCATE((RCOUNT(1)-1)/10, 0) +1

In this case, our objective is to have 10 rows per page. The RCOUNT(1) function effectively produces a
row number (similar to the ROWNUM pseudo-column in an Oracle Database). 

Now, simply create your Pivot Table, and place the “Page Number” column in the Pages section.
Depending on the orientation of your Pivot Table, you may need to rearrange the column order or sort
order in the Criteria tab, to produce the desired page numbering. 

Dashboard prompt will always override the report filter, but it will cause the report to have a new default
if no prompt selections are made
Multiple time periods in a single report?

Data types for column


1. A Subject Area is stored in a webcat once a user has accessed it via Answers.
2. The Subject Area will be visible in the Admin >Manage Privileges link only if a user has accessed
the Answers link.
3. Subject Areas will persist for the life of the webcat, but will not be accessible via the Admin >
Manage Privileges link after the webserver services have been stopped and restarted. They will only
be accessible once a user (any user) has accessed the Answers page in a webclient session.
4. The behavior described in Step 3 ensures that potentially archived, deleted or renamed subject
areas are not visible for setting privileges.
5. The View privileges will also not be accessible via the Admin > Manage Privileges link after a
webserver service recycle until and unless a user (any user) has accessed it in a webclient session.
a. When you run a request, the following privileges become visible in the Admin > Manage Privileges
link
View Compound
View Filters
View Narrative
View Nested Request
View Pivot Table
View Logical SQL
View Table
View Ticker
View Title
b. When the user clicks on “Customize View”, the following privileges become visible:
View Create Segment
View Chart
c. When the user clicks on Views Tab, the following privileges become visible:
View Question
View Column Filter
View Global Filter
View Image

4. How do you import Essbase Cubes into your repository?


5. Whats XMLA and where is it used for in OBIEE context
13. Is it mandatory to have hierarchies defined in your repository? If Yes, where does it help? If No, what
happens in the reports?
14. How do you create outer joins in physical layer?
12. What is a complex join in OBIEE and why, where is it used?
22. You have two tables Table 1 and Table 2 joined by a foreign key in the database? They are imported
together from the database into your physical layer. Is this relationship still preserved in the OBIEE physical
layer?
23. Same as question 22 but what happens if you import each table seperately?
24. If Table 1 and Table 2 are dragged from physical layer to BMM layer, which table becomes a Fact Table
and which table becomes a Dimension Table?
25. What if the tables (Table 1 and Table 2) are not joined, then what happens in BMM layer?
Few test cases pf impact of nqs file repository naming order when no repository is mentioned in the OBI
System DSN
Star = paint.rpd, Default;
Star = paintsbrother.rpd;
System DSN (AnalyticsWeb by default) will consider paint as default repository loaded.
Star1 = paint.rpd, Default;
Star2 = paintsbrother.rpd;
System DSN (AnalyticsWeb by default) will consider paint as default repository loaded.

Star = paint.rpd, Default;


Star = paintsbrother.rpd, Default;
System DSN (AnalyticsWeb by default) will consider paintbrother as default repository loaded.

Star1 = paint.rpd, Default;


Star2 = paintsbrother.rpd, Default;
System DSN (AnalyticsWeb by default) will consider paintbrother as default repository loaded.
Star1 = paint.rpd;
Star2 = paintsbrother.rpd;
System DSN (AnalyticsWeb by default) will consider paint as default repository loaded.
Star = paint.rpd;
Star = paintsbrother.rpd;
System DSN (AnalyticsWeb by default) will consider paint as default repository loaded.

Diff way of cache purging…


1. EPT
2. Manual cache purge
3. Keeping cache persistence time for tables
4. Using NQCMD.exe
a. From local system using a DSN connecting to required server.
b. Executing bat file in server with above command periodically or manually
c. Calling the batch file in server using a dbms scheduler package
5. Calling SACachePurge… from issue SQL
6. Calling SACachePurge… from a dashboard by generating direct URL using scripts like javascript.
XMLA(import from xmla changed to import from multidimensional) in context of obiee 
Microsoft Analysis Services 2000, like MSAS 2005, Oracle Hyperion Essbase and SAP B/W connects to OBIEE
through XML/A, an XML-based standard for accessing OLAP cubes via HTTP/HTTPS.

If you try to use import option in online mode…import from repository option will be disabled. In offline mode import
from server will be disabled. Import from server is to import repository from another analytics server via ODBC
defined in the importing machine.

you cannot remove columns from a alias table. u have to delete the columns in base table if you dont want
any columns in alias.
There is no difference between base table and alias table everything is same except keys and foreign keys.
Source table cannot be deleted unless alias table is deleted.

Yesterday, I was working on some issue and had to make use of Rank and Dense Rank in some reports in OBIEE.
Here I am sharing the same with you as I think this might help some of you.
First of all lets understand what is Rank and Dense Rank. Let me explain the same with an example.
If in a class there are 5 students and in an exam 2 got 95 and other 2 got 93 and the last one got 91. So, using the
Rank function will give you the below output:
Students     Marks     Rank
student 1        95                   1
student 2         95                  1
student 3        93                   3
  student 4        93                   3
student 5        91                   5
 
And if we make use of the Dense Rank Function it will give the below output:
Students     Marks     Rank
student 1        95                   1
student 2         95                  1
student 3        93                   2
  student 4        93                   2
student 5        91                   3
 
Hence, Dense Rank doesn’t skip the values and provides a continuous series of numbers as compared to Rank.
Now, lets see how can you write a query for the same on the DB.
Rank in DB
SELECT Student, Marks, Rank() over (PARTITION BY Marks order by student) as Rank  from Class
 
Dense Rank in DB
SELECT Student, Marks, Dense_Rank() over (PARTITION BY Marks order by student) as Dense_Rank  from Class
 
Now, lets understand how to implement the same in OBIEE.
Rank in OBIEE
OBIEE has an internal function called Rank and can be used directly for this. We can use the below syntax in the fx
of the column:
RANK(“class”.”student” by “class”.”marks”)
  
Dense Rank in OBIEE
Since, Dense Rank is not an internal function of OBIEE we need to make use of the Evaluate function to use this. As
explained in the previous posts also that Evaluate function is used when we have to make use of the DB functions in
OBIEE. We can use the below syntax in the fx of the column:
EVALUATE(‘DENSE_RANK() OVER (PARTITION BY %2 ORDER BY %1)’AS
INTEGER,”class”.”student”,”class”.”marks”)
 
The above two syntax show that how we can make use of Rank and Dense Rank functions in OBIEE.
Now, one important thing to note here is that we can make use of Rank as the filter in a report but we can’t use
Dense Rank as the filter in a report. This is because Rank is an internal function to OBIEE and hence, when we make
use of Rank as the filter in a report, OBIEE forms a subquery to calculate the Rank and filters the data in the outer
query.
eg: RANK(class.student by class.marks) <=3
But, the same doesnt happen with Dense Rank. For Dense Rank OBIEE doesnt perpare and subquery and tries to
use the entire Dense Rank expression in the where clause in the query which Oracle doesnt permits. It gives an ORA
error stating that ‘Window Functions are not permitted’
I hope this will help you to understand the Rank and Dense Rank functions and their usage in OBIEE.

Clear button for selections…

 Then copy the below mentioned script in that text box and preview.
“<div><a href=”#” onclick=”return PersonalizationEditor.removeDefaultSelection(false)”>Clear Filter</a></div>”

Again came up with a new requirement and thought of sharing the same with you. My client asked me to wipe out the
selected values in the Dashboard prompts when he navigates from one page to another on the dashboard.
So, finally I found the following solution for the same.
We need to add a tag in the instanceconfig.xml file to achieve this. Stop the presentation services and place the
below given tag in instanceconfig.xml
<PersistPageState>FALSE</PersistPageState>
The tag can be placed anywhere between the server instance tags in instanceconfig.xml.
Start the Presentation services and login into the application and check by setting some values in the prompts.
Day before we came across a new requirement in which we had to call a function created in Oracle DB to OBIEE.
Thought of sharing the same with you.
It is very simple if you know the trick. We made use of the EVALUATE function in OBIEE to call the function created
in the Oracle DB.
Create a function in Oracle DB and use it in EVALUATE function as shown below:
EVAULATE(‘dbfunction_name(%1,%2)’, parameter list)
In the above expression %1& %2 are number of parameters to be passed to the DB function. Parameters can be
more than or less than 2 depending on the requirement. These can also be constant values.
eg: EVALUATE(‘func1(%1)’,'TRADE_ID’)
So, the above expression will pass the TRADE_ID parameter to the DB function(func1) and hence give the result
based on the output of the DB function.
One important thing to remember is we can’t call a stored procedure using the EVALUATE function.
We have also tried calling a stored proc using EVALUATE function but it didn’t work for us. If anybody has
implemented the same kindly share the way to implement the same.
We can make use of this EVALUATE function for most of the DB functions and it finds a vast usage in OBIEE.
I hope this post will be helpful to you.
Comments & suggestions are most welcome.

So, here is a technique to prevent the report from hitting the cache.
When we go to the Advanced Tab in Answers for that particular report, we have the Prefix and the Postfix sections
there. Just go to the Prefix section and paste the below mentioned command:
SET VARIABLE LOGLEVEL=2, DISABLE_CACHE_HIT=1;
The next time you will run the report it wont hit the cache.
Kindly keep me posted with all your learnings and questions in BI, so that we can make this forum a more valuable
place for learning BI.

Today, I came acros a wierd scenerio wherein the filters didnt worked properly when we navigate from one report to
another on Dashboard.
I had a chart report on the Dashboard and it was having a navigation to another Pie report. Now when I tried to
navigate to another report, what i found was the other report was not getting filtered properly. I tried running that
report from the saved location but from there it ran properly with all the filters in place. I also checked in
the destination report for IS PROMPTED filter. The filter was in place too. 
Then after analyzing the things i came to know that sometimes this happens in OBIEE and to tackle this we
should Protect the filter. We need to make the filters Protected in the destination report to which the navigation will
lead to. The filters other than IS PROMPTED should be Protected.
We can protect a filter by just clicking on the filter options and check the Protect Filter option as shown below.
One thing to note here. We can’t protect the filter group containing individual filters. We need to individually protect
the filters in the filter group and then save it again.
I hope this can be helpful to you.

Security loop holes in oracle due to Evaluate option. We can access objects which are not imported in repository,
delete objects using functions. This can be overcome to some extent using strict db access previliges to accounts
used in connection pools.

Other way is to use RLS.


One more way is restricting access to answers.
One more way is to restrict access to change column formulas privilege but this can be overcome using advanced
tab. But access to advanced tab can also be restricted using privileges. Even after restricting access to advanced tab
we can use this using filters and there is no way to restrict usage of filters.

RLS methods…
Like optima and shipments
Using multiple connection pools
Using single connection pool and connection scripts to pass the user info to database.

requests that contain “Evaluate” function calls are not cached by the BI
Server

ROW_NUMBER or SUM() OVER functions


In your queries, if you start noticing Partition By using ROW_NUMBER or SUM() OVER
functions then that means level based measures are being used somewhere (not in all cases
but in most of them)

How will you make sure a filter applies whenever you add a column to a request

Add filter in the logical table source under content tab.

In hierarchies only grand total level can exist without a column or key for rest they should
exist.
To modify a repository session variable for the entire session scope, you can fired this odbc
function:
call NQSSetSessionValue('Float MyRepositoryVariable=200;')

Using request variable we can only impact the variable in logical query we cannot set the
actual variable.

To disable the query cache hit


The variable DISABLE_CACHE_HIT disable the use of the query cache of OBI Server.
SET VARIABLE DISABLE_CACHE_HIT=1;SELECT "Customer"."Name" FROM SH ...

 DISABLE_CACHE_HIT
 DISABLE_CACHE_SEED

SAcache purge odbc function return codes

Result
Result Message
Code
1 SAPurgeCacheByDatabase returns successfully
59115 Operation not performed because caching is not enabled.
59116 The database specified does not exist
59117 The table specified does not exist
85025 The physical cube specified does not exist

Type of fragmenation / partition


Fact-based / Dimension-based fragmentation
The logical table sources have different columns:

 OBIEE - Fact-based vertical partitioning/fragmentation


 OBIEE - Dimension fragmentation design to add an automatic filter with the choice of
a column
Content-based / Value-based fragmentation
The logical table sources have different rows (content):

 OBIEE - Fragmentation Content, value-based, horizontal partitioning


Level-based fragmentation / aggregate navigation
One table source is a natural of compiled aggregate table from an other. It has then a
different grain.

 OBIEE - Aggregate Navigation with level-based fragmentation

Execute Queries Asynchronously


“Execute Queries Asynchronously” parameter in the connection pool, this defines a
parameter of our communication with the Oracle database. If this option is checked, the
query is run asynchronously, and can be cancelled by the Analytics Server while the query is
running, and using the same connection. If the option is not checked, the query is run
synchronously and the Database will not receive the cancel call until the query has
completed. Asynchronous mode is more efficient but it is less 'safe', as it is more complex to
handle. It is useful to test your queries with the option unchecked (safer) ,as part of the
troubleshooting

Steps to populate level counts automatically


These Level Counts can be automatically populated for one or more dimension hierarchies
using Estimate Levels. To populated logical level counts automatically:

1. In the Administration Tool, open a repository in online mode.


2. Right-click one or more business models and dimension objects, and choose Estimate
Levels.
3. In the Check Out Objects dialog box, click Yes to check out the objects that appear in
the list.

When you use Persist connection pool, OBI Server stores the sub-query in a temporary table and then
re-writes the original sub-query result against this table. It reduces the data movement between the
OBI Server and the database and supports unlimited IN list values. It is basically used to improve
performance.

The OBI Server processes a sub-query in the following precedence:

 Pushes down both main report and sub-query together to the backend db if possible.

 Persist the sub-query results in temp tables at the backend if a persistent connection pool is
available.
 Execute the sub-query and construct an IN list with return values

Now these are some of the question related to Persist connection pool:

In what circumstances temporary tables are created?

They are created as part of a sub-query processing whenever Persist connection pool is defined in the
repository.

Should the temporary table persist in the db or cleaned up ?

It should be cleaned up right after the report is completed. The temp table should be dropped when
OBI Pres. Server closes the cursor. If the table is not dropped, one way is to use Admintool, view
online sessions, and check if the report using the sub-query is still opened by OBI Pres. Server. The
table is dropped when the OBI Pres. Server finishes the request and cursor is closed.

How can we disable completely the creation of temporary tables in our Database?

Clear out the Persist connection pool from the physical layer.(Found on the “General” tab of the
Database object’s properties dialogue). If there is no Persist connection pool set for the database then
temp table creation will not happen under any circumstances.

Does the user set up for the persist connection pool need to have database “create table”
privilege?

Yes, the user defined for the persist connection pool needs privileges to create DDL and DML in the
database.

Following example shows the sample physical query for Persist connection pool.

Repository: Star, Subject Area: Test, Presentation: Test

+++Administrator:2c0000:2c0008:—-2010/07/05 20:52:04

——————– Logical Request (before navigation):

RqList  distinct
DEPT.Department Name as c1 GB,
EMP.Employee Name as c2 GB
DetailFilter: DEPT.Department Name in ([ 'ACCOUNTING', 'OPERATIONS'] )

+++Administrator:2c0000:2c0008:—-2010/07/05 20:52:04

——————– Cache Hit on query:


Matching Query:    SET VARIABLE QUERY_SRC_CD=’Report’;SELECT Department.”Department Name”
saw_0, Employee.”Employee Name” saw_1, Employee.MGR saw_2 FROM Test ORDER BY saw_0,
saw_1, saw_2
Created by:    Akash

+++Administrator:2c0000:2c0008:—-2010/07/05 20:52:04

——————– Sending query to database named Scott (id: CreateTable TransGateway):


CREATE TABLE TT0O6SAT33G336800000O0200002 ( column1 VARCHAR2(14 CHAR) )

+++Administrator:2c0000:2c0008:—-2010/07/05 20:52:04

——————– Sending query to database named Scott (id: <<1795>>):


WITH
SAWITH0 AS (select sum(T157.SAL) as c1,
T157.MGR as c2,
T157.ENAME as c3,
T152.DNAME as c4
from
DEPT T152,
EMP T157
where  ( T152.DEPTNO = T157.DEPTNO and T152.DNAME in (select column1 from
TT0O6SAT33G336800000O0200002) )
group by T152.DNAME, T157.ENAME, T157.MGR)
select distinct SAWITH0.c4 as c1,
SAWITH0.c3 as c2,
SAWITH0.c2 as c3,
SAWITH0.c2 as c4,
SAWITH0.c1 as c5
from
SAWITH0
order by c1, c2, c3

Conclusion: If you are using Persist connection pool, then the db user associated with the connection
pool must have Create Table privilege. And the moment I gave Create Table privilege to the user, the
report started working fine. If you are not using Persist connection pool, then temporary table will not
be created and Create Table privilege is not required.

The Direct Database Request permit you to perform SQL statement directly to a datasource.


The Oracle BI Server sends unprocessed, user-entered, physical SQL directly to an
underlying database. The returned results set can be rendered in Oracle BI Presentation
Services, and then charted, rendered in a dashboard, and treated as an Oracle BI request.
Becareful, you can perform SELECT but also CREATE or even DELETE and DROP statement!
You bypass completely the OBI Server mechanisms such as :

 the logical business model


 the Security
You can use it to perform complex query such as using a table function

You can use in the SQL statement a variable

ORA-00911: invalid character at OCI call OCIStmtExecute


Be careful that you have to suppress the semicolon at the end of the statement.

[nQSError: 27022] Unresolved Connection Pool


object: ..... (HY000)
Be sure to have the name of the database and the name of the connection pool framed by
two doubles quotes.
Example:
database."Connection Pool"

is not good whereas

"database"."Connection Pool"

is good.

Você também pode gostar