<?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>Rittman Mead Consulting</title>
	<atom:link href="http://www.rittmanmead.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rittmanmead.com</link>
	<description>Delivered Intelligence</description>
	<lastBuildDate>Wed, 01 Sep 2010 15:42:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oracle BI EE 11g &#8211; New BI Server Functions</title>
		<link>http://www.rittmanmead.com/2010/08/27/oracle-bi-ee-11g-new-bi-server-functions/</link>
		<comments>http://www.rittmanmead.com/2010/08/27/oracle-bi-ee-11g-new-bi-server-functions/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 04:51:43 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5630</guid>
		<description><![CDATA[As mentioned in the blog entry here, BI Server 11g now supports more functions which were added to support the new UI features. Each of these functions can be used as part of the Logical SQL or can even be used directly in the Answers UI. In this blog entry we shall be looking at [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">As mentioned in the blog entry <a href="http://www.rittmanmead.com/2010/08/14/oracle-bi-ee-11g-%e2%80%93-bi-server-new-features/" target="_blank">here</a>, BI Server 11g now supports more functions which were added to support the new UI features. Each of these functions can be used as part of the Logical SQL or can even be used directly in the Answers UI. In this blog entry we shall be looking at how some of these functions can be used.</p>
<p style="clear: both">1. <strong>SELECT_PHYSICAL</strong><em>: </em>Though this is not a function, this is a new feature supported by BI Server that can bypass the BMM layer in the SQL queries. So, any SQL that uses SELECT_PHYSICAL will be more closer to the ANSI SQL standard. There are 2 main advantages of this</p>
<p style="clear: both">a. Any external reporting tools that generate SQL automatically can now leverage the functionality of BI Server. For example, in the blog entry <a href="http://www.rittmanmead.com/2009/12/08/cognos-8-oracle-bi-ee-10-1-3-4-1-reporting-using-cognos-on-bi-ee-metadata-bi-server-odbc/" target="_blank">here</a> i had shown the difficulty in actually using Logical SQL with Cognos. But introduction of SELECT_PHYSICAL<em> </em>should alleviate this issue thereby making BI Server open for better integration externally.</p>
<p style="clear: both">b. Using SELECT_PHYSICAL one can now make direct joins across data sources without actually having the need to model them separately in the Business Model and Mapping layer.</p>
<p style="clear: both">With the addition of more in-memory operations in the BI Server, this should act as a point of integration for external tools that have the need to leverage the metadata framework of BI EE.</p>
<p style="clear: both">To illustrate how this works, lets look at the repository shown below,</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_1-thumb6.png" alt="" width="271" height="209" />As you see, the above repository contains all the relevant tables in the SH schema. Now, to use the SELECT_PHYSICAL command, lets go to the Issue SQL section of the BI EE and fire the SQL given below</p>
<pre style="clear: both">SELECT_PHYSICAL
0 s_0,
CHANNEL_CLASS s_1,
SUM(AMOUNT_SOLD) s_2
FROM
"ORCL - SH".."SH"."CHANNELS"
A,
"ORCL - SH".."SH"."SALES" B
WHERE
A.CHANNEL_ID = B.CHANNEL_ID
GROUP BY CHANNEL_CLASS</pre>
<p style="clear: both">Remember, though this is a SELECT_PHYSICAL SQL statement, BI Server will still do the parsing as the objects will have to reside inside the repository.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_3-thumb9.png" alt="" width="380" height="275" />This option can be enabled at the ODBC/JDBC level as well. That way the DSN can be configured to just accept SELECT_PHYSICAL or SELECT commands.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_4-thumb9.png" alt="" width="380" height="253" />I will cover more details of how this can be leveraged from external tools like QlikView, Cognos etc in a future blog entry.</p>
<p style="clear: both">2. <strong>AGGREGATE AT</strong>:</p>
<p style="clear: both">This function adds more multi-level analysis capabilities within the BI Server. This function provides the same functionality as the Level Based Measures. What this does is, it provides an ability to extract the values of a parent level in a query without having to SUM up the values in the lower level. To illustrate, lets look at the simple report below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_5-thumb10.png" alt="" width="233" height="409" /></p>
<div>In the above report, lets now apply a filter to display the just 2 quarters.</div>
<p style="clear: both">
<p style="clear: both">
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_6-thumb12.png" alt="" width="214" height="253" />Now, what we need is an ability to display the value of yearly sales alongside the quarterly sales. To do that, we need to enter the formula as shown below</p>
<pre style="clear: both">AGGREGATE("Sales"."AMOUNT_SOLD" AT "Times"."TimesDim - Calendar Year"."Calendar Year")</pre>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_7-thumb16.png" alt="" width="380" height="201" />If we look at the report now, we should see that we can compare the Yearly sales along the Quarterly sales i.e. the AGGREGATE AT function will not respect the filter on that dimension. If you want the filters to be honored as well then the older SUM BY functions can still be used.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_8-thumb15.png" alt="" width="309" height="244" />If you look at the Physical SQL generated, you would actually notice 2 separate WITH clauses (minimum). One for the Sales figure. And the other for the Yearly Sales figure. The Yearly Sales figure will not have the filter applied.</p>
<pre style="clear: both">WITH
SAWITH0 AS (select D1.c1 as c1,
     D1.c2 as c2,
     D1.c3 as c3,
     D1.c4 as c4,
     D1.c5 as c5
from
     (select sum(T44515.AMOUNT_SOLD) as c1,
               T44523.CALENDAR_QUARTER_DESC as c2,
               T44523.CALENDAR_QUARTER_ID as c3,
               T44523.CALENDAR_YEAR as c4,
               T44523.CALENDAR_YEAR_ID as c5,
               ROW_NUMBER() OVER
(PARTITION BY T44523.CALENDAR_QUARTER_ID
ORDER BY T44523.CALENDAR_QUARTER_ID ASC) as c6
          from
               TIMES T44523,
               SALES T44515
          where  ( T44515.TIME_ID = T44523.TIME_ID and
(T44523.CALENDAR_QUARTER_NUMBER in (1, 2)) )
          group by T44523.CALENDAR_QUARTER_DESC,
T44523.CALENDAR_QUARTER_ID, T44523.CALENDAR_YEAR,
T44523.CALENDAR_YEAR_ID
     ) D1
where  ( D1.c6 = 1 ) ),
SAWITH1 AS (select D1.c1 as c1,
     D1.c2 as c2,
     D1.c3 as c3
from
     (select sum(T44515.AMOUNT_SOLD) as c1,
               T44523.CALENDAR_YEAR as c2,
               T44523.CALENDAR_YEAR_ID as c3,
               ROW_NUMBER() OVER (PARTITION BY
T44523.CALENDAR_YEAR_ID ORDER BY T44523.CALENDAR_YEAR_ID ASC) as c4
          from
               TIMES T44523,
               SALES T44515
          where  ( T44515.TIME_ID = T44523.TIME_ID )
          group by T44523.CALENDAR_YEAR, T44523.CALENDAR_YEAR_ID
     ) D1
where  ( D1.c4 = 1 ) ),
SAWITH2 AS (select D1.c1 as c1,
     D1.c2 as c2,
     D1.c3 as c3,
     D1.c4 as c4,
     D1.c5 as c5,
     D1.c6 as c6
from
     (select 0 as c1,
               D1.c2 as c2,
               case  when D2.c2 is not null then D2.c2
when D1.c4 is not null then D1.c4 end  as c3,
               D1.c1 as c4,
               D2.c1 as c5,
               D1.c3 as c6,
               ROW_NUMBER() OVER (PARTITION BY D1.c2, D1.c3,
case  when D2.c2 is not null then D2.c2 when D1.c4 is not null
then D1.c4 end  ORDER BY D1.c2 ASC, D1.c3 ASC,
case  when D2.c2 is not null then D2.c2
when D1.c4 is not null then D1.c4 end  ASC) as c7
          from
               SAWITH0 D1 left outer join SAWITH1 D2 On D1.c5 = D2.c3
     ) D1
where  ( D1.c7 = 1 ) )
select D1.c1 as c1,
     D1.c2 as c2,
     D1.c3 as c3,
     D1.c4 as c4,
     D1.c5 as c5
from
     SAWITH2 D1
order by c1, c3 NULLS FIRST, c2</pre>
<p style="clear: both">3. <strong>CALCULATEDMEMBER</strong>:</p>
<p style="clear: both">This function is used to derive calculated members using members at any level of a hierarchy. In 10g, we can do this from a pivot table. In 11g, this function has been introduced at the BI Server level itself so that we can leverage these directly from the repository.</p>
<p style="clear: both">To illustrate this, consider the hierarchy shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_9-thumb12.png" alt="" width="291" height="314" />In this hierarchy, we want to find out the difference between Steven King&#8217;s Salary and his 2 direct reportees (Neena Kochhar and Lex De Haan). To do this, we need to use a function given below</p>
<pre style="clear: both">CALCULATEDMEMBER("HR"."Employee"."EmployeeDim",'Test', MEMBER(100) - MEMBER(101) -MEMBER(102))</pre>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_11-thumb11.png" alt="" width="380" height="181" />This would push the function directly on the parent-child hierarchy and give us the correct values. This function cannot be used if there are other attributes of the same dimension in the report. This is generally used by external application tools. But within BI EE Answers, there is no need for using this as we can achieve the same using Custom Groups and Calculations.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_12-thumb6.png" alt="" width="228" height="54" />4. <strong>EVALUATE_ANALYTIC</strong>:</p>
<p style="clear: both">This is another significant new feature that can be useful to push down the oracle database analytic functions. I have covered EVALUATE number of times before for function shipping database functions. EVALUATE_ANALYTIC extends that further and provides us an ability to function ship the analytic functions as well. The syntax of this function remains the same. I will cover this in detail in another blog post as there are quite a few use cases where EVALUATE_ANALYTIC can prove to be very useful.</p>
<p style="clear: both">5. <strong>HIERARCHICAL FUNCTIONS</strong>:</p>
<p style="clear: both">BI Server now supports hierarchical functions like ISCHILD, ISROOT, ISANCESTOR, ISDESCENDANT &amp; ISLEAF that can be used to traverse a Parent-Child hierarchy. These functions generally return a boolean data type (true/false) and hence can be used in filters to restrict data. They can also be used in column formula case statements.</p>
<p style="clear: both">For example, in a hierarchy if we want to know whether a specific member is a leaf node or not, we can use the below function to display Yes/No as an attribute of the parent-child hierarchy</p>
<pre style="clear: both">CASE WHEN ISLEAF(Employee.EmployeeDim) THEN 'Yes' ELSE 'No' END</pre>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_13-thumb8.png" alt="" width="380" height="201" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_14-thumb6.png" alt="" width="339" height="463" />Next up is some interesting posts on the BI EE integration with Fusion Middleware &amp; Essbase. I will be doing these posts towards the end of next week.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/27/oracle-bi-ee-11g-new-bi-server-functions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle BI EE 11g &#8211; Authentication &amp; Authorization &#8211; Weblogic Security</title>
		<link>http://www.rittmanmead.com/2010/08/26/oracle-bi-ee-11g-authentication-authorization-weblogic-security/</link>
		<comments>http://www.rittmanmead.com/2010/08/26/oracle-bi-ee-11g-authentication-authorization-weblogic-security/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 04:30:06 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5603</guid>
		<description><![CDATA[As Mark had pointed out earlier here, one of the significant changes in the BI EE 11g release is the migration of security from the BI EE repository to Weblogic. Users and Groups will no more be maintained within the rpd. Even in an external authentication like LDAP, Groups will not be maintained within the [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">As Mark had pointed out earlier <a href="http://www.rittmanmead.com/2010/07/09/obiee-11gr1-architecture-and-use-of-weblogic-server/" target="_blank">here</a>, one of the significant changes in the BI EE 11g release is the migration of security from the BI EE repository to Weblogic. Users and Groups will no more be maintained within the rpd. Even in an external authentication like LDAP, Groups will not be maintained within the repository. This is good in many ways as it can significantly reduce the size of the repository. The downside though is, in offline mode unless there is a change in any security object (like custom filters to a group etc), the users &amp; groups will not become visible. The use of Web Catalog Groups is no more recommended. It still exists primarily for supporting upgrades. In this blog post, lets see how the new weblogic based security works.</p>
<p style="clear: both">There is a terminology change that we need to get used to while moving to BI EE 11g. Groups now refer to Weblogic groups. BI EE specific groups are called as Application Roles. The figure shown below explains the relationship between Users, Groups &amp; Application Roles.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_2-thumb8.png" alt="" width="500" height="289" />Weblogic security is much more comprehensive and it can support multiple external directories like LDAP, OID etc. It also supports table authentication. So, if you are planning on setting up external authentication, its preferred to set it up at the Weblogic layer. We can also setup external directories within BI EE (like in 10g).</p>
<p style="clear: both">To start with lets create a simple user bieeuser1 in the Weblogic Console Security Realm (<strong>http://localhost:7001/console</strong>).</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_2-thumb9.png" alt="" width="379" height="345" />While creating a user we can assign it to a provider. A provider is the authentication directory against which users will be authenticated. In our case, we have created the user in the default weblogic directory. In the same way lets create 2 more users bieerpdadmin &amp; bieewebcatadmin.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_3-thumb7.png" alt="" width="380" height="144" />The idea is to provide the following privileges to each of the users that we have created</p>
<p style="clear: both"><strong>bieeuser1</strong> &#8211; Casual user with no access to the repository but with read only access to dashboards (no answers)<br />
<strong>bieerpdadmin</strong> &#8211; Repository Administrator with full control of the Repository objects but with no control on the web catalog.<br />
<strong>bieewebcatadmin</strong> &#8211; Web Catalog Administrator with full control on the web catalog but with no access to the repository</p>
<p style="clear: both">Remember, its not always necessary to assign users to weblogic groups. Users can be directly assigned to application roles. Once the users are created, lets login to the Weblogic enterprise manager and navigate to the coreapplication under the Business Intelligence folder.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_7-thumb14.png" alt="" width="380" height="245" />Now, right click on the coreapplication and choose the Security-&gt;Application Roles option</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_8-thumb13.png" alt="" width="380" height="199" />This should list all the default application roles available within BI EE.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_9-thumb9.png" alt="" width="380" height="224" />Let&#8217;s neglect the existing roles(ideally we will be reusing/reassigning the default roles as much as possible) and create 3 new roles.</p>
<p style="clear: both">1. BIEERoleUser<br />
2. BIEERoleRPDAdmin<br />
3. BIEERoleWebCatAdmin</p>
<p style="clear: both">For now lets not add any users/roles to these roles.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_10-thumb10.png" alt="" width="380" height="441" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_11-thumb9.png" alt="" width="380" height="320" />Lets now navigate to the Application Policies and start granting specific rights/grants to the roles that we created. Remember in any ADF application we need to define application policies so that they can be granted to individual users. We start with assigning the following privileges to the <strong>BIEERoleUser</strong></p>
<p style="clear: both">1. resourceType=oracle.bi.server.permission,resourceName=oracle.bi.server.queryUserPopulation</p>
<p style="clear: both">This basically provides an ability to query the BI Server repository.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_12-thumb11.png" alt="" width="379" height="276" />Lets assign this privilege to the BIEERoleUser application role.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_13-thumb6.png" alt="" width="380" height="208" />In the same way lets assign the following privileges to the BIEERoleRPDAdmin and BIEERoleWebCatAdmin</p>
<p style="clear: both">For <strong>BIEERoleRPDAdmin</strong></p>
<p style="clear: both">1. resourceType=oracle.bi.server.permission,resourceName=oracle.bi.server.ManageRepositories</p>
<p style="clear: both">For <strong>BIEERoleWebCatAdmin</strong></p>
<p style="clear: both">1. resourceType=oracle.bi.server.permission,resourceName=oracle.bi.server.queryUserPopulation</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_14-thumb4.png" alt="" width="380" height="28" />Now that the roles have the right privileges, lets go back to the Application Role screen and start assigning the 3 users to each of these roles.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_15-thumb4.png" alt="" width="380" height="163" />After assigning these, if you try to login to the repository in online mode, only the user bieerpdadmin can login. We have satisfied one requirement, that is we have created a user who is the repository admin. For presentation services, by default during install the privileges in presentation services get assigned to only 3 default groups BIAdministrator, BIAuthor and BIConsumer. So, to make bieewebcatadmin a true webcatalog administrator we have to go to the Application Roles and add the BIAuthor &amp; BIAdministrator role to BIEERoleWebCatAdmin</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_17-thumb3.png" alt="" width="380" height="157" />This will automatically make the user bieewebcatadmin user to be the administrator of the webcatalog. Initially it is mandatory to assign a new role to the BIAdministrator role as that is pre-configured to be the only role having access to Privileges in Presentation Services. Granting BIAdministrator to a role also opens up the access to the repository. This can be disabled as well. It is not necessary to always create new roles and assign policies to them. Existing roles can be re-used and re-assigned. The entire security model is now more aligned with Oracle Platform Security framework so that all the fusion applications can integrate with each other seamlessly.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/26/oracle-bi-ee-11g-authentication-authorization-weblogic-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle BI EE 11g &#8211; BI Server Upgrade Considerations</title>
		<link>http://www.rittmanmead.com/2010/08/25/oracle-bi-ee-11g-bi-server-upgrade-considerations/</link>
		<comments>http://www.rittmanmead.com/2010/08/25/oracle-bi-ee-11g-bi-server-upgrade-considerations/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 05:53:10 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5571</guid>
		<description><![CDATA[One of the important points to consider when moving from BI EE 10g to 11g is in understanding the BI Server behavior changes. Though there are quite a lot of changes in the underlying code for performance improvement etc, introduction of new features in 11g can potentially alter your generated queries in 11g. In this [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">One of the important points to consider when moving from BI EE 10g to 11g is in understanding the BI Server behavior changes. Though there are quite a lot of changes in the underlying code for performance improvement etc, introduction of new features in 11g can potentially alter your generated queries in 11g. In this blog entry i will basically cover 2 main important changes that have been introduced in 11g. There are more actually, but that is something we will try to cover in our training days event.</p>
<p style="clear: both"><strong>1. Level Based Measures at Detail Level:</strong></p>
<p style="clear: both">One significant change in 11g is the handling of level based measures at the detail level. For example, lets consider a measure AMOUNT_SOLD that is assigned to the detail day level of the date dimension.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_18-thumb3.png" alt="" width="380" height="174" />In 10g, whenever we bring this column for reporting, we would basically see something as shown below i.e. the level will always be enforced.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_21-thumb4.png" alt="" width="272" height="308" />In the case of 11g, there are 2 types of behavior</p>
<p style="clear: both">a. If the report contains normal attribute columns and when the query is at a grain higher than the measure grain (say the report is at the Year level), then normal aggregation will be applied and the level will not be enforced like in 10g. An example screenshot is given below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_19-thumb4.png" alt="" width="239" height="110" />b. If the report contains hierarchical columns, then if the query is at higher grain than the measure, the measure values will become null. The values will appear at that grain or below. An example screenshot is given below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_20-thumb4.png" alt="" width="380" height="244" /><strong>2. Priority Groups &amp; Order of LTS:</strong></p>
<p style="clear: both">In 11g, there is a new concept called Priority Groups. In 10g, the LTS that determines the final query is dependent on the ordering of the LTS in the dimension logical table(in most cases &#8211; but there are cases where we cannot be always be sure to guarantee this behavior). But in 11g, this is determined by the priority order set in each and every LTS.</p>
<p style="clear: both">For example, lets consider a case where there are 2 aliases for the same dimension CHANNELS as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_22-thumb2.png" alt="" width="305" height="169" />In the business model and mapping layer, lets assume that both the LTS are mapped to all the columns. Both the LTS are at the same detail level. Now, lets assign a priority group of 0 for the Channel Alias &#8211; B LTS and a priority group of 1 for the Channel Alias &#8211; A LTS. Also the SALES LTS of the Fact table will also be assigned to the priority group 0. In 11g, the LTS with the least number is considered as the one that has to be chosen for querying (highest priority)</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_23-thumb2.png" alt="" width="308" height="458" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_24-thumb4.png" alt="" width="282" height="462" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_25-thumb4.png" alt="" width="280" height="458" />Now, lets create a report containing columns from Channels dimension and the Sales fact.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_26-thumb2.png" alt="" width="353" height="92" /><br />
If you look at the query of the report, you will notice that Channels Alias &#8211; B will be chosen as it is the one having the highest priority.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_27-thumb4.png" alt="" width="380" height="141" />Lets now go back to the repository and reassign the highest the priority to Channels Alias &#8211; A as shown below</p>
<p style="clear: both">
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_28-thumb2.png" alt="" width="282" height="462" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_29-thumb2.png" alt="" width="305" height="468" />For the same report, if you look at the query now, you will notice that Channels Alias &#8211; A will be chosen instead of the B alias.</p>
<p style="clear: both">
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_32-thumb2.png" alt="" width="377" height="133" /></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/25/oracle-bi-ee-11g-bi-server-upgrade-considerations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle BI EE 11g &#8211; Parent-Child Hierarchies &#8211; Differing Aggregations</title>
		<link>http://www.rittmanmead.com/2010/08/24/oracle-bi-ee-11g-parent-child-hierarchies-differing-aggregations/</link>
		<comments>http://www.rittmanmead.com/2010/08/24/oracle-bi-ee-11g-parent-child-hierarchies-differing-aggregations/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 06:10:15 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5542</guid>
		<description><![CDATA[Mark has already explained the new Parent-Child hierarchy new feature in 11g here. Parent Child hierarchies are different from normal level based hierarchies not only in the nature of their structure but also in the way aggregations are done. For example, in a level based hierarchy, the most common type of aggregation that is done [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Mark has already explained the new Parent-Child hierarchy new feature in 11g <a href="http://www.rittmanmead.com/2010/07/12/obiee-11gr1-support-for-ragged-skip-level-value-based-hierarchies/" target="_blank">here</a>. Parent Child hierarchies are different from normal level based hierarchies not only in the nature of their structure but also in the way aggregations are done. For example, in a level based hierarchy, the most common type of aggregation that is done involves rolling up the numbers from the lower most level. But in the case of parent-child hierarchy, an aggregation by default enforces the roll-up across all descendant members. To understand this lets try to take this through an example.</p>
<p style="clear: both">Lets consider a sales department with the employee hierarchy shown below</p>
<p style="clear: both"><a class="image-link" href="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_21.png"><img class="linked-to-original" style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_2-thumb7.png" alt="" width="122" height="430" /></a>Its a simple parent child employee hierarchy found in the oracle HR schema. Now the requirement for us is to model the Salary attribute of an employee in 3 ways</p>
<p style="clear: both">1. As an attribute &#8211; Show the salary of each employee as an attribute in the parent child hierarchy.<br />
2. As a measure (All intermediary Roll-ups) &#8211; Roll-up the salary figures of all the employees who roll into the employee. For example, Scott King will have a Salary equal to sum of salaries of all the employees who report to him, including the ones who are his direct &amp; in-direct reporting employees.<br />
3. As a measure (Level-0 Roll-up) &#8211; Roll-up the salary figures from the lower most level till the top node For example, in the above figure, Scott King will have a Salary Roll-up figure of all the employees who are the lowermost level (not including the intermediary nodes &#8211; very similar to normal level based hierarchy roll-ups)</p>
<p style="clear: both">The above requirement is quite straightforward, but to achieve similar such aggregations in a normal level-based hierarchy, we will have introduce fragmentation &amp; other techniques. But with parent-child hierarchy modeling now available in BI EE, all the above 3 requirements can quite easily be achieved.</p>
<p style="clear: both">Following is the employees parent child table that stores all the attributes of an employee</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_3-thumb5.png" alt="" width="380" height="131" />We start off with modeling this as a normal dimension table. As shown in Mark&#8217;s blog entry, we then create the Parent-Child table that stores all the relationships within the employee hierarchy (if you look at the script used in creating this, it will be containing a Connect By statement that will connect a root hierarchical node to every member that is part of its hierarchy).</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_4-thumb7.png" alt="" width="380" height="183" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_5-thumb8.png" alt="" width="351" height="280" />Once this is created, we start with including the Salary as an attribute within the Employee dimension itself</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_6-thumb9.png" alt="" width="168" height="131" />This will serve our first requirement i.e show salary as an attribute of every employee. Now, to model the 2nd requirement i.e. to model salary as a measure and then make it to rollup from all the intermediary hierarchical members, we start with defining an alias on the main Employee table. Then join this table to the custom parent child employee table. The join structure of all the 3 tables is given below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_7-thumb9.png" alt="" width="224" height="338" />We would then be using the salary column from the new employee alias table in our logical fact table as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_8-thumb10.png" alt="" width="242" height="87" />Lets now look at the report now and see what BI EE generates.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_9-thumb7.png" alt="" width="258" height="435" />As you see, BI EE has generated the correct results with the roll-up of intermediary members as well. This is something that is quite difficult to model in BI EE 10g. If we look at the query generated (just the key one that generates the measure as BI EE now generates lots of intermediary sub-queries to support contextual drilling) you would notice that the default Parent-Child behavior is to achieve a roll-up across a hierarchy</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_10-thumb8.png" alt="" width="380" height="129" />To achieve the 3rd requirement i.e. to model a level based hierarchy kind of rollups from level-0, we create another alias in the physical layer and then model it the same way as the 2nd requirement. In the fact logical table, we then create a new measure that will map to the new physical alias as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_11-thumb7.png" alt="" width="246" height="119" />To ensure that we roll-up only from level-0 members, we then apply a filter in the fact logical table source as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_12-thumb4.png" alt="" width="380" height="292" />Lets now take a look at what BI EE generates</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_13-thumb4.png" alt="" width="380" height="380" />As you see, BI EE now generates the roll-ups only from level-0 members as against every descendant. We can have even more granular roll-ups based on custom defined attributes.</p>
<p style="clear: both">
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/24/oracle-bi-ee-11g-parent-child-hierarchies-differing-aggregations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Masterclass Dates, Including Australia and Singapore</title>
		<link>http://www.rittmanmead.com/2010/08/23/new-masterclass-dates-including-australia-and-singapore/</link>
		<comments>http://www.rittmanmead.com/2010/08/23/new-masterclass-dates-including-australia-and-singapore/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 11:00:31 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5496</guid>
		<description><![CDATA[As well as the three Rittman Mead OBIEE 11g Training Days events we&#8217;re running in London, Atlanta and Bangalore later this year, I&#8217;ve also agreed to do a number of Enterprise Business Intelligence Masterclasses for Oracle University, including a visit down to Australia and Singapore. These events are seminar-style, cover OBIEE 11g as well as [...]]]></description>
			<content:encoded><![CDATA[<p>As well as the three Rittman Mead OBIEE 11g Training Days events we&#8217;re running in London, Atlanta and Bangalore later this year, I&#8217;ve also agreed to do a number of Enterprise Business Intelligence Masterclasses for Oracle University, including a visit down to Australia and Singapore. These events are seminar-style, cover OBIEE 11g as well as OWB11gR2/ODI 11gR1 and a bit of Essbase 11.1.2, and are an ideal high-level introduction to the technology behind the Oracle 11g BI&#038;DW technology stack.</p>
<p><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/mr_ou_bi.png" alt="mr_ou_bi" title="mr_ou_bi" width="513" height="399" class="aligncenter size-full wp-image-5497" /></p>
<p>More dates will be announced over the next few months, but for now, here&#8217;s the current set of confirmed dates and venue:</p>
<ul>
<li><a href="http://education.oracle.com/pls/web_prod-plq-dad/show_desc.redirect?dc=D70365_1315092&#038;p_org_id=41&#038;lang=NL&#038;source_call=">De Meern (Utrecht), Netherlands, 10-11 November 2010</a></li>
<li><a href="http://education.oracle.com/pls/web_prod-plq-dad/show_desc.redirect?dc=D70365_1315092&#038;p_org_id=11&#038;lang=SK&#038;source_call=">Bratislava, Slovakia, 25-26 November 2010</a></li>
<li><a href="http://www.oracle.com/global/au/education/eblast/au_markrittman.html">Melbourne, Australia, 6-7 December 2010</a></li>
<li><a href="http://www.oracle.com/global/au/education/eblast/au_markrittman.html">Sydney, Australia, 9-10 December 2010</a></li>
<li><a href="http://www.oracle.com/global/sg/education/eblast/sg_markrittman.html">Singapore, Singapore, 13-14 December 2010</a></li>
<li><a href="http://education.oracle.com/pls/web_prod-plq-dad/show_desc.redirect?dc=D70365_1315092&#038;p_org_id=37&#038;lang=N&#038;source_call=">Oslo, Norway, 14-15 February 2011</a></li>
</ul>
<p>I&#8217;ll post details of any future events on our <a href="http://www.rittmanmead.com/events/">Events</a> website page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/23/new-masterclass-dates-including-australia-and-singapore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle BI EE 11g &#8211; Upgrading from BI EE 10g &#8211; Repository &amp; Web Catalog</title>
		<link>http://www.rittmanmead.com/2010/08/23/oracle-bi-ee-11g-upgrading-from-bi-ee-10g-repository-web-catalog/</link>
		<comments>http://www.rittmanmead.com/2010/08/23/oracle-bi-ee-11g-upgrading-from-bi-ee-10g-repository-web-catalog/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 03:49:14 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5512</guid>
		<description><![CDATA[BI EE 11g is a significant feature filled release when compared with the previous 10g release. Most customers who are planning to upgrade to 11g have an automated way of upgrading their 10g Web Catalogs and repositories to the 11g version. When moving from 10g to 11g, we will have to go through the upgrade [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">BI EE 11g is a significant feature filled release when compared with the previous 10g release. Most customers who are planning to upgrade to 11g have an automated way of upgrading their 10g Web Catalogs and repositories to the 11g version. When moving from 10g to 11g, we will have to go through the upgrade utility as there are significant changes to the repository structure and the web catalog structures. A direct copy &amp; paste into the 11g version will not work.</p>
<p>The upgrade process involves the following steps</p>
<p>1. Install the new 11g version in either the same machine or a different machine.<br />
2. Run the upgrade assistant utility to upgrade the repository &amp; Web Catalogs.<br />
3. Migrate other 10g specific customizations manually to the 11g instance. The different customizations are</p>
<p>a. Any Static files added to the 10g app server<br />
b. Custom XML messages<br />
c. Styles &amp; Skins (The upgrades for this will have to be done carefully as some CSS &amp; files have changed in this release)</p>
<p>4. Upgrade the Scheduler schema (Both BI Delivers &amp; BI Publisher) through the upgrade utility<br />
5. Upgrade BI Publisher</p>
<p>In this blog entry we shall see how to go about upgrading the RPD and Web Catalogs from the 10g to the 11g version. After installing 11g, start up the upgrade assistant utility from {ORACLE_HOME}/bin/ua (or ua.bat if you are on windows)</p>
<p style="clear: both">
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_6-thumb7.png" alt="" width="380" height="284" />The upgrade assistant can be used to upgrade the scheduler schema, BI Publisher as well as the RPD &amp; Web Catalogs. Lets start with the first option, i.e. upgrading RPD and Web Catalogs</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_7-thumb7.png" alt="" width="380" height="280" />In the upgrade screen, choose the 10g RPD along with the Web Catalog Path. In the Deliveries folder, choose the 10g deliveries path ({OracleBIData}/web/catalog/deliveries</p>
<p style="clear: both">
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_8-thumb8.png" alt="" width="380" height="283" />In the next screen, provide the details of the weblogic server on which we will be deploying the Repository and Web Catalog to.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_9-thumb5.png" alt="" width="379" height="283" />The upgrade utility does not seem to support remote deployments of the RPD and Web Catalog i.e. Upgrade Utility will only deploy the repository and web catalog on the machine containing the weblogic admin server.</p>
<p style="clear: both">The upgrade process will stop all the components first and then will do the individual RPD and Web Catalog Upgrade.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_10-thumb6.png" alt="" width="379" height="283" />This is just a utility. We cannot expect all the reports to start working out of the box immediately after an upgrade. Good amount of testing is required to make sure all the older queries of the most commonly used reports are working without any major issues. Also, not all the reports would get migrated seamlessly due to the significant changes across the versions which the utility cannot recognize. Care has to be taken to make sure that all the warnings logged as part of the upgrade process are properly analyzed and corrected manually. A sample upgrade log is shown below (containing 4 warnings)</p>
<p style="clear: both">
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_11-thumb5.png" alt="" width="380" height="250" /></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/23/oracle-bi-ee-11g-upgrading-from-bi-ee-10g-repository-web-catalog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle BI EE 11g &#8211; Reporting on CLOBs &#8211; Lookups</title>
		<link>http://www.rittmanmead.com/2010/08/20/oracle-bi-ee-11g-reporting-on-clobs-lookups/</link>
		<comments>http://www.rittmanmead.com/2010/08/20/oracle-bi-ee-11g-reporting-on-clobs-lookups/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 09:00:14 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5493</guid>
		<description><![CDATA[One important new feature of BI EE 11g is the ability to report on CLOBs and other large objects. The main difference between normal Varchar/Numeric columns and LOB datatype columns is, LOB columns do not support GROUP BY, DISTINCT &#38; ORDER BY operations on them (from a reporting perspective). Any query that BI EE generates [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">One important new feature of BI EE 11g is the ability to report on CLOBs and other large objects. The main difference between normal Varchar/Numeric columns and LOB datatype columns is, LOB columns do not support GROUP BY, DISTINCT &amp; ORDER BY operations on them (from a reporting perspective). Any query that BI EE generates will always have a GROUP BY or a DISTINCT in it. So, in 10g reporting on LOB columns have always been an issue(will result in Ora-XXXX errors). One had to resort to different types of workarounds for reporting on LOB columns.</p>
<p style="clear: both">In BI EE 11g, its possible to isolate different columns from the GROUP BY/DISTINCT operations by using the SPARSE/DENSE lookup operators. I have already blogged about how Sparse &amp; Dense lookups work in general <a href="http://www.rittmanmead.com/2010/08/17/oracle-bi-ee-11g-lookup-tables-sparse-and-dense-lookups/" target="_blank">here</a>. Lets see how the same can be used for CLOB reporting. To demonstrate this i shall be using the v$sql view. This view basically contains a CLOB called SQL_FULLTEXT. This column contains the SQL queries stored in the form of CLOB, that are fired to the Oracle database by multiple users. Our aim is to report on this view and display the SQL Queries from the CLOB column.</p>
<p style="clear: both">We start with granting select on the v_$sql view to SH schema and then importing it in BI EE.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_19-thumb2.png" alt="" width="235" height="325" />Then edit the column properties of the SQL_FULLTEXT column and increase the size to 100000 (or higher) so that BI EE can display the values from CLOB.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_20-thumb2.png" alt="" width="381" height="263" />Start with modeling a dimension and a fact in the BMM layer as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_21-thumb2.png" alt="" width="207" height="218" />Then create another logical table (same as the dimension) containing SQL_ID as the primary key. The idea is to use this primary key and show the SQL_FULLTEXT using a DENSE lookup. Mark the new logical table as a lookup table.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_24-thumb2.png" alt="" width="417" height="370" />In the dimension logical table create a new column and use the following formula to derive the SQL_FULLTEXT as a lookup column. This will always push a separate SQL without DISTINCT/GROUP BYs on the SQL_FULLTEXT column.</p>
<pre style="clear: both">Lookup
(DENSE
"LOB Reporting"."Lookup - CLOB"."SQL Full Text" ,
"LOB Reporting"."Lookup - CLOB"."SQL ID" )</pre>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_25-thumb2.png" alt="" width="420" height="447" />Lets now include this new column in the presentation layer and use it for reporting.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_26-thumb11.png" alt="" width="499" height="410" />As you see, we should now be able to see the CLOB data without any restrictions. If we look at the query generated, you can basically see 2 separate SQL queries, one with the group-by and the other with just the lookup.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_27-thumb2.png" alt="" width="349" height="224" /></p>
<pre style="clear: both">select sum(T43900.ROWS_PROCESSED) as c1,
     T43900.SQL_ID as c2
from
     SYS.V_$SQL T43900
group by T43900.SQL_ID</pre>
<pre style="clear: both">select T43900.SQL_FULLTEXT as c1,
     T43900.SQL_ID as c2
from
     SYS.V_$SQL T43900</pre>
<p>In BI EE 11g, usage tracking can now log logical sql&#8217;s greater than 4000 characters into a separate CLOB column.<br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/20/oracle-bi-ee-11g-reporting-on-clobs-lookups/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle BI EE 11g &#8211; Map Views &#8211; Integration with Mapviewer</title>
		<link>http://www.rittmanmead.com/2010/08/19/oracle-bi-ee-11g-map-views-integration-with-mapviewer/</link>
		<comments>http://www.rittmanmead.com/2010/08/19/oracle-bi-ee-11g-map-views-integration-with-mapviewer/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 13:27:45 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5475</guid>
		<description><![CDATA[One of the biggest new features in BI EE 11g is the ability to create native mapviewer maps and then overlay reporting components/visualizations on top of maps. For example if you are doing a country based sales analysis, its easy to color code each country across the world right within the maps. It is also [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">One of the biggest new features in BI EE 11g is the ability to create native mapviewer maps and then overlay reporting components/visualizations on top of maps. For example if you are doing a country based sales analysis, its easy to color code each country across the world right within the maps. It is also possible to overlay pie charts, bar charts in the maps thereby providing an extensive visual analysis capability. In 10g, one had to go through some complex java scripting to achieve BI EE and mapviewer integration. I have blogged about it <a href="http://oraclebizint.wordpress.com/2007/09/25/oracle-bi-ee-10133-and-mapviewer-step-by-step-integration-phase1/" target="_blank">here</a> and <a href="http://oraclebizint.wordpress.com/2007/09/26/oracle-bi-ee-10133-and-mapviewer-step-by-step-integration-phase2-phase3/" target="_blank">here</a>. 11g makes this entire integration a lot easier.</p>
<p style="clear: both">Lets try to understand the integration through a simple example. Shown below is a report of Sales performance of 3 US states across 4 years.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_1-thumb4.png" alt="" width="344" height="257" />We would like to depict this using a map as shown below.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_15-thumb2.png" alt="" width="500" height="355" />As you see we have 2 visualizations applied on the same map. The first one is a different color coding for each of the 3 states depending on the sales performance. The other is a pivot representation of yearly performance for each state, all within a single map.</p>
<p style="clear: both">To do this we start with enabling the Mapviewer integration by updating the instanceconfig.xml to include the following tags (in each presentation server)</p>
<blockquote>
<p style="clear: both">&lt;SpatialMaps&gt;<br />
&lt;ColocatedOracleMapViewerContextPath&gt;/mapviewer&lt;/ColocatedOracleMapViewerContextPath&gt;<br />
&lt;RemoteOracleMapViewerAbsoluteURL&gt;&lt;/RemoteOracleMapViewerAbsoluteURL&gt; &lt;LayerDataLayout&gt;<br />
&lt;MaxRecords&gt;600&lt;/MaxRecords&gt;<br />
&lt;/LayerDataLayout&gt;<br />
&lt;/SpatialMaps&gt;</p></blockquote>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_16-thumb.png" alt="" width="500" height="156" />Then we need to restart the presentation service. This enables the connectivity between BI EE and Mapviewer. After enabling the integration, we then import the standard spatial <a href="http://download.oracle.com/otn/other/mapviewer/mvdemo.zip" target="_blank">MVDemo</a> schema into the Oracle Database. This schema contains Layers, Themes and some Base maps for all the major US States, Cities &amp; some inter-state highways. After importing and installing the MVDemo schema, we need to download the Mapbuilder application which will enable us to create a custom map. We will be using this map for rendering in BI EE. The Mapbuilder application can be downloaded from <a href="http://www.oracle.com/technetwork/middleware/mapviewer/downloads/index-100641.html" target="_blank">here</a>.</p>
<p style="clear: both">After downloading the Mapbuilder app, we start the application and login to the MVDemo schema. By default this schema contains a lot of built-in themes, Base Maps and Tile Layers.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_17-thumb1.png" alt="" width="278" height="680" />We start off with creating a simple Base Map called STATE_MAP which will be using 2 out of the box themes THEME_DEMO_STATES and THEME_DEMO_STATES_LINE</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_18-thumb1.png" alt="" width="334" height="483" />This step will enable us to render all the US States and its boundaries within a very simple map as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_19-thumb.png" alt="" width="482" height="218" />Once the base map is created, lets create a new tile layer called STATE_TILE_MAP which will use this base map for rendering. We can define all the zoom levels, boundaries etc within the tile layer</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_20-thumb.png" alt="" width="422" height="157" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_21-thumb.png" alt="" width="420" height="360" />Now we have a map that can show all the US states and its boundaries. We need to now expose this map to the mapviewer application (as an admin user through Mapviewer admin screen) by taking it online as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_22-thumb.png" alt="" width="500" height="220" />Now the map is available for consumption through BI EE. Remember, the theme that we used above, THEME_DEMO_STATES has an identifier called STATE_ABBR which is basically the key that we need to pass from BI EE. Relationship between BI EE repository columns/subject areas and Mapviewer maps are done from the Manage Map Data screen in the presentation services admin console.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_23-thumb.png" alt="" width="406" height="360" />In this screen, we need to import the layers, maps and the images that we want to include as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_24-thumb.png" alt="" width="500" height="188" />Edit the THEME_DEMO_STATES theme and map the State column from the repository. There need not be any relation between the column used in spatial and the column mapped in BI EE. All we need to ensure is the attributes should match. In my case, the State abbreviations come from the SH schema and the THEME_DEMO_STATES come from STATES table in the MVDemo schema.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_25-thumb.png" alt="" width="500" height="188" />Then navigate to the STATE_TILE_MAP in the background maps and add the THEME_DEMO_STATES again.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_26-thumb.png" alt="" width="500" height="65" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_27-thumb.png" alt="" width="377" height="310" />This establishes a relationship between the Subject Area and the Map thereby enabling us to add the mapview from answers. After doing this, lets create the report from the SH schema containing just the 3 states for 4 years.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_28-thumb.png" alt="" width="328" height="255" />Use the new Map View option to create the map.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_29-thumb.png" alt="" width="307" height="216" />This will render the map that we created in mapviewer. If you notice carefully, it will automatically apply some color coding to the 3 states that are part of the report.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_2-thumb5.png" alt="" width="498" height="305" />The color coding is actually part of default visualization that Map Views apply on a map. Lets change this to something as shown below</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_31-thumb.png" alt="" width="448" height="439" />Lets now create one more pie chart visualization (for obtaining the yearly breakup of sales in all the 3 states)</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_32-thumb.png" alt="" width="238" height="244" />Lets use the Year as the column providing the necessary slices for the pie charts</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_33-thumb.png" alt="" width="284" height="244" />This will give us the necessary visualization using Mapviewer.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_34-thumb.png" alt="" width="462" height="166" />Though there are a lot of steps involved, majority of the steps are for setting up the mapviewer. Once we have the maps set up the entire process of adding visualization to maps is quite straight forward.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/19/oracle-bi-ee-11g-map-views-integration-with-mapviewer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Training Days 2010 Bangalore &#8211; Now Hands-On!</title>
		<link>http://www.rittmanmead.com/2010/08/18/training-days-2010-bangalore-now-hands-on/</link>
		<comments>http://www.rittmanmead.com/2010/08/18/training-days-2010-bangalore-now-hands-on/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 14:48:52 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[User Groups & Conferences]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5425</guid>
		<description><![CDATA[I&#8217;m pleased to announce that, in line with the London and Atlanta Oracle BI 11g Training Days events, our event in Bangalore will now be hands-on.
As a reminder, the Rittman Mead Oracle BI 11g Training Days event is three-day of intense, hands-on technical training on the new 11g release of Oracle Business Intelligence. Over the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce that, in line with the London and Atlanta Oracle BI 11g Training Days events, our event in Bangalore will now be hands-on.</p>
<p>As a reminder, the Rittman Mead Oracle BI 11g Training Days event is three-day of intense, hands-on technical training on the new 11g release of Oracle Business Intelligence. Over the three days, you&#8217;ll learn how to install and configure OBIEE 11g, create the metadata repository, create reports and dashboards, and use new features such as scorecards and the action framework. Aimed at developers with some experience with OBIEE 10g, and covering things at a fast pace, this is ideal training for BI developers looking to get up to speed quickly with the 11g release. Full details of the agenda can be found at <a href="http://www.rittmanmead.com/trainingdays 2010">http://www.rittmanmead.com/trainingdays 2010</a>, and the event is running at the Fortune Select Trinity Hotel, Bengaluru (Bangalore), India, on November 15th, 16th, 17th 2010.</p>
<p>To take part in the hands-on labs, you will need to bring a laptop with the following minimum specification:</p>
<ul>
<li>3GB of RAM (4GB+ if you intend to use VMWare for your environment, 6GB+ is preferable)</li>
<li>50GB of free disk space</li>
<li>Windows XP SP2 Professional, Windows Server 2003 Enterprise Edition or higher. Note that we have not tested against Windows Vista or Windows 7, and our preferred OS version is Windows Server 2003 Enterprise Edition</li>
<li>Either Firefox 3, or IE7 or higher (IE6 is not supported for OBIEE 11g)</ul>
<p>You will also need to download OBIEE 11g prior to the event, and bring it along with you (either under your own company&#8217;s license, or the OTN trial license). We cannot distribute Oracle software at the event.</p>
<p>If you would like to reserve a place, contact us at <a href="mailto:trainingdays2010@rittmanmead.com">trainingdays2010@rittmanmead.com</a>. Places are limited to 30, and around 15 have already been reserved as of now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/18/training-days-2010-bangalore-now-hands-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle BI EE 11g &#8211; Handling Double Columns &#8211; ID/Description interoperability</title>
		<link>http://www.rittmanmead.com/2010/08/18/oracle-bi-ee-11g-handling-double-columns-iddescription-interoperability/</link>
		<comments>http://www.rittmanmead.com/2010/08/18/oracle-bi-ee-11g-handling-double-columns-iddescription-interoperability/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 03:46:10 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=5421</guid>
		<description><![CDATA[The other big change in BI EE 11g as mentioned before here, is the ability to assign ID columns for descriptive columns more commonly known as Double Columns. This feature has 2 fold advantages
1. In BI EE 10g, there was no automated way of filtering on ID&#8217;s when end users chose the description values in [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">The other big change in BI EE 11g as mentioned before <a href="http://www.rittmanmead.com/2010/08/14/oracle-bi-ee-11g-%e2%80%93-bi-server-new-features/" target="_blank">here</a>, is the ability to assign ID columns for descriptive columns more commonly known as Double Columns. This feature has 2 fold advantages</p>
<p style="clear: both">1. In BI EE 10g, there was no automated way of filtering on ID&#8217;s when end users chose the description values in the prompts. The Double column feature provides this ability in 11g.</p>
<p style="clear: both">2. In many implementations where data is captured in multiple languages, the descriptions might be stored in different languages. But the filtering of data will be on ID&#8217;s (which will be the same across languages). Double column feature provides that ability now.</p>
<p style="clear: both">Lets try to put this feature to use by using a simple example. We shall be using the Sales Warehouse schema (SH) that comes by default with an Oracle database installation. The screenshot below shows 3 columns from the CHANNELS dimension. One column is CHANNEL_DESC which contains the channel details in English. The second column in CHANNEL_DESC_FR which contains the channel details in French. And the third column is the CHANNEL_ID that acts as an id to both the french and english descriptions.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_1-thumb2.png" alt="" width="380" height="77" />Our idea is to create 2 prompts, one in french and the other in English, and then using these 2 to filter on 2 separate reports. To do this we start with assigning the CHANNEL_ID column as the descriptor ID column in the Business Model and Mapping layer for both CHANNEL_DESC and CHANNEL_DESC_FR columns.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_2-thumb3.png" alt="" width="380" height="227" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_3-thumb3.png" alt="" width="380" height="225" />Once this is done, lets go to BI EE UI and create 2 dashboard prompts. Ideally its not necessary to use 2 prompts as we can use INDEXCOL function in the repository to switch between columns based on the user preference language, but for demonstration, i will create 2 prompts.</p>
<p style="clear: both">The first dashboard prompt will point to the French description field. When we include this column in the prompt, you will notice that the prompt will automatically show the Included ID column as well.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_4-thumb5.png" alt="" width="380" height="249" />Now, if you look at the options section, we now have the ability to display the Descriptor ID as well.</p>
<p style="clear: both">Lets enable that option as well so that users who are more familiar with the ID&#8217;s will have the ability to toggle between the description and the ID.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_5-thumb6.png" alt="" width="380" height="432" />Lets save this prompt and create another prompt that is similar to the above prompt but with CHANNEL_DESC as the source column.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_6-thumb5.png" alt="" width="380" height="433" />Lets now create a simple report in Answers containing Year, Product Category and Sales columns. And lets apply the channel filter (on English) as well. When you create the prompt, you will notice that for static filters you can now enforce the filtering on IDs directly. But for this blog entry, lets use the is prompted filter.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_7-thumb5.png" alt="" width="380" height="274" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_8-thumb5.png" alt="" width="380" height="293" />If you now, bring the report and the prompt in a dashboard, end users will now have the ability to filter on the description as well as the ID.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_10-thumb4.png" alt="" width="240" height="156" />If you enable the Select by ID check box, you will notice that the drop down will now have the ID and the description concatenated for easy selection.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_8-thumb7.png" alt="" width="282" height="112" /></p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_11-thumb3.png" alt="" width="221" height="160" />Same will be the case for French descriptions as well.</p>
<p style="clear: both"><img style=" text-align: center; display: block; margin: 0 auto 10px;" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/08/Picture_12-thumb2.png" alt="" width="248" height="159" />Lets first choose the French Descriptions and then see, in terms of SQL how the query filter is generated</p>
<pre style="clear: both">WITH SAWITH0 AS
(select sum(T69590.AMOUNT_SOLD) as c1,
T69588.PROD_CATEGORY as c2,
T69591.CALENDAR_YEAR as c3,
T69591.CALENDAR_YEAR_ID as c4
from SH.TIMES T69591,
SH.PRODUCTS T69588,
SH.CHANNELS T69584,
SH.SALES T69590
where ( T69584.CHANNEL_ID = T69590.CHANNEL_ID
and T69588.PROD_ID = T69590.PROD_ID
and T69590.TIME_ID = T69591.TIME_ID
and (T69584.CHANNEL_ID in (2, 4)) and
(T69590.CHANNEL_ID in (2, 4)) )
group by T69588.PROD_CATEGORY,
T69591.CALENDAR_YEAR, T69591.CALENDAR_YEAR_ID),
SAWITH1 AS
(select distinct 0 as c1,
D1.c2 as c2,
D1.c3 as c3, D1.c1 as c4, D1.c4 as c5
from
SAWITH0 D1)
select D1.c1 as c1,
 D1.c2 as c2,
 D1.c3 as c3,
 D1.c4 as c4
from SAWITH1 D1
order by c1, c3, c2</pre>
<p style="clear: both">As you notice, though we have chosen the descriptions in the UI, the filters are automatically pushed to the IDs. Same will be the case for filtering on IDs as well.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/08/18/oracle-bi-ee-11g-handling-double-columns-iddescription-interoperability/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
