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

  • Row wise init block problem

    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 definitions

    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.

  • Does Row Wise Initialised block effects the performance of OBIEE 10.1.3.2.0

    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
    Savita

    Savita,
    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.

  • Row Level Security - Data filter - Roles Variable Not working in OBIEE 11.1.1.7.1

    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 P

    Thanks 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
    Soniya

    Hi 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,
    Sreekanth

    You 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_0

    866038 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?
    Thanks

    Hi,
    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 10G

    You could avoid this by rewriting it as
    select w, t
    from r
    where f in (select y from z where x = 'A')
    Regards,
    Robert

  • Abt Row - Wise initialization

    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