<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle Business Intelligence Blog</title>
	<atom:link href="http://oracle-bi.siebelunleashed.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://oracle-bi.siebelunleashed.com</link>
	<description></description>
	<lastBuildDate>Mon, 19 Mar 2012 14:26:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>OBIEE Security &#8211; I</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/obiee-security-i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=obiee-security-i</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/obiee-security-i/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 14:26:49 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[BI Basics]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=184</guid>
		<description><![CDATA[After receiving multiple requests to write on OBIEE security, here I am with the details on the topic. It is a vast topic and I will try to cover it to the best of my knowledge. Why do we need security in OBIEE? This is a rather very basic question but to them who have [...]]]></description>
			<content:encoded><![CDATA[<p>After receiving multiple requests to write on OBIEE security, here I am with the details on the topic. It is a vast topic and I will try to cover it to the best of my knowledge.</p>
<p><strong><em>Why do we need security in OBIEE?</em></strong></p>
<p>This is a rather very basic question but to them who have just started working on OBIEE, this is very  important to understand. OBIEE is a reporting tool wherein multiple users belonging to multiple groups create multiple reports and dashboards. Reports created by a particular group of users should be visible to that particular group only or some specific data should be visible to only a specific set of people. So, to achieve this we need to have some sort of security in place using which we can protect reports belonging to a group of users from the users of other groups.</p>
<p><em><strong>Users and groups in OBIEE?</strong></em></p>
<p>End users who make use of OBIEE for reporting need to be defined somewhere. These users can be defined either in the OBIEE RPD, External database tables, LDAP Servers or in Active directories with their respective passwords.</p>
<p>The users belonging to same business unit can be clubbed and Groups can be created for them. Its not always necessary to create users in the RPD  but its necessary to create the groups in the RPD. Infact, creating several users in the RPD can be a cumbersome job and it will also increase the size of the RPD, so, according to the best practice create the users and groups on the DB(or add in AD/LDAP) and associate them with the RPD groups by creating groups of the same name on the RPD as in DB.</p>
<p><span id="more-184"></span></p>
<p><em><strong>Authentication and Authorization?</strong></em></p>
<p><em>Authentication </em>means validating the user while logging in the OBIEE application. When a user logs in the OBIEE application a request is sent to the BI Server asking that whether this user is a valid user or not. When BI Server validates the user then only the user is able to login in the application.</p>
<p><em>Authorization</em> means a user is authorized to view what all objects. Example, User A might be authorized to view only particular set of reports and dashboards based on the security applied.</p>
<p><strong><em>Types of Security in OBIEE?</em></strong></p>
<p>There are basically 2 types of security in OBIEE:</p>
<ol>
<li>Object Level Security</li>
<li>Data Level Security</li>
</ol>
<p>Lets understand these terms in detail.</p>
<p><strong><em>Object Level Security:</em></strong></p>
<p>As the name states, Object level security refers to restricting access to OBIEE objects between different users and groups. The access to following objects can be restricted using object level security: Presentation tables, Presentation table columns, Subject Areas, Reports, Dashboards, Project Specific shared folders.</p>
<p><strong><em>Data Level Security:</em></strong></p>
<p>Data Level Security is basically securing the data. Users belonging to particular group should see a certain set a data whereas users outside that groups shouldn&#8217;t see that data. Example: Users belonging to Asia group should see only the data for Asia region whereas users belonging to US region should see data for US region.</p>
<p> I have tried to give a brief overview of Security in OBIEE. In the upcoming posts we will learn more about it.</p>
<p>Till then keep posting!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/obiee-security-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OBIEE Changing Source DB dynamically</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/obiee-change-src-db-dyn/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=obiee-change-src-db-dyn</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/obiee-change-src-db-dyn/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 14:20:21 +0000</pubDate>
		<dc:creator>Sreejith</dc:creator>
				<category><![CDATA[BI Admin Tool]]></category>
		<category><![CDATA[BI Answers]]></category>
		<category><![CDATA[OBIEE Configuration]]></category>
		<category><![CDATA[Configuration]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=194</guid>
		<description><![CDATA[Thanks to Rohit for giving me a chance to write in his forum.  I have been waiting for good topic to start blogging. Finally I came across with this. We can change connection pool properties like DSN, username and password dynamically by using URL or passing value through URL. I used the same for changing [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to Rohit for giving me a chance to write in his forum.  I have been waiting for good topic to start blogging. Finally I came across with this.</p>
<p>We can change connection pool properties like DSN, username and password dynamically by using URL or passing value through URL. I used the same for changing the Database connections dynamically from which my reports were being generated.</p>
<p>This requires making changes in RPD and instanceconfig.XML. The steps for the same are listed below:</p>
<p>&nbsp;</p>
<p><strong>Step 1</strong></p>
<p>Create a Session Init block called <em>‘Populatevar’</em> as shown below to populate a session variable <em>‘Var’</em>.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db1.jpg"><img src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db1-150x150.jpg" alt="" width="150" height="150" /></a>                                                       <a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db21.jpg"><img src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db21.jpg" alt="" width="150" height="88" /></a></p>
<p><strong>&#8220;</strong><span style="color: #0000ff">Select 0 from dual</span><strong>&#8220;</strong> will always give the result 0 which will act as the default value for ‘Var’. This variable will be used to store the value that we will be passing through URL.  Please make sure to check the checkbox “Enable any user to set the value” as this will allow the users to set the value of this Session Variable from the URL.</p>
<p>&nbsp;</p>
<p><strong>Step 2</strong></p>
<p>Create a table in database eg: Table A with following columns:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="160">ENV_ID</td>
<td valign="top" width="160">SCHEMA_NAME</td>
<td valign="top" width="160">DSN_NAME</td>
<td valign="top" width="160">SCHEMA_PASSWORD</td>
</tr>
<tr>
<td valign="top" width="160">0</td>
<td valign="top" width="160">USER</td>
<td valign="top" width="160">DB1</td>
<td valign="top" width="160">XYZ</td>
</tr>
<tr>
<td valign="top" width="160">1</td>
<td valign="top" width="160">USER1</td>
<td valign="top" width="160">DB2</td>
<td valign="top" width="160">WXY</td>
</tr>
<tr>
<td valign="top" width="160">2</td>
<td valign="top" width="160">USER2</td>
<td valign="top" width="160">DB3</td>
<td valign="top" width="160">ABC</td>
</tr>
</tbody>
</table>
<p>(Note: It’s not a best practice to store passwords in database)</p>
<p>&nbsp;</p>
<p><strong>Step 3</strong></p>
<p>Create a Session Init block ‘ENVVAR’(as shown below) to populate PROJECT_DSN, PROJECT_USER and PROJECT_PWD variables using the above TableA. These 3 variables will store the values required to login into the database.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db3.jpg"><img class="aligncenter" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db3-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Set the default values for the variables PROJECT_DSN as DB1, PROJECT_USER as USER and PROJECT_PWD as XYZ. This is required so as to ensure that the default values get picked up when Init blocks are not fired. Always set the defaults to the default database connections from which you want the users to run the reports.</p>
<p>&nbsp;</p>
<p><strong>Step4</strong></p>
<p>Change connection pool details as below:</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db4.jpg"><img class="aligncenter" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/02/chg_src_db4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Data source name: VALUEOF(NQSESSION.PROJECT_DSN)</p>
<p>User name:  VALUEOF(NQSESSION.PROJECT_USER)</p>
<p>Password: VALUEOF(NQSESSION.PROJECT_PWD)</p>
<p>&nbsp;</p>
<p><strong>Step 5</strong></p>
<p>Add following entries in the instanceconfig.xml file:</p>
<p>&lt;ParamList&gt; &lt;!&#8211;  IMPERSONATE param is used to get the authenticated user.s username and is required &#8211;&gt;</p>
<p><span style="color: #0000ff"><em>&lt;Param name=&#8221;NQ_SESSION.Var&#8221; source=&#8221;url&#8221; nameInSource=&#8221;DB&#8221; /&gt;</em> &lt;/ParamList&gt;</span></p>
<p>The above tag is used to pass the database ID present in URL to ‘Var’ session variable.</p>
<p>&nbsp;</p>
<p><strong>Step6</strong></p>
<p>Now, construct your links like the ones shown below and it will dynamically pick source db details according to DB value.</p>
<ul>
<li><a href="http://delmw50656:9704/analytics/saw.dll?Dashboard&amp;DB=2">http://test50656:9704/analytics/saw.dll?Dashboard&amp;DB=2</a></li>
<li><a href="http://delmw50656:9704/analytics/saw.dll?Dashboard&amp;DB=3">http://test50656:9704/analytics/saw.dll?Dashboard&amp;DB=3</a></li>
</ul>
<p>&nbsp;</p>
<p><strong>How exactly it works???</strong></p>
<p>The entire idea behind this approach is to make use of Session variables in connection pools and then initialize the session variables to change the database connection by passing values through URL.</p>
<p>Now, when a user tries to login using a URL with a specific database id, the Session Variable “Var” will be initialized with the value which was passed from the URL.</p>
<p>Then, the value of the “Var” Session variable will be used in the Init Block ENVVAR through the below query:</p>
<p>select SCHEMA_NAME, DSN_NAME, SCHEMA_PWORD from TableA WHERE ENV_ID =  TO_NUMBER(VALUEOF(NQ_SESSION.Var))</p>
<p>The above query will assign values of SCHEMA_NAME, DSN_NAME and SCHEMA_PWORD fetched from TableA to the variables associated with the ENVVAR Init block i.e. PROJECT_USER will be assigned value from SCHEMA_NAME, PROJECT_DSN will be assigned value from DSN_NAME and PROJECT_PWD will be assigned value from SCHEMA_PWORD.</p>
<p>These Session variables will then be used in a connection pool to connect to the database.</p>
<p>The values of these Session variables can be changed based on the database id passed from the URL and hence the connectivity to the database can be changed.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/obiee-change-src-db-dyn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Row-wise Session Variables</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rowwise-session-var</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 06:41:08 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[BI Admin Tool]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=169</guid>
		<description><![CDATA[Hi Friends, Here I am with a new post and a rather interesting one. In this post we will understand that how can we actually assign values dynamically to session variables and how these variables can be further used in data level security implementation. Before starting with this, we also have to understand the concepts [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Friends,</p>
<p>Here I am with a new post and a rather interesting one. In this post we will understand that how can we actually assign values dynamically to session variables and how these variables can be further used in data level security implementation.</p>
<p>Before starting with this, we also have to understand the concepts of Session Variables and Row-wise initialization as they act as the baseline for this approach.<br />
<strong><em>What is a Session Variable?</em></strong></p>
<p><em></em>A Session variable is a variable which stores the values fetched from the initialization block and it gets initialized when a new session starts. Whenever, a user starts a session, OBIEE server creates a new instance of the session variable and initialize it with a value. This value is retained in the Session Variable till the session ends.</p>
<p><strong><em>What is Row-wise Initialization?</em></strong></p>
<p>As per what the name suggests, Row-wise initialization feature allows you to assign a list of values(present in some database table) to a single session variable. It also allows you to create multiple session variables dynamically and set their values when the session starts. This feature is present in the Session Variable initialization block in the RPD and is used to initialize a variable. The Session variable initialization blocks run for every new session created.</p>
<p><strong><em>How to create Row-wise Session Variables?</em></strong></p>
<p>Row-wise Session variables are dynamic session variables which are created dynamically when the Session Variable initialization block initializes. Below examples shows how to create Row-wise Session variable dynamically.</p>
<p><span id="more-169"></span></p>
<p><strong>Example 1- <em>Create multiple dynamic session variables and initialize them with values</em></strong></p>
<p>In the RPD,  under variables, create a new Session Variable Init Block &#8216;Test&#8217; with the following query-</p>
<p><em>Select &#8217;1&#8242;,&#8217;RJ&#8217; FROM DUAL UNION Select &#8217;2&#8242;,&#8217;SJ&#8217; FROM DUAL</em></p>
<p><a href="http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/var_test1/" rel="attachment wp-att-170"><img class="aligncenter size-thumbnail wp-image-170" title="Var_Test1" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/01/Var_Test1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Then, assign a connection pool to the init block and set the Variable Target as Row-wise Initialization.</p>
<p>Now, when this session variable init block will run, it will create 2 dynamic session variables &#8217;1&#8242; and &#8217;2&#8242; with the values &#8216;RJ&#8217; and &#8216;SJ&#8217;. Below images show how to display the same in Answers:</p>
<p><a href="http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/var_test6/" rel="attachment wp-att-175"><img class="size-thumbnail wp-image-175 alignleft" title="Var_Test6" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/01/Var_Test6-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/var_test9/" rel="attachment wp-att-178"><img class="aligncenter size-thumbnail wp-image-178" title="Var_Test9" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/01/Var_Test9-150x141.jpg" alt="" width="150" height="141" /></a></p>
<p>Diag1                                                                                                                          Diag2</p>
<p>&nbsp;</p>
<p><strong>Example 2- <em>Create single Session variable and initialize it with multiple values</em></strong></p>
<p><em>This technique is generally used to assign multiple security groups to a single user while implementing Data Level Security</em>. The below example shows how assigning multiple values to a single session variable can used in implementing Data Level Security:</p>
<p>Create a Session variable Init block named &#8216;Test1&#8242; and add the below query.</p>
<p><em>Select &#8216;VAR&#8217;,'VAR1&#8242; FROM DUAL UNION Select &#8216;VAR&#8217;,'VAR2&#8242; FROM DUAL</em></p>
<p><a href="http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/var_test2/" rel="attachment wp-att-171"><img class="aligncenter size-thumbnail wp-image-171" title="Var_Test2" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/01/Var_Test2-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>This will assign values &#8216;VAR1&#8242; and &#8216;VAR2&#8242; to dynamic Session variable &#8216;VAR&#8217; and when we will test this Init block, the result will be displayed in multiple rows. like:</p>
<table width="73" border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col width="33" />
<col width="40" /></colgroup>
<tbody>
<tr>
<td width="33" height="20">VAR</td>
<td width="40">VAR1</td>
</tr>
<tr>
<td height="20">VAR</td>
<td>VAR2</td>
</tr>
</tbody>
</table>
<p>Create another Session Variable Init block named &#8216;Test3&#8242;  and add the below query in that. Then, assign this Session Variable Init block to a variable &#8216;NEW&#8217;:</p>
<p><em>Select &#8216;VALUEOF(NQ_SESSION.VAR)&#8217; FROM DUAL</em></p>
<p><a href="http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/var_test4/" rel="attachment wp-att-173"><img class="aligncenter size-thumbnail wp-image-173" title="Var_Test4" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/01/Var_Test4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Now, the point to note here is that, in previous scenarios we haven&#8217;t assigned the Init block a variable but in this scenario we are doing it.<em> This is required because, since, we have to assign multiple groups to a single user, we should get the data in a single row instead of multiple rows. So, assigning the &#8216;Test3&#8242; Init block to a variable &#8216;NEW&#8217; and fetching the values of &#8216;VAR&#8217; session variable in the query will bring the data in a single row in the &#8216;NEW&#8217; session variable</em>. The same can be seen in the below images:</p>
<p><a href="http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/var_test5/" rel="attachment wp-att-174"><img class="size-thumbnail wp-image-174 alignleft" title="Var_Test5" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/01/Var_Test5-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a href="http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/var_test8/" rel="attachment wp-att-177"><img class="aligncenter size-thumbnail wp-image-177" title="Var_Test8" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2012/01/Var_Test8-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>So, the above images show that when we test the Session Variable Init block &#8216;Test3&#8242; the values &#8216;VAR1&#8242; and &#8216;VAR2&#8242; are stored in the Session variable &#8216;NEW&#8217; in a single row. The other image shows that the same can be used and displayed in answers.</p>
<p><em>This variable then can be further used for Data Level Security as filters can be applied on users and groups in RPD based on this variable. And t</em>his is how we make use of Row-wise initialization for Data Level Security.</p>
<p>Questions and comments are invited&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/rowwise-session-var/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dashboard dropdown Menu</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/dashboard-dropdown-menu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dashboard-dropdown-menu</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/dashboard-dropdown-menu/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 15:19:55 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[BI Answers]]></category>
		<category><![CDATA[OBIEE Configuration]]></category>
		<category><![CDATA[Configuration]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=183</guid>
		<description><![CDATA[Hi Friends, Today&#8217;s topic is a rather common one and could be found on most of the blogs. After a long time, I again implemented the same so thought of sharing it with all. Most of the BI projects have numerous dashboards and the business owners want them to get displayed in a list form [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Friends,</p>
<p>Today&#8217;s topic is a rather common one and could be found on most of the blogs. After a long time, I again implemented the same so thought of sharing it with all.</p>
<p>Most of the BI projects have numerous dashboards and the business owners want them to get displayed in a list form such that all the related dashboards(present under same shared folder in catalog) should be showed under one link. This can be achieved by changing some configuration in the instanceconfig.xml file located in the folder <em>&lt;OracleBIData&gt;\web\config\</em>.</p>
<p>Stop the Presentation services and add the below tag in the instanceconfig.xml file:</p>
<p><strong><em>&lt;DashboardMaxBeforeMenu&gt;2&lt;/DashboardMaxBeforeMenu&gt;</em></strong></p>
<p>and restart the Presentation services.</p>
<p>This tag will change the existing dashboard display and will list the dashboards present in single shared folder under one link.</p>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/dashboard-dropdown-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Level Based Measures</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/level-based-measures/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=level-based-measures</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/level-based-measures/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 08:17:47 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[BI Admin Tool]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=160</guid>
		<description><![CDATA[Hi Friends, I have got a number of requests to write on this topic, so here I am with Level Based Measures in OBIEE. As usual to start with lets understand what does this mean and how is it created in OBIEE. &#160; What are Level Based Measures? For all my new readers I would [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Friends,</p>
<p>I have got a number of requests to write on this topic, so here I am with Level Based Measures in OBIEE. As usual to start with lets understand what does this mean and how is it created in OBIEE.</p>
<p>&nbsp;</p>
<p><strong>What are Level Based Measures?</strong></p>
<p>For all my new readers I would like to first explain what is a Measure. <em>A Measure is any measurable entity and aggregation functions can be applied on them. In other words any entity which is  viewed/compared with respect to dimension columns is a measure</em>. eg: Total Sales, Dollar Amount are measures which can be viewed against Time, Region Dimensions.</p>
<p>Now, Level Based Measures as their name state are calculated at a particular level. It can be better understood with the following example:</p>
<p>Lets assume there is a company ABC which has its Sales extended in many  regions, countries and cities. Now, the CEO of the company wants to see the Total Sales at Country Level(Western Region has US and Canada as countries) i.e. one level below Region and one level above Cities. So, here our measure Sales has to be summed up to the Country level. Similarly, the same Sales measure can be viewed against Time Dimension at any particular level. Eg: Quarterly Sales.</p>
<p>These type of measures are called the <em>Level Based Measures</em>.</p>
<p> <span id="more-160"></span></p>
<p><strong>How are Level Based Measures created?</strong></p>
<p>Before understanding how is it created we have to understand the concept of <em>Dimension Hierarchies</em>.</p>
<p>A Dimension Hierarchy is basically a drilldown(from top to detail) of a dimensional attribute. As explained in my previous example (company ABC), while analyzing Total Sales against Region Dimension we saw three levels of Region Dimension, the topmost level was Region, the second was Country and the last was City.  These 3 levels will become the levels of our Dimension Hierarchy across which the Total Sales can be viewed. Similarly, the Time Dimension can have Total, Year, Quarter, Month and Date as its levels.</p>
<p style="text-align: center;"><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Time-Dim-Hierarchy.jpg"><img class="aligncenter size-full wp-image-163" title="Time Dim Hierarchy" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Time-Dim-Hierarchy.jpg" alt="" width="270" height="190" /></a></p>
<p>The Dimension Hierarchy is created in the BMM Layer in the OBIEE RPD and based on it we can decide at which level of a particular dimension do we actually need to see the measure.</p>
<p>Now again coming back to our question <em>How are Level Based Measures Created</em>. Once the Time Dimension Hierarchy is created, we need to set the content level of the Total Sales measure to a particular level(present in the Time Dim Hierarchy) to make it a Level Based Measure. This can be done by double clicking on the Total Sales column and then setting the level in the Levels tab. The setting of content level can be better explained by the below image.</p>
<p style="text-align: center;"><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/LBM1.jpg"><img class="aligncenter size-medium wp-image-162" title="LBM" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/LBM1-300x83.jpg" alt="" width="300" height="83" /></a> </p>
<p style="text-align: center;"> </p>
<p><strong>How do Level Based Measures Work?</strong></p>
<p>When we dont set any level in the RPD for Total Sales measure and create a report with columns Per Name Year and Total Sales, we get the below output. The Total Sales is aggregated at the Year level.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report-Detail.jpg"><img class="aligncenter size-full wp-image-167" title="Report Detail" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report-Detail.jpg" alt="" width="159" height="131" /></a></p>
<p>But after setting the content level at Month in the RPD, if we run the report, then the report will show the Total Sales at Month level and the data doesn&#8217;t get aggregated at the Year Level. In the below image you can see 12 records for year 2008.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report1.jpg"><img class="aligncenter size-medium wp-image-164" title="Report1" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report1-198x300.jpg" alt="" width="198" height="208" /></a></p>
<p> Another interesting thing to note with Level Based Measures is that when we drill below the Month Level in the report, the values for corresponding measure keeps on repeating, restricting the users drilling capabilities below Month Level. This can be understood by the below images.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report2_Month.jpg"><img class="aligncenter size-medium wp-image-165" title="Report2_Month" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report2_Month-300x99.jpg" alt="" width="274" height="99" /></a></p>
<p> The above image shows the drill from year to month level. Please note that the Total Sales corresponding to Per Name Month 2008/01 is 43810.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report3_Below_Month.jpg"><img class="aligncenter size-medium wp-image-166" title="Report3_Below_Month" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/11/Report3_Below_Month-300x98.jpg" alt="" width="300" height="98" /></a></p>
<p> The above image shows the drill from Month Level to the Week Level. But the values for Total Sales column remain the same as in the previous image even after drilling to a lower level restricting the users from viewing the detail data.</p>
<p>This can also be used for security restricting the inappropriate users from viewing the detail data.</p>
<p> This is all about the Level Based Measures. I hope it helps you to understand the basic logic behind using them.</p>
<p>Please let me know your feedback and keep posting&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/level-based-measures/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Implement MUDE in OBIEE</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/mude/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mude</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/mude/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 11:17:07 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[BI Admin Tool]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=146</guid>
		<description><![CDATA[Hi Friends, I think most of you must be familiar with the term MUDE in OBIEE and for those who aren&#8217;t, its Multi User Development Environment. It is a very commonly used technique while development but still I am writing this post here because some people still dont know how can we make use of it. MUDE [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Friends,</p>
<p>I think most of you must be familiar with the term MUDE in OBIEE and for those who aren&#8217;t, its <strong>Multi User Development Environment. </strong></p>
<p>It is a very commonly used technique while development but still I am writing this post here because some people still dont know how can we make use of it. MUDE in OBIEE is a very useful technique for the Dev Teams. As the name states, by using MUDE &#8220;<em>Multiple users can work on the RPD simultaneously</em>&#8220;.</p>
<p><em>How does it work??</em></p>
<p>Say for example, 3 people are working in a team and all 3 have to work on the same RPD and make some changes to it. In normal scenerio, one will start working and other 2 have to wait until the first person completes his work. This is a time consuming and inefficient process. Whereas, using MUDE all 3 can work on the same RPD simultaneously by checking out the objects, making changes to them and checking them back in to the Master Repository.</p>
<p>An important concept to understand here is &#8216;<em>Creating Projects in RPD</em>&#8216; . We need to create Projects in the RPD because the entire MUDE process revolves around checking out Projects and checking them back in the RPD by the users.</p>
<p>The checkout and checkin process works by using the concept of Master and Local copies of the RPD. When a person checks out a project in RPD in MUDE mode, a Local copy of the RPD is created on the machine on which that person is working. The Master copy remains intact until the changes are merged with the Local changes and published on the network. We will understand the detailed process while moving ahead.</p>
<p><em>Implementation??</em></p>
<p>Implementation is very simple. We need to follow the below steps:</p>
<p>1) The first thing that we need to do in RPD is to create projects(assuming that the tables are imported in Physical layer and BMM layer is setup accordingly). Go to Manage&gt;Projects and create a new projects.</p>
<p>Projects are nothing but a grouping of one or more than one Logical Fact Tables. These projects need to be created so that users working on different Logical Fact tables can be assigned different projects.</p>
<p>&nbsp;</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_Project1.jpg"><img class="aligncenter size-full wp-image-148" title="MUDE_Project" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_Project1.jpg" alt="" width="453" height="344" /></a></p>
<p>2) Setup a shared directory where the Master RPD will be placed. Copy the Master RPD into the directory.</p>
<p>3) In the RPD go to Options&gt;Multiuser and set the path of the shared drive(created in step 1 above) in Multiuser Development Directory. The same thing should be done on all the systems using the MUDE.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_Drivesetup.jpg"><img class="aligncenter size-medium wp-image-149" title="MUDE_Drivesetup" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_Drivesetup-300x240.jpg" alt="" width="286" height="207" /></a></p>
<p>4) Now open the Admin tool on your system and go to File&gt;Multiuser and then select Checkout. A list of projects on which you have permissions will be visible to you. Select the Project(containing Logical fact table) on which you have to work. This will checkout the Project and will create 2 RPDs on your system in Repository folder. One is the subset.rpd, containing the extracted project and other is the originalsubset.rpd which is the original copy of the RPD.</p>
<p>&nbsp;</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_chkout.jpg"><img class="aligncenter size-medium wp-image-150" title="MUDE_chkout" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_chkout-300x240.jpg" alt="" width="300" height="142" /></a></p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_RPDs.jpg"><img class="aligncenter size-medium wp-image-151" title="MUDE_RPDs" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_RPDs-300x220.jpg" alt="" width="300" height="106" /></a></p>
<p>5) Once the project is checked out, you can make your changes to the underlying objects.</p>
<p>6) Now, to checkin your changes, go to File&gt;Multiuser&gt;Merge Local Changes. Now, as and when you try to Merge Local Changes with the Master RPD, a lock is placed on the master RPD. This is to ensure the version control and to prevent the code overwrites while merging. A screen will popup which will show you the lock information and you can enter your change details into it (functionality of typical version control tool). The lock prevents other users from checking in their changes and also view changes made by you.</p>
<p>&nbsp;</p>
<p>7)  When we merge the local RPD with Master RPD a merge screen will appear. Normally, in case of no conflicts, it merges automatically. But, in case of conflicts with other users, you manually have to resolve the conflicts.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_merge.jpg"><img class="aligncenter size-medium wp-image-153" title="MUDE_merge" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_merge-300x211.jpg" alt="" width="300" height="211" /></a></p>
<p>8 ) Now, to release the lock from the Master RPD you have to Publish your changes on the network. When we Publish the changes on the network. The local copy of the Master RPD will be copied to the shared drive and the lock will be removed. Also, the local copy will be deleted from the Repository folder after publishing the changes.</p>
<p> <a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_Publish.jpg"><img class="aligncenter size-medium wp-image-154" title="MUDE_Publish" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/10/MUDE_Publish-300x240.jpg" alt="" width="300" height="240" /></a></p>
<p>After this 2 excel log files will be generated, one in your local folder and other in the shared drive. These will contain the information about the merge process.</p>
<p><em>Advantages??</em></p>
<ul>
<li>Useful and efficient development technique.</li>
<li>Saves time and allows many people to work on the same RPD at the same time.</li>
<li>Version control and merge is handled by OBIEE itself.</li>
</ul>
<p>This is how the MUD actually works in OBIEE. I hope it will be helpful for all my readers and also will prove an efficient development methodology.</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/mude/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Refresh Prompts while navigating Dashboard Pages-1</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/refresh-prompts1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=refresh-prompts1</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/refresh-prompts1/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 12:21:30 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[BI Answers]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=137</guid>
		<description><![CDATA[Hi Friends, Sometime back I posted about clearing the prompts while navigating between the Dashboard pages. In that post I mentioned about modifying the instanceconfig file and adding the below tag : &#60;PersistPageState&#62;FALSE&#60;/PersistPageState&#62; The only drawback with the above method is that it has an Application wide impact. This means that once we update the instanceconfig file, it will [...]]]></description>
			<content:encoded><![CDATA[<div class='series_toc'><h3>Table of contents for Clear Prompts</h3><ol><li><a href='http://oracle-bi.siebelunleashed.com/articles/refresh_prompts/' title='Refresh Prompts while navigating Dashboard Pages'>Refresh Prompts while navigating Dashboard Pages</a></li><li>Refresh Prompts while navigating Dashboard Pages-1</li></ol></div> <p>Hi Friends,</p>
<p>Sometime back I posted about clearing the prompts while navigating between the Dashboard pages. In that post I mentioned about modifying the instanceconfig file and adding the below tag :</p>
<p><span style="color: #0000ff;">&lt;PersistPageState&gt;FALSE&lt;/PersistPageState&gt;</span></p>
<p><span style="color: #000000;"><strong>The only drawback with the above method is that it has an Application wide impact</strong>. This means that once we update the instanceconfig file, it will be applicable to all the dashboards accross the application.</span></p>
<p><span style="color: #000000;">Sometimes, there are requirements where in we have multiple Dashboards in an application and in some Dashboards users want the prompts to be cleared while navigating between the pages whereas in others, users want the prompt values to persist. To cater such scenerios, we can make use of the below alternative.</span></p>
<p><span style="color: #000000;"><span id="more-137"></span></span></p>
<p><strong>Requirement:</strong> I have 2 Dashboard Pages, Page 2 and Page 3. I have selected a value in the prompt on Page 3. Now, when I navigate to Page 2 and navigate back to Page 3, I want my prompts to be clear.</p>
<p>It can be implemented as below:</p>
<p><strong>1)</strong> Create Page 3 with prompt and report.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/09/clear-prompts.jpg"><img class="alignleft size-medium wp-image-140" title="clear prompts" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/09/clear-prompts-300x214.jpg" alt="" width="392" height="56" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>2)</strong>  Create a link on Page 2 by using &#8220;Link or Image&#8221; dashboard object. This link should navigate to Page 3 i.e. the destination should be entered as Page 3.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/09/clear-prompts-3.jpg"><img title="clear prompts 3" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/09/clear-prompts-3-300x240.jpg" alt="" width="330" height="152" /></a></p>
<p><strong>3)</strong> Now, select a value in Prompt on Page 3 and click GO. This will set the selected value in Prompt.</p>
<p><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/09/clear-prompts-1.jpg"><img class="alignleft size-medium wp-image-141" title="clear prompts 1" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/09/clear-prompts-1-300x215.jpg" alt="" width="336" height="53" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>4)</strong>  Navigate to Page 2 from Page 3. This can also be done using a link but I am not covering the same in this example.</p>
<p><strong>5)</strong> Navigate back to Page 3 by clicking the Link on Page 2. <img class="alignleft size-medium wp-image-143" title="clear prompts 2" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/09/clear-prompts-2-300x240.jpg" alt="" width="276" height="55" /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><em>You will see that the prompts on Page 3 are cleared.</em></p>
<p>The above approach can be used for clearing the prompts while navigating between the dashboard pages. It is a rather simple approach but might be useful for some of you.</p>
 <div class='series_links'><a href='http://oracle-bi.siebelunleashed.com/articles/refresh_prompts/' title='Refresh Prompts while navigating Dashboard Pages'>Previous in series</a> </div>]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/refresh-prompts1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Passing Presentation Variables between Prompts</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/pass-pres-var-bw-prompts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pass-pres-var-bw-prompts</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/pass-pres-var-bw-prompts/#comments</comments>
		<pubDate>Sun, 01 May 2011 04:27:04 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[BI Answers]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=124</guid>
		<description><![CDATA[Hi Friends Few days back I got a requirement from one of my friends according to which he wanted to have the value of  Presentation Variable(selected from prompt) being passed amongst the underlying Multi Select prompts on the Dashboard. Requirement: Each national Promotion have NP Relase date and NP End date ,so, the requirement is to [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Friends</p>
<p>Few days back I got a requirement from one of my friends according to which he wanted to have the value of  Presentation Variable(selected from prompt) being passed amongst the underlying Multi Select prompts on the Dashboard.</p>
<p>Requirement:</p>
<p>Each national Promotion have NP Relase date and NP End date ,so, the requirement is to show the National Promotion in Multi Selector which the NP Relase date or NP End date between the Start date and End date (selected promt values).</p>
<div id="attachment_126" class="wp-caption aligncenter" style="width: 219px"><a href="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/05/image001.jpg"><img class="size-full wp-image-126" title="image001" src="http://oracle-bi.siebelunleashed.com/wp-content/uploads/2011/05/image001.jpg" alt="" width="209" height="84" /></a><p class="wp-caption-text">Requirement</p></div>
<p> </p>
<p>I think the above requirement can be achieved in Dropdown prompts but not in the case of Multi Select Prompts.</p>
<p>Any help or suggestions regarding this will be appreciated.</p>
<p>Thanks</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/pass-pres-var-bw-prompts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Java Host Server Usage</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/publisher-from-answers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=publisher-from-answers</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/publisher-from-answers/#comments</comments>
		<pubDate>Sun, 01 May 2011 03:59:25 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[BI Servers and Architectures]]></category>
		<category><![CDATA[BI Server]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=121</guid>
		<description><![CDATA[Hi Frens, Sometime back I was under the impression that the Java Host server is only used for displaying Charts,Graphs and all those flashy images, but, after the below incident I found one more usage of the Java Host server. Today, I had a requirement to create some reports in BI Publisher. When I logged in to [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Frens,</p>
<p>Sometime back I was under the impression that the Java Host server is only used for displaying Charts,Graphs and all those flashy images, but, after the below incident I found one more usage of the Java Host server.</p>
<p>Today, I had a requirement to create some reports in BI Publisher. When I logged in to OBIEE and tried to access BI Publisher from More Products then I got the below error:</p>
<p>&#8220;An error occurred during execution of &#8220;<em>connect</em>&#8220;. No connection could be made because the target <em>machine actively refused</em> it&#8221;</p>
<p>I was amazed when I got this idiotic error as I just did a fresh OBIEE install. Another interesting thing was that I was able to access the BI Publisher Standalone application and was able to login into the application successfully.</p>
<p>When I read the error, it said &#8216;target machine refused to connect&#8217; which meant the server is shut down but that was not the case as I was able to login in standalone application. So, this thing brought up more confusions.</p>
<p>After all this confusion, I went and checked all the servers and found that except Java Host server all the servers were started. So, just as a trial I started the Java Host Server and to my surprize my problem got resolved.</p>
<p>I think this post might not be that helpful for some people but it can avoid you from wasting some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/publisher-from-answers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Insight of OBIEE Architecture-IV</title>
		<link>http://oracle-bi.siebelunleashed.com/articles/insight-of-obiee-architecture-iv/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=insight-of-obiee-architecture-iv</link>
		<comments>http://oracle-bi.siebelunleashed.com/articles/insight-of-obiee-architecture-iv/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 09:12:26 +0000</pubDate>
		<dc:creator>Rohit</dc:creator>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[BI Admin Tool]]></category>
		<category><![CDATA[BI Servers and Architectures]]></category>
		<category><![CDATA[BI Basics]]></category>

		<guid isPermaLink="false">http://oracle-bi.siebelunleashed.com/?p=118</guid>
		<description><![CDATA[Hey Friends, We have been discussing the OBIEE Architecture and we have covered 3 segments. So, here I am with the 4th segment DataSources. This is a rather simple one as we all know till now that OBIEE is a reporting tool and works on data from  underlying Databases, so here DataSources are the underlying [...]]]></description>
			<content:encoded><![CDATA[<div class='series_toc'><h3>Table of contents for Architecture</h3><ol><li><a href='http://oracle-bi.siebelunleashed.com/articles/obiee-architecture/' title='Insight of OBIEE Architecture'>Insight of OBIEE Architecture</a></li><li><a href='http://oracle-bi.siebelunleashed.com/articles/insight-of-obiee-architecture-ii/' title='Insight of OBIEE Architecture-II'>Insight of OBIEE Architecture-II</a></li><li><a href='http://oracle-bi.siebelunleashed.com/articles/insight-obiee-arch-iii/' title='Insight of OBIEE Architecture-III'>Insight of OBIEE Architecture-III</a></li><li>Insight of OBIEE Architecture-IV</li></ol></div> <p>Hey Friends,</p>
<p>We have been discussing the OBIEE Architecture and we have covered 3 segments. So, here I am with the 4th segment DataSources.</p>
<p>This is a rather simple one as we all know till now that OBIEE is a reporting tool and works on data from  underlying Databases, so here DataSources are the underlying Databases with which the OBIEE server interacts. OBIEE is a very smart tool and it has got the capability of reporting on multiple Databases and also multiple types of Databases like XML, Oracle, SQL Server etc.</p>
<p>Now, in the previous posts you have seen what is an OBIEE Repository and what is the Physical Layer and what are connection pools. I am reminding you of these things because our current segment is based on this and we will see how.</p>
<p><span id="more-118"></span></p>
<p>Now, when we design the OBIEE Metadata or repository for reporting, we import the tables on which we need to perform reporting into the physical layer from the respective DBs. And then we apply appropriate joins between the tables and furthur pull them to BMM and then to Presentation Layer for reporting.</p>
<blockquote><p> <em>The question that comes out here is &#8220;How does the BI Server interacts with the underlying DBs for showing the reports???&#8221;</em></p></blockquote>
<p>The answer to this question lies in the Connection Pools. If we open the Connection Pool we can see that we need to select the <strong>Call Interface,</strong> give the name of the <strong>DSN, </strong>give a <strong>Username</strong> and <strong>password. </strong>These things help up to connect to the Database.</p>
<p><strong>Call</strong> <strong>Interface</strong> &#8211; There is a drop down from where we can select the appropriate Call Interface. Some examples are ODBC, OCI etc. Both ODBC and OCI can be used for Oracle. The main difference between using them is, In ODBC we need to create a DSN in the system where the server is installed but OCI is a native DSN and we can use it directly without creating the DSN in the system.</p>
<p><strong>DSN</strong>- This is the name of the DSN which OBIEE uses to connect to the underlying DB.</p>
<p><strong>Username</strong>- The user with which OBIEE connects the DB. Generally the user used for reporting should only have the read priviledges on the DB.</p>
<p><strong>Password</strong>- Password of the user with which OBIEE connects to the DB.</p>
<p> Now, when a user runs the report in Answers the OBIEE server accesses the DB using the connection pool with the specified Call Interface and username and returns the data.</p>
<blockquote><p><em>The next question is &#8220;How does the BI server takes care of a report formed using columns and tables from multiple DBs???&#8221;</em></p></blockquote>
<p>As I have told you earlier also that BI server is very intellegent and is built in such a way that it can process request formed form multiple DBs. When the user generates a report involving multiple DBs, the request navigates to the Navigator section in the BI Server which checks the underlying DBs with which OBIEE needs to interact to. Then the BI server generates separate queries for the DBs and fire them on the respective DBs. Then it fetches the data from the underlying DBs and combines the result set in its own memory and displays the result in the report.</p>
<p>With this post we have covered the 4 segments of the OBIEE Architecture. I hope this will help you alot in understanding the BI Architecture and also in understanding the OBIEE behaviour. In the upcoming posts I will also try to go into the details and throw some more light on the BI Server components.</p>
<p>Till then Keep Posting&#8230;.</p>
 <div class='series_links'><a href='http://oracle-bi.siebelunleashed.com/articles/insight-obiee-arch-iii/' title='Insight of OBIEE Architecture-III'>Previous in series</a> </div>]]></content:encoded>
			<wfw:commentRss>http://oracle-bi.siebelunleashed.com/articles/insight-of-obiee-architecture-iv/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

