Row Wise Intitialisation block

anybody tell me in which stiuations we use row wise initialisation block.
please explain elaborately?
Thanks in Advance.

User,
To hold multiple values in a variable we normally use Row-wise Initialization blocks
Refer : http://108obiee.blogspot.com/2009/03/external-table-authentication-and-row.html
PS : Search in Google to find more results
Thanks,
Saichand.v

Similar Messages

  • 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.

  • 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.

  • 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 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

  • 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).

  • 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.

  • Handling Null Row wise initialization

    Hi,
    I am creating row wise initialization block to restrict the number of records returned by a Answers.
    I am populating a session variable called, REPS_LIST. When I put the condition,
    Fact.REP_ID = VALUEOF(NQ_SESSION."REPS_LIST") the group filter works fine.
    I want to handle a situation where REPS_LIST is NULL.In that case,I would to get all the rows from my fact. For this, I put the filter like
    Fact.REP_ID = IFNULL( VALUEOF(NQ_SESSION."REPS_LIST"), "Fact".REP_ID)
    However when i run the Answers report, it says no value definition for REPS_LIST. How can I handle the null condition here?
    Thanks,
    Vivek.

    John,
    It appears that the row-wise session variables can be used only with the equality(=) sign. We can't put them in any other function in that the server convert these variables into comma separated string and replaces the = by IN operator. So if I had following filter
    Fact.REP_ID = VALUEOF(NQ_SESSION."REPS_LIST")
    then it actually gets translated into something like
    Fact.REP_ID IN (1001, 1002, 1003....)
    As you suggested, I played with the SQL than going behind the above syntax and was able to achieve what I wanted.
    Thanks,
    Vivek.

  • Row wise Initialization - Huge LOV

    We use External table for Authentication & uses row wise Initialization. It is working perfectly fine, but the issue is the list of values (output) from row wise initialization is pretty large (the output SQL will be at least 30 pages). This is alarming the management and mainly the DBA's and atleast once in a week we are experiencing issues with these SQL's. And in near future, the SQL will be extending drastically as the company has acquired another 2 companies and once the integration is completed, the LOV's from row wise initialization will easily go upto 90 to 100 pages. Let me explain you what I did... We have around 10 Init blocks used for Authentication, but I am mainly concerned about 2 (cf_visibility & sc_visibility) as these are used in Security/Group/Permissions/Report Filters. Each report will for sure have these filters attached. Here cf_visibility Init SQL is (SELECT DISTINCT 'cf_list', CHILD_COMPANY_ID FROM COMPANY_VISIBILITY CV, CLIENT_FACILITY CF WHERE CV.ANCESTOR_COMPANY_ID=(SELECT SUBSTR(':USER', 0, (INSTR(':USER', '.')) - 1) FROM DUAL) AND CV.CHILD_COMPANY_ID=CF.CLIENT_FACILITY_ID AND CV.DW_DELETE_DATE IS NULL UNION SELECT DISTINCT 'cf_list', 0 FROM DUAL) and
    sc_visibility Init SQL is (SELECT DISTINCT 'sc_list', CHILD_COMPANY_ID FROM COMPANY_VISIBILITY CV,SERVICE_CENTER SC WHERE CV.ANCESTOR_COMPANY_ID= (SELECT SUBSTR(':USER', 0, (INSTR(':USER', '.')) - 1) FROM DUAL) AND CV.CHILD_COMPANY_ID=SC.SERVICE_CENTER_ID AND CV.DW_DELETE_DATE IS NULL
    UNION SELECT DISTINCT 'sc_list', 0 FROM DUAL)
    and both are row wise initialization blocks. The filter used for all the Groups is [(DEP.Jobs."Client Facility ID" =  VALUEOF(NQ_SESSION."cf_list")) AND (DEP.Jobs."Service Center ID" =  VALUEOF(NQ_SESSION."sc_list"))]. This output LOV for this filter is huge as I said earlier.
    My main goal here is to reduce the size of the SQL to 1 page, I am planning to do that by replacing the LOV list by SQL (Kind of sub query). I started experimenting with only cf_visibility for now. I replaced the existing SQL with (select 'cf_list',
    'SELECT DISTINCT CHILD_COMPANY_ID FROM COMPANY_VISIBILITY CV, CLIENT_FACILITY CF WHERE CV.ANCESTOR_COMPANY_ID=(SELECT SUBSTR('':USER'', 0, (INSTR('':USER'', ''.'')) - 1) FROM DUAL) AND CV.CHILD_COMPANY_ID=CF.CLIENT_FACILITY_ID AND CV.DW_DELETE_DATE IS NULL UNION SELECT DISTINCT 0 FROM DUAL'
    from dual)
    this returns only 1 row, with 1column as cf_list and the next column with the ('SELECT DISTINCT CHILD_COMPANY_ID FROM COMPANY_VISIBILITY CV, CLIENT_FACILITY CF WHERE CV.ANCESTOR_COMPANY_ID=(SELECT SUBSTR('':USER'', 0, (INSTR('':USER'', ''.'')) - 1) FROM DUAL) AND CV.CHILD_COMPANY_ID=CF.CLIENT_FACILITY_ID AND CV.DW_DELETE_DATE IS NULL UNION SELECT DISTINCT 0 FROM DUAL') Note: USER will be replaced with actual User Name.
    But when I run a report in Answers, it throws me an error [nQSError: 17001] Oracle Error code: 1722, message: ORA-01722: invalid number at OCI call OCIStmtExecute. I understand the error as it is clearly mentioned, but my question is "Is there any way not to get that huge list in the SQL"
    Let me show you the SQL generated along with the error. As this is a Report filter I am only attaching the where clause of the Query. (where ( T38857.CLIENT_FACILITY_ID in ('SELECT DISTINCT ''cf_list'', CHILD_COMPANY_ID FROM COMPANY_VISIBILITY CV, CLIENT_FACILITY CF WHERE CV.ANCESTOR_COMPANY_ID=(SELECT SUBSTR(''5700.abcde'', 0, (INSTR(''5700.abcde'', ''.'')) - 1) FROM DUAL) AND CV.CHILD_COMPANY_ID=CF.CLIENT_FACILITY_ID AND CV.DW_DELETE_DATE IS NULL UNION SELECT DISTINCT ''cf_list'', 0 FROM DUAL') ).
    So I also thought if I use REPLACE function and replace 'Single Quote' before and after the SQL statement with 'Space', it may work. So I edited one of the Group's report filter ((DEP.Jobs."Client Facility ID" = Replace('VALUEOF(NQ_SESSION."cf_list")', ''', ' ') but it is throwing an error in the expression builder itself.
    Now I ran out of ideas and seeking any help/guidance from you folks.
    I know this is a very lengthy post as I tried to explain the situation as clearly as possible. I hope someone can assist me in resolving this. Thanks for your Time...
    -Dinee

    can't you make a custom table in the DWH? or use a VPD? Maybe a parameterised database view? What I mean is try to push your logic to the database.
    regards
    John
    http://obiee101.blogspot.com

  • 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

  • Update report row wise using row buttons and success message

    Hi Jari,
    Thanks for your reply but i wan't success message in success message region of page and not as popup or alert message.
    for report it is classic report but two columns are text field.
    Thanks
    Manish
    Hi,
    On Demand process you can use HTP.P to output success message after you code.
    Create also exception handler that output error using same HTP.P.
    When you call Ajax in JavaScript
    var ajaxResult=ajaxRequest.get();
    Result you output are in variable ajaxResult.
    You can use e.g. alert
    alert(ajaxResult);
    Refresh report depend lot of what report you have.
    There is lot of posts relating interactive report and classic in this forum.
    It might be good to create sample what you already have done to apex.oracle.com.
    Also creating new post might be good idea as this is answered.
    Regards,
    Jari

    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.

  • Row-Wise GROUP init block isn't creating the variable

    Hi,
    I have an Init Block to set the GROUP variable using row-wise initialization. When I log into Answers with a user, and then check the session variables from Admin Tool, I don't see the GROUP variable anywhere. It seems like the init block is not creating it.
    I have execution precendence set up the way it should be. I have the groups created in both RPD and Presentation Services. Below is my simple query to try to get it to work:
    SELECT 'GROUP', 'OFFICER' FROM DUAL
    UNION ALL
    SELECT 'GROUP', 'SUPERVISOR' FROM DUAL
    Any ideas?
    Thanks
    Edited by: oroborus on Mar 24, 2010 1:25 PM

    Yes I saw the query in the log, it was successful. I added a simple request to a dashboard to display the value of GROUP, and it seems to be working correctly from there. Do the row-wise variables not show up in Admin tool session monitor?

  • Multiple Row-wise session Variable in One Init Block

    Hi All,
    Can we create Multiple Row-wise session Variable in the same Init Block ?
    I need 10 session varibales with row-wise initialization in the same block otherwise i will have to create 10 initialization block .
    Any help is appreciated.
    Thanks,
    Ally

    Hi Ally,
    I'm not sure if this will work but have you tried a UNION ALL statement?
    ie.
    SELECT 'GROUP, group_id
    FROM groups
    UNION ALL
    SELECT 'DEPT',dept_id
    FROM depts
    etc....

  • Use Session Variable with row-wise initialization

    Hello,
    I use an initialization block in order to load some translations in my repository (version is 11.1.1.6.BP1) :
    SQL :
    SELECT CODE_KEY, STRING_VALUE FROM "TABLES" WHERE  LANGUAGE_KEY= 'VALUEOF(NQ_SESSION.USERLOCALE)'
    Values :
    CN_INCOMING, Incoming, en
    CN_OUTGOING, Outgoing, en
    CN_INCOMING, Réception, fr
    CN_OUTGOING, Emission, fr
    etc ...
    I checked the row-wise intialization.
    The query is correct and returns the right values (I check in the log file ..).
    So far, So good.
    But when I want to use session variables in a column expression (in repository) like  :
    CASE WHEN "column"="xx" THEN VALUEOF(NQ_SESSION."CN_INCOMING")  ELSE VALUEOF(NQ_SESSION."CN_OUTGOING") END
    I got the error: [nQSError: 23006] The session variable, NQ_SESSION.CN_OUTGOING, has no value definition.
    If I used the same formula directly in Answers it's working correctly.
    Do I have to necessarily do this in answers or is there a way to do this in the repository.
    Thanks in advance
    Regards
    Benjamin

    Yes I already tested this point, when I don't use a row wise initialization it's working, but I don't want to create one variable for each translations that I need to use in column formula if you know what I mean.
    I don't understand why we can't use this kind of variable in this context ..but if I have to create the column in my analysis, I will do that, but it's not really user friendly
    Anyway thanks for your time.

  • 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

Maybe you are looking for