Showing posts with label Variables. Show all posts
Showing posts with label Variables. Show all posts

Monday, August 13, 2012

How to check Session Variable's value in Administration Tool ?

We can check the session related information in Administration Tool using an option called, Session Manager.
Manage--> Session.
In Session Manager, we can find two section,
 the first section shows all the users who have logged in, 
the second section has two tabs, Requests and Variables.
Requests :  The Requests tab shows all the requests issued by the user(the user which is selected in the first section of the Session Manager.)


Variables : The Variables tab shows all the variables and their values assigned for that user session.


Friday, June 8, 2012

Manipulating Session Variables from Answers

As my knowledge, session variables can be manipulated in Answers or dashboard of Presentation services in two possible ways.
  • Request Variable
  • NQSSetSessionValue 

 Request Variable

A request variable is a variable that is used to temporarily override the value of a session variable. The request variables are defined in the Presentation Services using either :

  • Dashboard prompts or
  • SET VARIABLE statement.
A variable whose name should not match that of a repository variable or a security system session variable(USER, GROUP etc..).

Using request variables we can change the value of session variables for any request or for all requests in any dashboard. But we can not change the value permanently through out the session. If we want to change the value of session variable for the entire session, then we can use the ODBC function NQSSetSessionValue. To know how to use request variable in presentation services, Click Here >>.

NQSSetSessionValue 

NQSSetSessionValue is an ODBC function, can be used to change the value of session variable for the whole session.

The syntax for this function is : 
                                               call NQSSetSessionValue('DataType VariableName=Value;')

We can call this function from from Issue SQL Directly section of Presentaion Services. To know how to use request variable in presentation services, Cick Here >>.

Error : [nQSError: 13015] You do not have the permission to set the value of the variable



 View Display Error

Error getting drill information: SET VARIABLE LOB='APD' SELECT item.item saw_0, valueof(nq_session.LOB) saw_1 FROM OLEM
  Error Details
Error Codes: YQCO4T56:OPR4ONWY:U9IM8TAC:OI2DL65P
Odbc driver returned an error (SQLExecDirectW).
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 13015] You do not have the permission to set the value of the variable 'LOB'. (HY000)
SQL Issued: {call NQSGetLevelDrillability('SET VARIABLE LOB=''APD'' SELECT item.item saw_0, valueof(nq_session.LOB) saw_1 FROM OLEM')}




 This is the common error, the developers get, when he try to change the value of session variable using request variable in request prefix field. ( refer how to change the value of session variable using Request Variable ).

Solution :
 Go to properties of session variable all check the option "Enable everyone to set value"

Follow the below steps :

1. Open Administration Tool. Go to Manager > Variables.

2. Select System or Non-System variable (depends on type of your variable) under the Session  from left pane. Then the corresponding variables will be listed on right pane.


3. Right click on the variable(for which your getting error in presentation service when you tried to change its value) and select properties.

4. check the option "Enable everyone to set value" (by default this option is unchecked) and click OK.



Now, check the request in presentation service. Log out from that session and again login to presentation services and the same report. If you get the same error again, please let me know by your comments.

Thursday, June 7, 2012

NQSSetSessionValue - ODBC function

NQSSetSessionValue() is an ODBC function, can be used to change the value of session variable for the entire    session (ie. not only for a particular request or a dashboard).

The syntax for this function is : 
                                               call NQSSetSessionValue('DataType VariableName=Value;')

We can call this function from from Issue SQL Directly section of Presentaion Services.


Example :
Assume that, a user logon to the system, he has the value 2 for the session variable LOGLEVEL. If the user decides to increase the value for LOGLEVEL for the entire session. Then he can use the ODBC function to change the value of  LOGLEVEL.


Request Varaiable in OBIEE

A request variable is a variable that is used to temporarily override the value of a session variable. The request variables can be defined in two places of Presentation Services, as my knowledge.
  • Dashboard prompts or
  • SET VARIABLE statement.
