Sunday, December 12, 2010
OBIEE Column Level Security with Grant Total
UserA belongs to Non Sales group.
The column level security is applied over Non Sales group, so users from Non Sales group cannot see the Quantity sold column.
UserB do not have any restrictions.
For UserB,
Same report for UserA,
The grant total value of Amount Sold column is displayed at the column which is hided for the UserA. Usually when we enable column level security that column will be pushed to end, that is the reason for this.
To get the correct format with same functionality.
Remove column level security from RPD Quantity Sold column from RPD presentation layer.
In logical layer go to the LTS, In column mapping write the case statement like shown below,
Now for UserA,
For UserB the report will show all values for the quantity sold column.
Vino
Sunday, December 5, 2010
OBIEE Data Level Security - Session Variables
A new table created for storing user details.The user details where stored in a database table as shown below,
The two users used for this example are UserA and UserB.
Create the Initialization block for populating the group session variable.
This will populate the group values (REGION, PRODUCT in the GROUP session variable based on the user).
Create another session variable to populate the data value for the group.
This will populate the data value for each group based on user.
Now create two groups REGION, PRODUCT in the RPD.
Now go to Group REGION -> Permissions
Go to filter tab ->Add the logical layer table for applying the filter.
Similarly add the filter over other table as well wherever the filter needs to be applied, In this the filter applied over Sales (fact) table as well.
Add filter over the Product group as well based on the table.
Now when a user with no data level security logs in
For UserA,
For UserB,
If UserB selects the following column
Since this did not have product or region table column then also the filter will be applied because we have added the filter over the Sales table for both REGION and PRODUCT group.
The physical query for the above criteria will have this additional filter for region and products.
In the above physical SQL the filters for Region and Product is applied. Like this we can add other table also in the group to enforce the filter to be applied over the tables.
Vino
Wednesday, November 10, 2010
Refresh only particular reports in Dashboard - OBIEE
To refresh a particular report in the dashboard,I used the following code.
Using this I call the report inside Iframe and refresh the frame periodically.
Go to Edit dashboard -> add text and enable HTML
Enter the below code in the text box (change the report path).
[script>
function refreshTheFrame()
{
parent.frames[0].location.href='http://localhost:9704/analytics/saw.dll?Go&Path=/shared/Sample/Test_report';
}
setInterval('refreshTheFrame()',"60000");
[/script>
[div>
[iframe frameborder="0" border=0 marginwidth=0 marginheight=0 hspace=0 vspace=0 width=1200 height=600 scrolling=auto>
[/iframe>
[/div>
Note: In the code replace the [ with <
This code refreshes the report for every 1 min.
Vino
Saturday, October 16, 2010
Folder reports in same Dashboard
By altering the code generated with some javascript the functionality can be acheieved.
First add the Folder reports to the dashboard.
Go to page source -> search for table class "SectionTable"
Copy the code from the table start to end.
Then I added some script to add an Iframe and based on the user selection change the iframe content with the corresponding report.
Find the sample script below, with changes marked in bold.
=====================================================================================
[script]
function changeTheFrame(right)
{
parent.frames[0].location.href = right;
}
[/script]
[table class="SectionTable" cellspacing=0 style="" ]
[tr][td class="MinMaxCell" onclick="saw.dashboard.onToggleSection('d:dashboard~p:kgofk8gpr1igoom3~s:2hn4flc307gjsvb7', event); return false;" align="right"]
[!-- img id="d:dashboard~p:kgofk8gpr1igoom3~s:2hn4flc307gjsvb7Min" src="res/s_oracle10/portal/btn_min.gif" title="Collapse"/ --]
[img id="d:dashboard~p:kgofk8gpr1igoom3~s:2hn4flc307gjsvb7Max" src="res/s_oracle10/portal/btn_max.gif" style="display:none" title="Expand"/][/td][/tr]
[tr]
[td]
[table id="d:dashboard~p:kgofk8gpr1igoom3~s:2hn4flc307gjsvb7Contents" style="width:100%;"]
[!-- start folder --]
[tr height="100%"]
[td VALIGN="TOP" ALIGN="" colSpan="2" ]
[a href="javascript:void(null)" onclick="IgnoreEvent();" title="Text" name="SectionElements"]
[/a]
[a href="javascript:void(null)" onclick="IgnoreEvent();" title="Folder" name="SectionElements"]
[/a]
[table border=0 cellspacing=0]
[tr]
[td class="ExpandFolder" style="cursor:hand" onclick="javascript:ExpandCollapse('saw_89_4', event)"]
[img border=0 src="res/s_oracle10/portal/ifolder.gif"]
[a href="javascript:void(null)" onclick="javascript:ExpandCollapse('saw_89_4', event);return false" title="01 Ranking and Toppers"]
[font class="ExpandItem" onMouseover="this.className='ExpandOver';" onMouseout="this.className='ExpandItem';"]
[b]01 Ranking and Toppers[/b]
[/font]
[/a]
[/td]
[/tr]
[tr]
[td id="saw_89_4" class="_ExpandThis" style="display:none"]
[table class="ExpandList" border=0 cellpadding="0px" style="margin:0 12px;" cellspacing=0]
[tr]
[td]
[a href="javascript:changeTheFrame('http://localhost:9704/analytics/saw.dll?Go&Path=/shared/Sample%20Sales/01%20Ranking%20and%20Toppers/Multi%20Metrics%20Proportional%20Top%20Ns');" title="Multi Metrics Proportional Top Ns"]
[font class="ExpandItem" onMouseover="this.className='ExpandOver';" onMouseout="this.className='ExpandItem';"]
Multi Metrics Proportional Top Ns
[/font]
[/a]
[/td]
[/tr]
[tr]
[td]
[a href="javascript:changeTheFrame('http://localhost:9704/analytics/saw.dll?Go&Path=/shared/Sample%20Sales/01%20Ranking%20and%20Toppers/Multi-Dims%20Top%20Ns
');" title="Multi Dims Top Ns"]
[font class="ExpandItem" onMouseover="this.className='ExpandOver';" onMouseout="this.className='ExpandItem';"]
Multi Dims Top Ns
[/font]
[/a]
[/td]
[/tr]
[/table]
[/td][/tr]
[/table]
[/tr][!-- end folder --][/table]
[/td][/tr]
[/table]
[div]
[iframe FRAMEBORDER="0" BORDER=0 marginwidth=0 marginheight=0 hspace=0 vspace=0 width=1200 height=600 scrolling=auto]
[/iframe]
[/div]
=====================================================================================
Note: Change [ and ] with html tags <>
Add a text, check the checkbox for HTML and enter the code.
Save the dashboard,
On expanding it will see the reports we added.
On selecting the report will display on the frame inside the dashboard.
Vino
Tuesday, October 12, 2010
Data Labels on top of pie chart
By changing a parameter pie.pcxml we can do this.
Go to the below location,
Before doing any changes, take the backup of pie.pcxml.
In the pie.pcxml, Goto -> DataLabels tag, by default the value would be Position='OutWithLeader'
Change that attribute to, Position='Inside'
This will give,
Vino
Report Links on top of the Report
To get the report links at the top of the report, I followed the following approach.
In the Edit dashboard, Go to that report properties-> Report Links -> select the links
In this case, I have selected Refresh, Printer Friendly, Copy.
Save the Dashboard, now you will get the report links at bottom of the report.
For that dashboard, On the browser View-> Pagesource
Search for ResultLinksCell, You will see three ResultLinkCell class each for Refresh,Print and Copy.
Just above the first ResultLinksCell you have table tag select the code from there copy the code upto table tag end at the third ResultLinksCell.
See the sample code selected for the above mentioned three report links,
Go to Edit Dashboard -> Add text
On the text -> Check the contains HTML Markup -> paste the copied code between center tag. The Center tag is for getting the links at center of the report as shown below.
Remove the Report links from the report properties.
Save the Dashboard.
Now you will get the report links on top,
Vino
Saturday, October 9, 2010
Top / Bottom view in the same report
Create a prompt that will show top or bottom values to use, choose the column for the prompt and in show choose SQL results and enter the SQL,
Select Case when 1=0 Then Table1.Column Else 'Top' End From “Subject Area”
Union All
Select Case when 1=0 Then Table1.Column Else 'Bottom' End From “Subject Area”
In Default to, choose specific value and enter Top. Set the presentation variable (pv_tb).
In Answers, add the columns for the request
Country Name, Amount Sold
Set the Amount Sold column as descending, to get the chart values in order.
Add a dummy column, name it as Top / Bottom in that fx enter the following,
Case When '@{pv_tb}'='Top' Then Rcount(1) Else (Max(Rcount(1))-Rcount(1)+1) End
Add a filter over this column as less than or equal to 5.
Go to dashboard add the prompt and the request.
This will give Top 5 or Bottom 5 values based on the prompt selection.
Top selection:
Bottom Selection:
To have dynamic value to be passed for the report, change the above prompt add another column to the prompt. Make the prompt as edit box and set a specific value and set presentation variable (pv_rk) to have the value as shown below.
Now change filter condition in above criteria to add the presentation variable pv_rk as filter instead of the value 5.
The report will be,
Vino
Sunday, September 26, 2010
Failed to load DLL
The error information was not clear enough, so I tried to connect to the database using sql plus.
I was able to connect with the database.
Then I tried to view the table data through RPD, I got the following error.
"[nQSError: 46029] Failed to load the DLL C:\OracleBI\server\Bin\nqsdbgatewayoci10g.dll. Check if 'Oracle OCI 10G' database client is installed."
The error seems like BI Server was not able to find the Oracle client installed on the system.
I have many Oracle homes, so went and checked the Path variable.
In the path variable , I have the Oracle client’s path was available but it was mentioned last after other Oracle applications path.
So I copied the Oracle client path and past it at the beginnig of the path variable value.
Then I closed the RPD and reopened it and I was able to connect with DB.
So changing the path helped me in solving this issue.
Other related posts
@OTN OBIEE
Sunday, July 4, 2010
Pivot table grouping and column navigation
When the users click (+) then expand the report on the same Dashboard with a scrollbar.
First create a request with 3 columns Rank (which will hold the rank), Country name and Amount_Sold Change the column (Rank) data format to accept HTML.
In the column Rank use the below formula,
In the column Country name use the below formula,
Case when RANK (sum (SALES.AMOUNT_SOLD)) <= 10 then COUNTRIES.COUNTRY_NAME else 'Others' end
Include the same dimension Country name in your request and hide this field as well. This is for OBIEE to do a proper group by in the Pivot.
Now go to the Pivot view and arrange Amount_Sold and columns updated in step no.2 and 3. However ranks will not be sorted, to do the sorting of it, Create a new dummy column and populate it by using the below formula, sort this field and then hide it.
Case when RANK(sum(SALES.AMOUNT_SOLD)) <= 10 then RANK(sum(SALES.AMOUNT_SOLD)) else 11 end
In pivot view you will get the following:
To add a scrollbar and navigation of + plus sign in the same dashboard.
Go to Dashboard add a text box, enter the following code.
Now you will see the result in a frame as below,
When you expand the ‘+’ the expanded request will be refreshed in the same page inside the Iframe
Vino