OBIEE 11.1.1.6.2 Row Wise Init for Roles variable
Gurus,
Why is the NQ_SESSION.ROLES ( Row Wise Initialized ) behaving differently when compared to other Row Wise initialized session variables.
I am using EBS Authentication and Authorization for OBIEE, so my authorization query is
SELECT DISTINCT 'ROLES', RESPONSIBILITY_KEY
FROM FND_USER,FND_USER_RESP_GROUPS, FND_RESPONSIBILITY_VL
WHERE FND_USER.user_id=FND_USER_RESP_GROUPS.user_id
AND FND_USER_RESP_GROUPS.RESPONSIBILITY_ID = FND_RESPONSIBILITY_VL.RESPONSIBILITY_ID
AND FND_USER_RESP_GROUPS.RESPONSIBILITY_APPLICATION_ID = FND_RESPONSIBILITY_VL.APPLICATION_ID
AND FND_USER_RESP_GROUPS.START_DATE < SYSDATE
AND (CASE WHEN FND_USER_RESP_GROUPS.END_DATE IS NULL THEN SYSDATE ELSE TO_DATE(FND_USER_RESP_GROUPS.end_Date) END) >= SYSDATE
AND FND_USER.user_name = 'VALUEOF(NQ_SESSION.USER)';
Now I plan to use these Roles( EBS Responsibility name) which I have populated in a DB table against some Cost Center and below is the how I view the data in DB.
ID | PROFIT_CENTER | RESPONSIBILITY
0 | 0 |0
1 | 100 |BI_Fin_Role
2 | 200 |BI_P2P_Role
3 | 300 |BI_Inv_Role
Then my Profit Centers Initialization Block is now
SELECT DISTINCT 'PROFIT_CENTER', PROFIT_CENTER FROM WC_OBIEE_PC_SECURITY WHERE RESPONSIBILITY IN (VALUELISTOF(NQ_SESSION.ROLES))
So User1 has BI_Fin_Role and PC_Security Role so does the User2 has BI_Inv_Role and PC_Security now when User1 logs in they should see only 100 Profit center data and User2 should see only 300.
I have created data filter for that application role (PC_Security) and limiting with "Dim.Profit Center"."Profit Center" = VALUEOF(NQ_SESSION."PROFIT_CENTER")
However first problem I encounter is there is no value definition for PROFIT_CENTER, snap that means the VALUELISTOF(NQ_SESSION.ROLES) value is not being passed or recognized by whenever BI Server sends that query to DB.
This is confirmed by my query log which says:
[2013-04-29T12:49:06.000+00:00] [OracleBIServerComponent] [TRACE:5] [USER-39] [] [ecid: 11d1def534ea1be0:48033065:13e4213bbd0:-8000-0000000000008dc8] [tid: 47796940] [requestid: fffe0313] [sessionid: fffe0000] [username: ] -------------------- An initialization block named 'PC_Security', on behalf of a Session Variable, issued the following SQL query: [[
SELECT DISTINCT 'PROFIT_CENTER', PROFIT_CENTER FROM WC_OBIEE_PC_SECURITY WHERE RESPONSIBILITY IN (VALUELISTOF(NQ_SESSION.ROLES))
Returned 0 rows. Query status: Successful Completion
So I try to issue the SQL to BI Server thru Issue SQL Directly:
SELECT "Profit Center"."Profit Center" FROM "SLA Details" WHERE "Profit Center"."Profit Center" = VALUEOF(NQ_SESSION.ROLES)
and the query log gives be the below log which blew my mind as its being delimited by ';'
select distinct T1260626.ACCOUNT_SEG3_CODE as c1
from
W_GL_ACCOUNT_D T1260626 /* Dim_W_GL_ACCOUNT_D */
where ( T1260626.ACCOUNT_SEG3_CODE = 'BIAuthor;BIConsumer;PC_Security;BI_Fin_Role;AuthenticatedUser' )
I have other Row Wise Init blocks for HR_ORG which when fired and used in reports give be stings ('1000','2000',...) which is what I was expecting to see in the filter and query here.
Am I doing something wrong here can someone please point me to right direction please.
Any help is much appreciated.
Thanks,
VidyaS
Edited by: VidyaS on Apr 29, 2013 2:47 PM
This is because the ROLES variable in OBIEE 11g is designed to retrieve the LDAP or DB groups etc.. in form of semicolon delimiters this would be not the same case with other Row Wise init blocks.
Refer to : OBI 11g - LDAP and semicolon-delimited string for Groups [ID 1274964.1]
HTH,
SVS
Similar Messages
-
Hi experts,
We have row wise init block for project1(Connected to db1).
and there are other project2(Connected to DB2) in single rpd.
When db1 is down then we got the error in obiee appication.
Requirement is if db1 is down only project1 should be down not the project2.
is there any suggestion.
Thanks,Thanks for your help !
I created a session variable UNAME
SELECT 'VALUEOF(NQ_SESSION.USER)' FROM DUAL
Then I created the second variable with row wise init block.
SELECT DISTINCT 'Department', Department_name FROM Department A WHERE A.LOGIN_ID= 'VALUEOF(NQ_SESSION.UNAME)'
in second init block i.e. for department i added the init block(Uname) in execute precedence.
Still I am getting the same issue..any help pls?
Thanks. -
Row wise init block has no value defination.
Hi Experts,
I ahve requirement where i need to pick the department of loged in users in dashboard prompt.
So I created the session variable with row wise and written the query:
SELECT DISTINCT 'Department', Department_Name FROM tableA WHERE A.LOGIN_ID= ':USER'
But I get this error in answers:
The session variable, NQ_SESSION.Department, has no value definitionsThanks for your help !
I created a session variable UNAME
SELECT 'VALUEOF(NQ_SESSION.USER)' FROM DUAL
Then I created the second variable with row wise init block.
SELECT DISTINCT 'Department', Department_name FROM Department A WHERE A.LOGIN_ID= 'VALUEOF(NQ_SESSION.UNAME)'
in second init block i.e. for department i added the init block(Uname) in execute precedence.
Still I am getting the same issue..any help pls?
Thanks. -
Hi,
I am trying to implement the security in my application using row wise initialisation block. Could any one help me with below mentioned doubts:
1) Does it effect the performance of the OBIEE server.
2) Cons with row wise initialisation block used for implementing security which uses Oracle customise function in it. this initialisation block is been created for implementing 2 level security.
Thanks
SavitaSavita,
Answers to your questions are as follows:
*1) Does it effect the performance of the OBIEE server.*
No. This is part of the Oracle BI Repository modeling process for Oracle BI 10g.
*2) Cons with row wise initialisation block used for implementing security which uses Oracle customise function in it. this initialisation block is been created for implementing 2 level security.*
There really aren't any cons. To get the security you are seeking row-wise security in Oracle BI 10g is the route you must take. In addition, this process is used widely in Oracle BI 10g for numbers of consecutive users and total users/groups in an LDAP or security group table ranging from hundreds to tens of thousands with nothing but success. So, don't worry about implementing this as your implementation will be sound by configuring row-wise security. -
Hi all,
Previously, we were using OBIEE 11.1.1.5.0 and we were able to assign users to application roles by using the initialization block to assign the ROLES session variables.
1. My USER_SECURITY table in Oracle database:
USER_NAME | USER_ID | ROL
user1 | 1723 | GobalDataRole
user2 | 1739 | GobalDataRole
user3 | 1743 | GobalDataRole
2. The SQL query in my session initialization block:
select USER_NAME, USER_ID, ROL
from USER_SECURITY
where USERNAME = ':USER'
3. The row-wise initialization option is not checked.
4. In the Oracle Enterprise Manager Fusion Middleware Control, we created new application role: GobalDataRole and sync with rpd.
5. The GobalDataRole is used in the RPD to filter the data under permissions --> data filter. GobalDataRole only has access to Country A data.
6. Result: under my account, also in rpd Manage --> Sessions, user variable details
User_name , user_id & Rol variable is working fine as expected,
When we log in as user1, we can see in My Account, user assigned to: BI Consumers; Authenticated Role; GobalDataRole
When we log in as user2, we can see in My Account, user assigned to: BI Consumers; Authenticated Role; GobalDataRole
When we log in as user3, we can see in My Account, user assigned to: BI Consumers; Authenticated Role; GobalDataRole
User1, User2, and User3 are able to see the data correctly according the their data access setup.
Now, we using OBIEE 11.1.1.7.1 and using the same method, but we not able to assign users to application roles by using the initialization block to assign the ROLES session variables anymore.
Result:
User_name & user_id variable is working fine as expected, but the ROl variaible is not capturing the DB value,
When we log in as user1, we can see in My Account, user assigned to: BI Consumers; Authenticated Role
When we log in as user2, we can see in My Account, user assigned to: BI Consumers; Authenticated Role
When we log in as user3, we can see in My Account, user assigned to: BI Consumers; Authenticated Role
User1, User2, and User3 can see all data (which is wrong) because they are not assigned to the correct application role that sets the data restriction/filter.
Has anyone encountered the same issue? Any advice on how to solve this?
Thanks in advance!
Satheeshkumar PThanks user10615659 ,
- Yes the variable ROLES available in OBIEE 11.1.1.7.1
- Tested the init block and variables in offline rpd its working as expected.
- In online rpd, except ROLES and GROUP variable remaining variables working fine.
- Verified log file in both online and offline init block testing - the init block execution is successful.
Thanks -
Query in selecting row wise information
Hello All,
Could you please help me in getting the row wise information for the Financial Reporting Studion Report? I have a report where the row information will be Revenue and Expenses. but the revenue and expenses should only carry for specific cost centers. For example XXXXRevenue should carry revenue for GL Account XXXX.
Iam not able to do this. Please help me.
Thanks.Hi Geoff,
You can use the ROW_NUMBER and CASE Functions to acheive this. Here with , i have give u a small idea with an ex:
Qry :
B.ItemCode,SUM(B.PO1)[PO1],SUM(B.POQty1)[POQty1],SUM(B.PO2)[PO2],SUM(B.POQty2)[POQty2] From
select Itemcode
CASE when Sno=1 Then DocNum End [PO1]
CASE When Sno=1 Then Qty End [POQty1]
CASE when Sno=2 Then DocNum End [PO2]
CASE When Sno=2 Then Qty End [POQty2]
From(
Row_Number() Over (Order By Opor.Docnum) [Sno], Opor.DocNum,POr1.ItemCode,sum(POr1.Quantity)[Qty] from OPOR join Por1 on Opor.DocEntry=por1.DocEntry
ItemCode='20002' group by oPor.DocNum,por1.ItemCode
A where A.Sno<=2)B Group By B.ItemCode
Result :-
ItemCode PO1 POQty1 PO2 POQty2
20002 18 1.000000 19 10.000000
Thanks,
Karthikeyan.P -
Prompt using SQL Results with row-wise session variable comparison
I have a prompt on Department and I only want the departments to show that have been authorized via a session variable for that user. The session variable can return can return multiple values and is set as row-wise. The session variable is returning results and have been used successfully in an application filter.
I'm trying to put the correct SQL statement and this syntax doesn't work:
SELECT "Department"."Department Code"
FROM "UBC Financials - YTD Table"
WHERE "Department"."Department Code" = '@{DEPT_LIMITS}'
Can someone give me an example that does work?
Thanks,Try something like WHERE "Department"."Department Code" = VALUEOF(NQ_SESSION."DEPT_LIMITS")
or else filter on department and then hit on add then Session variable
~ http://cool-bi.com -
Caculate the percentages row wise in Result Row
Hello Friends, I have this issue with the sales report , Where the we caculate the percentages of No of Automotive sold / No of Automotive Manufactured
Now we saw that result row for a fiscal yr period calculate the percentages coloumn wise which is incorrect we want to calculate the percentages in the Result Row Header as row wise.
For Example
FISCAL PER/YEAR No of Auto No of Auto Manuf % percent sold
sold
006.2007 10 10 100
007.2007 20 20 100
008.2007 10 20 50%
009.2007 -- -- ---
Result Row === 40 50 cal on column
Correct result should be 40/50 = Total No Of Auto SOLD/ Total No OF Auto Manuf
Thanks
SoniyaHi Soniya,
You result does not give you correct percentage as the Bex can't. You can do this by adding key figure in data target and write a routine for this key figure to calculate percentage based on the previous two key figures. Now use this newly created key figure in your query designer instead of formula. Then u will get correct one.
Thanks
Kiran -
Accessing Row-Wise Initialization variable in OBIEE Answers 11g
Hi All,
I need to access row-wise initialized session variable in answers fx section, i came to know from following blog
http://carpediemconsulting.wordpress.com/
that i can use VALUELISTOF(NQ_SESSION.ROW-WISE-VAR)) function to get the list of values in answers, but i m getting syntax error in obiee 11.1.1.3
Any work arounds for this. Please help!!
Thanks,
SreekanthYou can't, it's only intended for use in the RPD initblocks, it's mainly used to restrict data acces:
http://www.orastudy.com/oradoc/selfstu/fusion/doc.1111/e16816/biapps_security.htm
regards
John
http://obiee101.blogspot.com/
http://obiee11g.com/ -
Regarding Logical level key and row wise initialization
Hi Gurus,
What is the purpose of row wise initialization in external table authentication and when we have to go for row wise initialization.
Why we have to enable logical level key in hierarchy is this only for getting drill down to the next level if we make two columns as logical level key what will happens. If we want to enable a column as a logical level key what are the character sticks that column should satisfy.
Thanks,1) Row Wise Initialization used to hold multiple values in a variable. Let says SQL gives 4 rows (A,B,C,D) as output. Now I want to hold 4 value in a variable to get this happen we need to go for RowwiseIniziation. If you do not do this at any point in time Variable holds only value A not others. Simply it works as Array.
2) Level keys define the unique elements in each level and provide the context for drill down. You can make two logical columns as logical key but you need to make sure what to be displayed in your hierarchy by selecting DISPLAY. If you make to as separate logical keys and set Display for both you get two columns in the hierarchy
http://gerardnico.com/wiki/dat/obiee/hierarchy_level_based -
Using row-wise multi-value GROUP system session variable in report filter
The title says it all except I am using 10g OBIEE.
What I want to do is filter on the dynamic system session variable GROUP created in a row-wise initialization block.
The GROUP vriable is being set up correctly and it shows the user dynamically put into the correct groups in Answers.
(Using the admin tool and looking at the user session, only the initial authentication block variables show up.)
But if I want to filter using the value of GROUP it doesn't work.
The obvious way is to choose the filter icon, then choose Add -> Variable -> Session, enter GROUP, and then display results.
It comes back with no rows.
Any idea how to do this? I've tried lots of things but none of them work either producing no rows or an error.
This is the kind of Answers SQL this report is resulting in, which makes sense to me, but produces no rows.
SELECT "Package Virtual Group (Dim)"."Package Virtual Group" saw_0, "Contact (Fact)"."Contacts All Count" saw_1 FROM "Case/Transaction/ABC" WHERE "Package Virtual Group (Dim)"."Package Virtual Group" = VALUEOF(NQ_SESSION."GROUP") ORDER BY saw_0866038 wrote:
Errors come from trying things that don't work.
For example, instead of =, using IN VALUEOF(NQ_SESSION.GROUP) or @{session.GROUP} or lots of other things.
The question is this:
how can I filter a column in Answers using the GROUP session variable which had been initialized in a row-wise initialization block?
I can find no way to do it. Mostly it returns no rows.Hi,
we had a similar requirement, where we have an external name that has project number values. We used row wise initialization to capture all the projects that a user belongs to. Then, we applied the filters at the RPD level, instead of doing it at the report level. From you requirement I see that you are trying to filter the groups based on user login. When a user logs in, he will see the information about the groups that he only belongs to. Correct me if I am wrong here.
Assuming I am right about your requirement, providing the filter that you need apply in RPD.
On all the fact tables are joined to the Package Virtual Group dimension, apply the below filter.
case when 1=1 then (Dim)"."Package Virtual Group" END = VALUEOF(NQ_SESSION."GROUP");
The reason for use of case statement here is, it converts the logical sql to IN Clause, helping us acheive the exact query that we would want.
Please Award points if this helps.
Thanks,
-Amith. -
Use row wise session variable in IN CLAUSE
Hi,
I' have a question. Suppose I have a row wise session variable named Users setted in an initialization block with following SQL query:
SELECT 'NAMES', names from NAMES_TABLE where GROUP='Administrators'
Suppose it returns value list 'JOHN, MARIE'.
Can I set another row wise session variable named COUNTRY in initialization block with following SQL query:
SELECT 'COUNTRY', country from COUNTRY_TABLE where names IN (VALUEOF(NQ_SESSION.Users))?
so that COUNTRY variable returns for example list 'CANADA','OHIO'?
or OBIEE returns error?
If it's not possible can you give me a solution?
ThanksHi,
I've resolved, but now I have another problem.
I have a row-wise session variable called COMPANY_FILTER
In Dashboard Prompt "Show" Section I have following query:
SELECT Country."Company Description" from Prototype where Country."ID" = VALUEOF(NQ_SESSION.COMPANY_FILTER).
When COMPANY_FILTER has at least one value it works fine. But COMPANY_FILTER can be even empty.
In the latter case query fails.
Now, when COMPANY_FILTER is null I must execute following query:
SELECT Country."Company Description" from Prototype
otherwise when it is filled i must execute following query:
SELECT Country."Company Description" from Prototype where Country."ID" = VALUEOF(NQ_SESSION.COMPANY_FILTER).
I have tried with CASE WHEN, but i don't know the exact syntax. Can you suggest me a correct query for my goals?
Thanks -
Row wise initialized variable in WHERE clause of other initialization block
Hi,
i've following problem.
I've created a initialization block (called A) that initializes a row wise session variable.
Ex: SELECT X,Y from Z
Select statement returns 3 rows (it's a row wise initialization block!!!)
Then i want to create another initialization block that uses in its WHERE cluase the previous row wise variable
Ex: SELECT W,T from R where F = VALUEOF(NQ_SESSION.A)
I have following error: DB2-UDB: SQL10104 Token ; was not valid, valid tokens: ....
I believe that this error is caused by the fact that VALUEOF(NQ_SESSION.A) is translated by OBIEE in IN (a list of values separated by ; and not by ,).
Can you suggest me a solution?
Thanks
Giancarlo
P.S. I'm using OBIEE 10GYou could avoid this by rewriting it as
select w, t
from r
where f in (select y from z where x = 'A')
Regards,
Robert -
Hi Gurus,
What is the use of row wise initialization when we have go for this can i have one scenario for better under standing.
Thanks,Check these
http://gerardnico.com/wiki/dat/obiee/row-wise
http://docs.oracle.com/cd/E12103_01/books/admintool/admintool_Variables6.html
http://obiee10grevisited.blogspot.com/2012/03/row-wise-initialization.html -
Row-Wise Session Variable Initialization Block (Max Rows)
Hi, we have a problem with Row-Wise Session Variable.
We'll try to implemented the security with a External Query and a Row-Wise Initialization Block. But when we'll try to open the Web Obiee and the rows of result of the query is more than 3000 rows, the browser is broken. The access is very slowly.
When the result of Query to Row-Wise Variable is more than 3000 rows and we'll try to open the Web Obiee, we have to close NQServer.EXE process of Obiee Server.
Is there a best practise or a limit rows in the Row-Wise Initialization Block?.
Thanks.You're Right, the people can't be in 3000 groups.
Is possible I don't explain my problem correctly.
We use this Row-Wise Variable for implement Data Level Security. .
For Example :
I have a fact table with Offices and Office's Sales.
And each Obiee User can see many Offices according to their level of security.
I want filter the fact table using a external SQL table implemented in a Session Row-Wise Variable and a User can have X Offices (In the worst case, 3000 Offices).
Maybe you are looking for
-
How to make the Infotype as mandatory
Hi All, I need to make the Infotype as mandatory. E.g., In PA40, the user should not skip the screen without entering the data in the infotype. How can i make it. Thanks Yogesh
-
Hi, I upgraded my iPad to version 5.0, I had a message on my Setting to upgrade the software to version 5.0.1, I select install and during installation my iPad2 star rebooting and now doing it non stop. I have no time to restore or do anything. My i
-
hello, I forgot my security answers in app store and they sent E-mail to reset question, but i didn't receive any E-mail form them. Please can anybody help me to reset my security answers ..? Thank you..
-
Why is 0CO_PC_ACT_02 failing on duplicate records?
I'm trying to run 0CO_PC_ACT_02 via RSA3 and i keep getting an error in function module DYNAMIC_PERIOD_CLOSING saying there is a duplcate key. Does anyone know how this module works and where I can see the duplcate record?
-
I uninstalled iTunes and i am now trying to reinstall it one my computer and everytime it gets to the very end of the download it says installation has been interrupted try again later, it has been doing this for a while now i would like some help or