A variable whose name should not match that of a repository variable or a security system session variable(USER, GROUP etc..).
  

Request Variable in a Request : 

 We can define Request Variables in any request to override the session variable, using the SET VARIABLE code. When we define a request variable for any request, then the scope and availability of that variable is within the same request. Outside of this request, the session variable will be having the actual value, not the overridden value.

 Example :  Assume that there is a session variable called LOB  and someone logged into the presentation services, for this session the value of LOB is 'APD'. Then he can change this value for any particular request using the following steps :

Before request variable, the session variable LOB has the value 'APD'.

To change the value of LOB to the value 'Liability', Go to Advanced tab of Answers.



Go down and find the PREFIX clause, and write the following code in that.
 Then Click on Result tab and check the result. Now you will find the changed value Liability.
The request variable overrides the value of session variable only for this request, the session variable will have the actual value 'APD' outside of this request.

Request Variable in Dashboard Prompt  

We can use Request variable in Dashboard prompts to change the value of session variable. The scope of this variable would be Page of Dashboard, depends on the selection.  

Example : Lets use the same session variable LOB (which we used for request) for this example. 

The below request have used the session variable LOB and value of this variable for the current session is 'APD'.

In dashboard prompt,  take the required logical column, select Request Variable from Set Variable drop-down and write the request variable name, LOB is in our case. 

Put the same report and dashboard prompt into the dashboard.


Now select any value from prompt and click on Go.


In my case, I have selected the value 'Property'. The request variable, changed the default value of session variable to the selected value( from prompt).

If we have more than one request in the dashboard, the same will be affected for all the requests in that  dashboard. Outside of this dashboard, the value of the session variable will be the actual value only.

Note : Using a request variable does not change the actual value of a session variable – neither temporarily nor permanently.  It simply appears to change the value for certain purposes during the execution of a request.

To know more about Request Variable, like how it works, what actually it is, Please refer the following link.
http://everythingoracle.com/obieerv.htm

Thank you,

Wednesday, June 6, 2012

Variables in the Oracle BI Repository


There are two classes of variables:
1. Repository variables (Server Variables): holds the same value across all sessions
2. Session variables: holds a value specific to each user session.

Caution:
Values in repository and session variables are not secure, because object permissions do not apply to variables. Anybody who knows or can guess the name of the variable can use it in an expression in Answers or in a Logical SQL query. Because of this, do not put sensitive data like passwords in session or repository variables.

Repository variables: 
A repository variable has a single value at any point in time, I.e., holds the same value across all sessions. Repository variables can be used instead of literals or constants.

There are two types of repository variables:
1.  Static Repository Variables
2. Dynamic Repository Variables.

Static  Repository Variables: 
Static repository variables holds constant values for all sessions in the server. This value persists, and does not change until an administrator decides to change it.

Assume that, you are using a value 'California' (head office of client) very often in formula of reports or in Expression Builder of BMM layer in repository. Then instead of using direct value, we can assign this constant value to a static variable and use this variable wherever required. That will be more understandable to users than direct values.

Lets create a static repository variable called HEAD_OFFICE.
  1. In the Administration Tool, select Manage > Variables.

Select Static from left pane, then right click on the right pane of the Variables and select New Static variable.

In the Variable dialog, type a name(HEAD_OFFICE in our case) for the variable.

Names for all variables should be unique. The names of system session variables are reserved and cannot be used for other types of variables. 

