Monday, April 13, 2015

GOURL for BI Publisher report - Passing multiple values on to a parameter

Most of you might know already on how to place a BI publisher report on a Dashboard and link a Dashboard prompt to that BI Publisher report.


By creating a Presentation variable on the Dashboard prompts with the same name as the parameter name on BI Publisher, we can link the Dashboard prompts and BI Publisher.

For instance, if you have a parameter created ASOFDATE on your BI Publisher report, you can create a Dashboard prompt with a Presentation variable ASOFDATE and embed the Prompt and BI Publisher report on the same Dashboard page.

To make if more interested my client gave me a requirement to call this Dashboard page from an External application. Here comes the use of GOURL.

Here I called directly the BI Publisher report  through GOURL as the Client anyhow don’t want to see the Prompts and want to pass the values from the application through GOURL.

My GO URL was like this:

https://SERVERNAME/analytics/saw.dll?bipublisherEntry&Action=open&itemType=.xdo&bipPath=%2FReports%2FBIPUBLISHER%2FTest%20BIP%20Report.xdo&bipParams={"_xmode":"1","_xpf":"","_xpt":"0","_xdo":"%2FReports%2FBIPUBLISHER%2FTest%20BIP%20Report.xdo","Date1":"08/26/2014","Date2":"08/26/2014","TestID":["399,456,876"],"_xt":"Test%20Template","_xf":"html","_xautorun":"false"}&NQUser=weblogic&NQPassword=password1234

I have explained the above URL here:

SERVERNAME: name of the OBIEE server or IP address.

Action=Open: Action of this GOURL is just to open the report.

%2FReports%2FBIPUBLISHER%2FTest%20BIP%20Report.xdo: Name of the BIP Report.

xmode":"1": This will hide the parameter labels on top of the BIP report.

Date1":"08/26/2014","Date2":"08/26/2014","TestID":["399"] : Parameters used on the BIP Report

Test%20Template: Template name on the BIP report

Weblogic: User ID passed as part of the GO URL from application, user no need to enter it again.

Password1234: Password given on GOURL, hence user no need to enter it again.


More interesting task would be to pass multiple values on the same parameter. Consider the client want to pass multiple TestIDs from the application via GOURL. The URL below has multiple TestIDs ("399,456,876") , but this one doesn’t work because parameter on BIP side will take this as a single string.

https://SERVERNAME/analytics/saw.dll?bipublisherEntry&Action=open&itemType=.xdo&bipPath=%2FReports%2FBIPUBLISHER%2FTest%20BIP%20Report.xdo&bipParams={"_xmode":"1","_xpf":"","_xpt":"0","_xdo":"%2FReports%2FBIPUBLISHER%2FTest%20BIP%20Report.xdo","Date1":"08/26/2014","Date2":"08/26/2014","TestID":["399,456,876"],"_xt":"Test%20Template","_xf":"html","_xautorun":"false"}&NQUser=weblogic&NQPassword=password1234

One workaround would be pass the entire TestID value as a string with a separate character and use the below on the filter to split the string of numbers into separate numbers.

TESTID in (with str as (select :PoolId as val from dual)

select cast(regexp_substr(val,'[^.]+', 1, level) as int)

from str

connect by cast(regexp_substr(val, '[^.]+', 1, level) as int) is not null)


Here the multiple TestIDs will be passed as ("399.456.876"), dot separated one string and the above function on the filter will convert it into a comma separated list of values (399,456,876). The GOURL is below.

https://SERVERNAME/analytics/saw.dll?bipublisherEntry&Action=open&itemType=.xdo&bipPath=%2FReports%2FBIPUBLISHER%2FTest%20BIP%20Report.xdo&bipParams={"_xmode":"1","_xpf":"","_xpt":"0","_xdo":"%2FReports%2FBIPUBLISHER%2FTest%20BIP%20Report.xdo","Date1":"08/26/2014","Date2":"08/26/2014","TestID":["399.456.876"],"_xt":"Test%20Template","_xf":"html","_xautorun":"false"}&NQUser=weblogic&NQPassword=password1234








Thursday, April 2, 2015

OBIEE 11g Customization - Location of Files to Change


Remove/Edit Copyright Message:

Change Utilmessages.xml on the path:

\Oracle_BI1\bifoundation\web\msgdb\l_en\messages

Change Oracle Logo:

Replace Oracle Logo with your custom logo on these paths

\Oracle_BI1\bifoundation\web\appv2\res\sk_blafp\b_mozilla_4

\Oracle_BI1\bifoundation\web\appv2\res\sk_blafp\login

\user_projects\domains\bifoundation_domain\servers\bi_server1\tmp\_WL_user\analytics_11.1.1\7dezjl\war\res\sk_blafp\b_mozilla_4

\user_projects\domains\bifoundation_domain\servers\bi_server1\tmp\_WL_user\analytics_11.1.1\7dezjl\war\res\sk_blafp\login

Login Messages:

\Oracle_BI1\bifoundation\web\msgdb\l_en\messages\uitlmessage.xml

Product Messages:

\Oracle_BI1\bifoundation\web\msgdb\l_en\messages\productmessages.xml

Oracle BI Catalog:

\Oracle_BI1\bifoundation\web\msgdb\l_en\messages\uicmsgs\saw.catalog.xml

Oracle Biee Home

\Oracle_BI1\bifoundation\web\msgdb\l_en\messages\bieehomemessages.xml

Logout Messages

\Oracle_BI1\bifoundation\web\msgdb\l_en\messages\logonmessages.xml

To include Signin Banner/Notification:

\Oracle_BI1\bifoundation\web\msgdb\pages\common\signin.html

Restart only presentation service to apply these changes.

[nQSError: 59044] Unable to create table TT* error on OBIEE 11g


[nQSError: 59044] Unable to create table TT* error on OBIEE 11g 

Some time when you configure a new connection pool and through that connection poo, if trying to run OBIEE queries, especially when using one report on the filter of the other report  , you may get the error similar to below.

State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 59044] Unable to create table TT2OCI7GIAP2N676894873010H3 [nQSError: 17001] Oracle Error code: 1031, message: ORA-01031: insufficient privileges at OCI call OCIStmtExecute: CREATE TABLE TT2OCI7GIAP2N676894873010H3 ( column1 VARCHAR2(80 CHAR) ). [nQSError: 17011] SQL statement execution failed. (HY000)

Depending on the Database, insufficient privilege error will change. In the above error I used Oracle Database.

What is happening over here is, when using one report on the filter of another report, OBIEE creates subqueries and instead of storing the results of the subqueries on BI Server side, it creates TEMP tables on Database. This happens when you set Persist connection pool while creating your connection pool on the physical layer of the RPD. See below.

The User ID on the connection pool used here does not have CREATE TABLE privilege on the Database to create TEMP tables. Hence, you are getting the error.

You can simply clear persist Connection Pool settings on the connection pool and save the RPD and reload metadata, which will solve the issue. Or if you still want to keep Persist Connection pool for improving performance of your Reports, you can give CREATE TABLE privilege to the USER ID given on the connection pool.