Escolar Documentos
Profissional Documentos
Cultura Documentos
Embedded content
Text
Folder
Guided 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
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?
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.
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.
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
How will you make sure a filter applies whenever you add a column to a request
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.
DISABLE_CACHE_HIT
DISABLE_CACHE_SEED
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
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.
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:
They are created as part of a sub-query processing whenever Persist connection pool is defined in the
repository.
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.
+++Administrator:2c0000:2c0008:—-2010/07/05 20:52:04
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
+++Administrator:2c0000:2c0008:—-2010/07/05 20:52:04
+++Administrator:2c0000:2c0008:—-2010/07/05 20:52:04
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.
"database"."Connection Pool"
is good.