To add a Default initializer value, type the value in the Default initializer box, or click the Expression Builder button to use Expression Builder.
If you initialize a variable using a character string, enclose the string in single quotes ( ' ). Static repository variables must have default initializers that are constant values.


Type the value  'California' in the Default initializer box for our case.

3.      Click OK.
Now, to see all the static variables in the server, select Static under Variables in Variable manager, then you can see all the static variables in right pane.

Dynamic  Repository Variables: 
These variables can have values that vary over time . 

When defining a dynamic repository variable, you create an initialization block. You also set up a schedule that the Oracle BI Server will follow to execute the query and periodically refresh the value of the variable.

When the value of a dynamic repository variable changes, all cache entries associated with a business model that reference the value of that variable are purged automatically.

Dynamic repository variables are useful for defining the content of logical table sources. For example, we need to refer count of employee in some places, and then we can create a dynamic variable called COUNT_OF_EMP and schedule it to every 1 day (because a new employee may join on any day).

To create a repository variable:

Lets create a Dynamic variable called  COUNT_OF_EMP, we have table called Emp. The query to get count of employees is : select count( distinct empkey) from EMP.

1. In the Administration Tool, select Manage, then select Variables.
2. In the Variable Manager dialog, select dynamic from left pane and right click on right pane, then  select New Dynamic Variable.
3. In the Variable dialog, type a name for the variable.
Names for all variables should be unique. The names of system session variables are reserved and cannot be used for other types of variables.
4.  To create a new initialization block, click New.

5.      In Repository Init Block dialogue, set the initialization block name, schedule the refresh interval(in my case I have given 1 hour as refresh interval. So the BI server will send the query to database and get the data for every one hour). 

Notice that in our case, I have scheduled the variable refresh interval  to one hour. So the value of this variable will be refreshed for every hour by the BI Server.






6.      Next, click on the Edit Data Source, write the SQL Query, select the Connection Pool and click on OK.
7.      Next click on Edit Data Target, and define the Dynamic Variables and click on OK.




8.   Click OK.




Session Variables :
Session variables are similar to dynamic repository variables in that they obtain their values from initialization blocks. Unlike dynamic repository variables, however, the initialization of session variables is not scheduled. When a user begins a session, the Oracle BI Server creates new instances of session variables and initializes them.

Unlike a repository variable, there are as many instances of a session variable as there are active sessions on the Oracle BI Server. Each instance of a session variable could be initialized to a different value.

Session variables are primarily used when authenticating users against external sources such as database tables or LDAP servers. If a user is authenticated successfully, session variables can be used to set filters and permissions for that session.

Session Variables can be further classified as :
System Session Variables
Nonsystem Session Variables
System Session Variables
System session variables are session variables that the Oracle BI Server and Oracle BI Presentation Services use for specific purposes. System session variables have reserved names that cannot be used for other kinds of variables (such as static or dynamic repository variables and nonsystem session variables).

When you use these variables for Oracle BI Presentation Services, preface their names with NQ_SESSION. For example, to filter a column on the value of the variable LOGLEVEL, set the filter to the variable NQ_SESSION.LOGLEVEL.


Variable
Description
USER
Holds the value the user enters as his or her logon name. This variable is typically populated from the LDAP profile of the user.
PROXY
Holds the name of the proxy user. A proxy user is a user that has been authorized to act for another user.
See Oracle Fusion Middleware System Administrator's Guide for Oracle Business Intelligence Enterprise Edition for more information about the PROXY system session variable.
GROUP
Contains the groups to which the user belongs. Exists only for compatibility with previous releases. Legacy groups are mapped to  application roles automatically.
WEBGROUPS
Specifies the Catalog groups (Presentation Services groups) to which the user belongs, if any. Note that the recommended practice is to use application roles rather than Catalog groups.
USERGUID
Contains the global unique identifier (GUID) of the user, typically populated from the LDAP profile of the user.
ROLES
Contains the application roles to which the user belongs.
ROLEGUIDS
Contains the global unique identifiers (GUIDs) for the application roles to which the user belongs. GUIDs for application roles are the same as the application role names.
PERMISSIONS
Contains the permissions held by the user, such as oracle.bi.server.impersonateUser or oracle.bi.server.manageRepository.
DISPLAYNAME
Used for Oracle BI Presentation Services. It contains the name that  is displayed to the user in the greeting in the Oracle BI Presentation  Services user interface. It is also saved as the author field for catalog objects. This variable is typically populated from the LDAP  profile of the user.
PORTALPATH
Used for Oracle BI Presentation Services. It identifies the default dashboard the user sees when logging in (the user can override this  preference after logged on).
LOGLEVEL
The value of LOGLEVEL (a number between 0 and 5) determines the logging level that the Oracle BI Server uses for user queries.
This system session variable overrides a variable defined in the Users object in the Administration Tool. If the administrator user (defined upon install) has a Logging level defined as 4 and the session variable LOGLEVEL defined in the repository has a value of 0 (zero), the value of 0 applies.
REQUESTKEY
Used for Oracle BI Presentation Services. Any users with the same  nonblank request key share the same Oracle BI Presentation Services cache entries. This tells Oracle BI Presentation Services that these users have identical content filters and security in the Oracle BI Server. Sharing Oracle BI Presentation Services cache entries is a way to minimize unnecessary communication with the Oracle BI Server.
SKIN
Determines certain elements of the look and feel of the Oracle BI Presentation Services user interface. The user can alter some elements of the user interface by picking a style when logged on to Oracle BI Presentation Services. The SKIN variable points to an Oracle BI Presentation Services folder that contains the nonalterable elements (for example, figures such as GIF files). Such directories begin with sk_. For example, if a folder were called sk_companyx, the SKIN variable would be set to companyx.
DESCRIPTION
Contains a description of the user, typically populated from the LDAP profile of the user.
USERLOCALE
Contains the locale of the user, typically populated from the LDAP profile of the user.
DISABLE_CACHE_HIT
Used to enable or disable Oracle BI Server result cache hits. This variable has a possible value of 0 or 1.
DISABLE_CACHE_SEED
Used to enable or disable Oracle BI Server result cache seeding. This variable has a possible value of 0 or 1.
DISABLE_SUBREQUEST_CACHE
Used to enable or disable Oracle BI Server subrequest cache hits and seeding. This variable has a possible value of 0 or 1.
SELECT_PHYSICAL
Identifies the query as a SELECT_PHYSICAL query. See "Syntax and Usage Notes for SELECT_PHYSICAL" for more information.
DISABLE_PLAN_CACHE_HIT
Used to enable or disable Oracle BI Server plan cache hits. This variable has a possible value of 0 or 1.
DISABLE_PLAN_CACHE_SEED
Used to enable or disable Oracle BI Server plan cache seeding. This variable has a possible value of 0 or 1.
TIMEZONE
Contains the time zone of the user, typically populated from the LDAP profile of the user.



Nonsystem Session Variables
You use the same procedure to define nonsystem session variables as for system session variables.

A common use for nonsystem session variables is setting user filters. For example, you could define a nonsystem variable called SalesRegion that would be initialized to the name of the sales region of the user.

You could then set a security filter for all members of a group that would allow them to view only data pertinent to their region.

When you use these variables for Oracle BI Presentation Services, preface their names with NQ_SESSION. For example, to filter a column on the value of the variable SalesRegion, set the filter to the variable NQ_SESSION.SalesRegion.

Creating Session Variables
  1. In the Administration Tool, select Manage, then select Variables.
  2. In the Variable Manager dialog, select Action > New > Session > Variable.
  3. In the Session Variable dialog, type a variable name.
    Names for all variables should be unique. The names of system session variables are reserved and cannot be used for other types of variables.
  4. For session variables, you can select the following options:
    • Enable any user to set the value. Select this option to set session variables after the initialization block has populated the value (at user login) by calling the ODBC store procedure NQSSetSessionValue() or by using Request variable. For example, this option lets non-administrators to set this variable for sampling.
  5. Use the Initialization Block list to select an initialization block that will be used to refresh the value on a continuing basis.
  6. To add a Default Initializer value, type the value in the Default Initializer box, or click the Expression Builder button to use Expression Builder.
  7. Click OK.
Syntax for using these variables :
Repository variables can be used in two ways : 
1. VALUEOF(variable name) 
2. biServer.variables['variable name']



Session variables can be used in two ways : 
1. VALUEOF(NQ_SESSION.variable name) 
2. biServer.variables['variable name']

All Types Of Variables in OBIEE


Mainly, There are two types of variables in OBIEE.
1. Presentation  Variables

Presentation  Variable  is the only variable offer by the presentation service, used to pass value between dashboard prompt and to set some filter in Presentation Services.You can set it with the help of the dashboard prompt which will then take the data type of the presentation column.The scope of a presentation variable depends of the prompt scope. The prompt scope may be dashboard or page. If we select score of prompt as dashboard then the variable will be available in all pages of dashboard. Whereas if we select scope as page, then the variable will be available in the same page.

Server-Side variables are create and initialize in Repository. There are two types in this :
1. Repository variables
2. Session Variables.

A repository variable has a single value at any point in time, I.e., holds the same value across all sessions. Repository variables can be used instead of literals or constants.

There are two types of repository variables:
1.  Static  Repository Variables
2. Dynamic Repository Variables.

A session variable is a variable that is initialized at login time for each user. When a user begins a session, the Oracle BI Server creates a new instance of a session variable and initializes it.
There are as many instances of a session variable as there are active sessions on the Oracle BI Server. Each instance of a session variable could be initialized to a different value.
There are two types of session variables:
1. System session variable
2. Non-System session variable.

To read more about these variables Click Here.

A request variable is a variable that is used to temporarily override the value of a session variable.It is defined within the Presentation Services. A request variable name should not match that of a repository variable or a security system session variable(we cant override values of variables like USER, GROUP, LOGLEVEL etc.).  To read more about request variables Click Here.

Saturday, April 28, 2012

Syntax for Repository Variables in different places

We can use Repository variables in Title view, Narrative view, Fx of Answers, Text box in Dashboard and SQL statements.

We can  refer Repository variables in two ways :
1. VALUEOF(VARIABLE_NAME)
2. @{biServer.variables['VARIABLE_NAME']}

VALUEOF(VARIABLE_NAME) - We can use this syntax in fx of Answers, SQL statements in Administration Tool and Direct Database Requests.


We can not use this syntax in any other places. If you this syntax in title view or Narrative view you will get abnormal results.

@{biServer.variables['VARIABLE_NAME']} - We can use this syntax in all places (fx of report, title view, narrative view, text box of dashboard and in SQL statements).

In fx of Answers : 


In Title View :

In Narrative View :



In Text Box of Dashboard :


Tuesday, April 10, 2012

Using Presentation Variable in OBIEE

To use the Presentation variables in Title,Subtitle,Narratives,fx of any reports the syntax  is - @{variable_name}.

Presentation Variable in Title view : 

 Presentation Variable in Narrative view : 












But we should consider two things while using the variable in fx of request.











The Presentation Server replaces the variable name with the value associated with that variable (value selected in prompt).

So, when the variable is returning character type value, then the variable name must be enclosed in single quote. When the variable is returning numeric type value, then the variable name must not be enclosed in single quote.

When the variable is returning CHAR type value -

When the variable is returning Numeric type value - 

  Make sure that when a presentation variable is returning char type value, we should enclose it in single quote, otherwise the presentation services treats its value as logical  column name. If you have any logical column with that name then there would no issue. Otherwise you will get an error like -  Unresolved column.

Monday, April 9, 2012

Multiple values for presentation variable.

In OBIEE 10g, Presentation Variables can hold only one value even if we select more than one value from the Multi Box in Dashboard Prompts.

But11 G supports multiple values for presentation variable. That is one can send multiple values through Presentation variable in dashboard prompt. For more info go through this link - http://www.varanasisaichand.com/2011/07/multiple-values-in-presentation.html