<?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 &#187; Uncategorized</title>
	<atom:link href="http://www.rittmanmead.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rittmanmead.com</link>
	<description>Delivered Intelligence</description>
	<lastBuildDate>Wed, 17 Mar 2010 20:23:43 +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>Multiple OBIEE Environments</title>
		<link>http://www.rittmanmead.com/2010/03/10/multiple-obiee-environments/</link>
		<comments>http://www.rittmanmead.com/2010/03/10/multiple-obiee-environments/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 08:49:23 +0000</pubDate>
		<dc:creator>Adrian Ward</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4499</guid>
		<description><![CDATA[For any large OBIEE project the normal set-up would involve having a development machine, a test machine, Production machines and some form of disaster recovery.  These normally need to be on separate physical machines, mainly for access rights reason and of course the DR machines need to be in a separate building (hopefully in [...]]]></description>
			<content:encoded><![CDATA[<p>For any large OBIEE project the normal set-up would involve having a development machine, a test machine, Production machines and some form of disaster recovery.  These normally need to be on separate physical machines, mainly for access rights reason and of course the DR machines need to be in a separate building (hopefully in a separate city!)</p>
<p>Did you know that you can have multiple OBIEE environments, but without buying new boxes?</p>
<h2>Why do I need multiple Environments?</h2>
<p>I am not suggesting that development and Production are on the same box, but there are situations that demand environments, such as:</p>
<p><em><span style="color: #000080">Multiple Projects</span> </em>- The success of many a good OBIEE project will often lead to other departments in the organisation wanting in on the action.  Rather than build a whole new development, UAT and Production box you can just add more services to the existing one.</p>
<p><em><span style="color: #000080">Clustering </span></em>- although you often cluster for performance, you should also cluster for availability.  The normal process is cluster over two or more boxes, but you can also cluster on the same box across users.</p>
<p><span style="color: #000080"><em>Development Cycles</em></span> &#8211; Sometimes you need to create and test a version of your config (rpd /webcat) for a particular release, but carry on developing for the next release.  This calls for multiple development environments.</p>
<p><span style="color: #000080"><em>Integration Testing </em></span>- You can create your repository, but will it work in UAT and production, particularly if they have SSO and your dev environment does not?  I prefer to have a pre-UAT environment in place for Developer testing, or internal testing teams to use.</p>
<p><span style="color: #000080"><em>Sandbox </em></span>- The last thing you want is for all developers to use the same master development repository to implement new models or methods.  Get the developer to work on their own copy, or new one, in a separate area to prove that it works.</p>
<p><span style="color: #000080"><em>Worldwide Development</em></span> &#8211; I am not a big fan of MUD.  It will work in certain situations, but you normally find that someone hogs the lock on the master repository.  The main issue is new business models.  One way around this is to have a master repository and have developers around the world use a copy to build their sections, then merge in their changes when they are tested.</p>
<p><span style="color: #000080"><em>Production Support</em></span> &#8211; In a controlled environment the developers do not have access to production (I normally set the production rpd to read only just in case!)</p>
<p><span style="color: #000080"><em>Demo Site</em></span> &#8211; To help your users understand what is possible you can install the sample sites and give all your potential users access.</p>
<p><span style="color: #000080"><em>Training Site</em></span> &#8211; To support training you often need to build a separate environment.  You may not want the hassle of whole box to do this on.</p>
<h2>How Do I Create Multiple OBIEE Environments?</h2>
<p><strong>Linux</strong></p>
<p>On a Linux box you can install multiple environments into individul user accounts.  There is no need to use vitualisation.</p>
<p>When you install a new OBIEE into a s<em>eparate user</em> you need to make sure that OC4J is not running.  Other than that it is a normal simple installation.</p>
<p>After install you have to update all the ports in the system, making sure that you have the correct settings for BI Server, Presentation server, Javahost and graph server.  The most important thing is to make sure you do not create spaghetti!  Keep a central document on the environments and all their ports.</p>
<p>You can then update the cluster settings as normal, and put the webcat into a shared area for clustering.</p>
<p>We have created a script that does a silent installation and updates all the ports numbers.</p>
<p><strong>Windows</strong></p>
<p>Now there&#8217;s another story! My advice is stick to Unix or Linux for now.  In theory you can create multiple services to run but I havn&#8217;t tried it yet.  The simple solution would be to use virtualisation.</p>
<p>If you give it a go let me know how you get on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/03/10/multiple-obiee-environments/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fantasy Football &#8211; When is a fact not a Fact?</title>
		<link>http://www.rittmanmead.com/2010/02/02/fantasy-football-when-is-a-fact-not-a-fact/</link>
		<comments>http://www.rittmanmead.com/2010/02/02/fantasy-football-when-is-a-fact-not-a-fact/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 00:13:45 +0000</pubDate>
		<dc:creator>Adrian Ward</dc:creator>
				<category><![CDATA[Dimensional Modelling]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[obiee]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3968</guid>
		<description><![CDATA[An in-depth article on the analysis of facts, when those facts are also used as attributes.]]></description>
			<content:encoded><![CDATA[<p>As you will see from <a href="http://www.rittmanmead.com/2009/12/22/fantasy-football-and-obiee-part-1-you-can-be-statto/" target="_blank">Venkat&#8217;s Football blog</a>, we ran a demo of the OBIEE system at last years UKOUG.  The demo was based upon the English Football Premiership, and although I prefer rugby, using sports in samples is a great way to highlight the features of OBIEE.  It seems that some sports, such as Cricket, American Football and Tennis seem to compete on the number of statistics they can find in a match!</p>
<p>You don&#8217;t need to understand the English football league to understand the demo, however, for football managers there are dozens of facts that can be analysed, and can be related too.<br />
For example, you can run a request to show teams that are level at half time, but go on to lose the game in the second half.  As a coach you may draw from that fitness needs to be improved, along with concentration (more drinks?), and a better half time talk.</p>
<p>So you can use the &#8217;statistics&#8217; to help identify where things are going wrong, and when you are doing the right things, for example losing at away teams far away (change the travel arrangements?).</p>
<p>The great thing with sports stats is that you can also analyse your opponent to find their weaknesses &#8211; do they concede early goals (we have to come out strong and attacking from the whistle).</p>
<p>The other &#8216;interesting&#8217; thing about using sports results in OBIEE is that they clearly demonstrate how facts are sometimes measures and sometimes dimensional attributes&#8230;..</p>
<p>&#8212;</p>
<h3>Reporting on Fact based Dimensional Attributes</h3>
<p>Lets use an example to explore this:<br />
The exam question is this:</p>
<blockquote><p><em>How many games was my team losing at half time, but then went on to win.</em></p></blockquote>
<p>We will then drill into these games to try to understand the cause of this.</p>
<p>Remember the question for later!</p>
<p>The measures we have employed include:</p>
<ul>
<li>Goals scored</li>
<li>Home Team Score at Half Time</li>
<li>Home Team Score at Full time</li>
<li>Away Team Score at Half Time</li>
<li>Away Team Score at Full time</li>
<li>Home Team Red cards,</li>
<li>Home Team Yellow Cards,</li>
<li>etc</li>
</ul>
<p>These measures are set with an aggregation of SUM, but we could also set many of the other aggegations, such as AVERAGE.<br />
If you run the following request,</p>
<p style="text-align: center"><img class="size-medium wp-image-4237 aligncenter" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/02/3-252x300.png" alt="Home Stats" width="252" height="300" /></p>
<p>the SQL generated is:</p>
<address><span style="color: #000080">SELECT T6428.YEAR AS C1,</span></address>
<address><span style="color: #000080">T6428.HOMETEAM AS C2,</span></address>
<address><span style="color: #000080">&#8216;HOME&#8217; AS C3,</span></address>
<address><span style="color: #000080">SUM(T6428.FTHG) AS C4,</span></address>
<address><span style="color: #000080">SUM(T6428.FTAG) AS C5</span></address>
<address><span style="color: #000080">FROM</span></address>
<address><span style="color: #000080">PREMIER_LEAGUE T6428 /* HOME TEAM &#8211; PREMIER LEAGUE */</span></address>
<address><span style="color: #000080">WHERE ( T6428.YEAR = &#8216;2009&#8242; )</span></address>
<address><span style="color: #000080">GROUP BY T6428.HOMETEAM, T6428.YEAR</span></address>
<address><span style="color: #000080">ORDER BY C1, C2, C3</span></address>
<address></address>
<address><span style="color: #000080">** FTHG = Full Time Home Team Goals</span></address>
<address><span style="color: #000080">** FTAG = Full Time Away Team Goals</span></address>
<p>Note the &#8220;SUM(T6428.FTHG) AS C4&#8243; which is from the Sum Aggregate in the logical Column.</p>
<h2><span style="color: #000000">Quick Data Modelling Aside</span></h2>
<p style="padding-left: 30px">
<p style="padding-left: 30px">Before I go further a quick note on how the data could be modelled.</p>
<p style="padding-left: 30px">There are essentially three ways (I can quickly think of) we could model the &#8216;result&#8217; of a match.</p>
<p style="padding-left: 30px">
<ol style="padding-left: 30px">
<li>Capture the result in the &#8216;Match&#8217; fact record.<br />
Two Examples<br />
a) We could add a field called HTR &#8211; Half Time Result &#8211; and enter words or codes such as &#8216;Home Win&#8217; or &#8216;HW&#8217;.<br />
b) We could add field called HW_HT (short for Home Win Half Time) and put a <em>0</em> or <em>1</em> in if it true</li>
<li>No Results code &#8211; just capture the goals (let the reporting layer do the work)</li>
<li>Place the result codes in a fact table of their own.<br />
Create a table called MatchResults, with columns</li>
</ol>
<p style="padding-left: 60px">MATCH_ID,   RESULT_CODE,   RESULT</p>
<p style="padding-left: 60px">a sample set of record for a match could be -</p>
<p style="padding-left: 60px">123, HW_HT, 0</p>
<p style="padding-left: 60px">123, AW_HT, 0</p>
<p style="padding-left: 60px">123, DR_HT, 1</p>
<p style="padding-left: 30px">
<h3>Back to the scenario</h3>
<p>Let&#8217;s look at a Scenario 1(a) method (which is the chosen method for our Demo).</p>
<p>In the ETL Venkat has created a field called FTR &#8211; Full Time Result, which contains the values H (Home Team Wins), D (Draw) and A (Away Team Wins)</p>
<p>If we use this column in a report</p>
<p><img class="aligncenter size-full wp-image-4256" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/02/6.png" alt="6" width="455" height="543" /></p>
<address><span style="color: #000080">WITH</span></address>
<address><span style="color: #000080">SAWITH0 AS (select sum(case when T6428.FTR = &#8216;H&#8217; then 1 else 0 end ) as c1,</span></address>
<address><span style="color: #000080">T6428.YEAR as c2,</span></address>
<address><span style="color: #000080">T6428.HOMETEAM as c3,</span></address>
<address><span style="color: #000080">T6428.AWAYTEAM as c4,</span></address>
<address><span style="color: #000080">T6428.DATE1 as c5</span></address>
<address><span style="color: #000080">from</span></address>
<address><span style="color: #000080">PREMIER_LEAGUE T6428 /* Home Team &#8211; Premier League */</span></address>
<address><span style="color: #000080">where ( T6428.YEAR = &#8216;2009&#8242; )</span></address>
<address><span style="color: #000080">group by T6428.AWAYTEAM, T6428.DATE1, T6428.HOMETEAM, T6428.YEAR)</span></address>
<address><span style="color: #000080">select distinct SAWITH0.c2 as c1,</span></address>
<address><span style="color: #000080">SAWITH0.c3 as c2,</span></address>
<address><span style="color: #000080">SAWITH0.c4 as c3,</span></address>
<address><span style="color: #000080">SAWITH0.c5 as c4,</span></address>
<address><span style="color: #000080">&#8216;Home&#8217; as c5,</span></address>
<address><span style="color: #000080">SAWITH0.c1 as c6</span></address>
<address><span style="color: #000080">from</span></address>
<address><span style="color: #000080">SAWITH0</span></address>
<address><span style="color: #000080">order by c1, c2, c3, c4, c5</span></address>
<p>In Summary this is:</p>
<p><img class="aligncenter size-full wp-image-4257" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/02/7.png" alt="7" width="282" height="369" /></p>
<address><span style="color: #000080">select T6428.YEAR as c1,</span></address>
<address><span style="color: #000080">T6428.HOMETEAM as c2,</span></address>
<address><span style="color: #000080">&#8216;Home&#8217; as c3,</span></address>
<address><span style="color: #000080">sum(case when T6428.FTR = &#8216;H&#8217; then 1 else 0 end ) as c4</span></address>
<address><span style="color: #000080">from</span></address>
<address><span style="color: #000080">PREMIER_LEAGUE T6428 /* Home Team &#8211; Premier League */</span></address>
<address><span style="color: #000080">where ( T6428.YEAR = &#8216;2009&#8242; )</span></address>
<address><span style="color: #000080">group by T6428.HOMETEAM, T6428.YEAR</span></address>
<address><span style="color: #000080">order by c1, c2, c3</span></address>
<p><span style="color: #000080"><span style="color: #000000">Now let&#8217;s take a scenario</span> </span>2 where the ETL for football scores does not populate a set of result fields. This is often the case where database developers are not warehouse or star friendly, and only store the raw data.</p>
<p>So, in order to determine who is winning at half time we have to run a calculation. The choices of where you do this are numerous:</p>
<ol>
<li>In the database (Create a materialised or normal View)</li>
<li>In the rpd &#8211; Create a calculated field which looks at the scores</li>
<li>In a request &#8211; In a particular report</li>
</ol>
<p>The database option probably being the longest one to implement, but it will also be the most performant (if using an MV) when you come to running reports. Creating the calculation in the rpd means it is re-usable. Creating the calculation in the report is probably the easiest to get done in a short time.</p>
<p>Lets have a look at creating a request of home wins at full time.</p>
<p>Add, Year, Team Name, Wins at Full Time.</p>
<p style="text-align: center"><img class="size-medium wp-image-4239 aligncenter" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/02/4-218x300.png" alt="Get Wins" width="218" height="300" /></p>
<p>Wins at Full time =</p>
<p style="text-align: center"><img class="size-medium wp-image-4238 aligncenter" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/02/5-300x204.png" alt="Case Win" width="300" height="204" /></p>
<p>(CASE WHEN ((Home Team Score at Full Time &#8211; AWAY Team Score at Full Time)&gt;0) THEN 1 ELSE 0 END)</p>
<p>Which created the following SQL.</p>
<address><span style="color: #000080">WITH</span></address>
<address><span style="color: #000080">SAWITH0 AS (SELECT SUM(T6428.FTAG) AS C1,</span></address>
<address><span style="color: #000080">SUM(T6428.FTHG) AS C2,</span></address>
<address><span style="color: #000080">T6428.YEAR AS C3,</span></address>
<address><span style="color: #000080">T6428.HOMETEAM AS C4</span></address>
<address><span style="color: #000080">FROM</span></address>
<address><span style="color: #000080">PREMIER_LEAGUE T6428 /* HOME TEAM &#8211; PREMIER LEAGUE */</span></address>
<address><span style="color: #000080">WHERE ( T6428.YEAR = &#8216;2009&#8242; )</span></address>
<address><span style="color: #000080">GROUP BY T6428.HOMETEAM, T6428.YEAR)</span></address>
<address><span style="color: #000080">SELECT DISTINCT SAWITH0.C3 AS C1,</span></address>
<address><span style="color: #000080">SAWITH0.C4 AS C2,</span></address>
<address><span style="color: #000080">SAWITH0.C2 AS C3,</span></address>
<address><span style="color: #000080">SAWITH0.C1 AS C4,</span></address>
<address><span style="color: #000080">CASE WHEN SAWITH0.C2 &#8211; SAWITH0.C1 &gt; 0 THEN 1 ELSE 0 END AS C5</span></address>
<address><span style="color: #000080">FROM</span></address>
<address><span style="color: #000080">SAWITH0</span></address>
<address><span style="color: #000080">ORDER BY C1, C2</span></address>
<p>AH!, So the SQL generated <strong>did not give the right answer</strong>.</p>
<p>Is that what you expected? Did you definately know it was going to do that?</p>
<p>As you can see it SUMMED the Home Goals and Away goals for the season then looked at the case if sum(Home goals) is greater than sum(away goals). Therefore you do not get an answer for each match, so cannot get total matches won in the table.</p>
<h3>Why is this?</h3>
<p>The key difference between Scenario 1 and 2 is shown in the statements</p>
<p>The first method analysis of the Result runs on each Match record in the table, then sums the field</p>
<p>sum(case when T6428.FTR = &#8216;H&#8217; then 1 else 0 end ) as c4</p>
<p>The second method runs an analysis the summed fields</p>
<p>CASE WHEN SAWITH0.C2 &#8211; SAWITH0.C1 &gt; 0 THEN 1 ELSE 0 END AS C5</p>
<p>Now lets see if we can get a Scenario 2 to work.</p>
<p>Here is the query again, but with a secret weapon &#8211; The Pivot table</p>
<p style="text-align: center"><img class="size-medium wp-image-4240  aligncenter" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/02/10-200x300.png" alt="Get wins" width="200" height="300" /></p>
<p>.SQL produced is the same,</p>
<address><span style="color: #0000ff">WITH</span></address>
<address><span style="color: #0000ff">SAWITH0 AS (select sum(T6428.FTAG) as c1,</span></address>
<address><span style="color: #0000ff">sum(T6428.FTHG) as c2,</span></address>
<address><span style="color: #0000ff">T6428.YEAR as c3,</span></address>
<address><span style="color: #0000ff">T6428.HOMETEAM as c4,</span></address>
<address><span style="color: #0000ff">T6428.DATE1 as c5,</span></address>
<address><span style="color: #0000ff">T6428.AWAYTEAM as c6</span></address>
<address><span style="color: #0000ff">from</span></address>
<address><span style="color: #0000ff">PREMIER_LEAGUE T6428 /* Home Team &#8211; Premier League */</span></address>
<address><span style="color: #0000ff">where ( T6428.YEAR = &#8216;2009&#8242; )</span></address>
<address><span style="color: #0000ff">group by T6428.AWAYTEAM, T6428.DATE1, T6428.HOMETEAM, T6428.YEAR),</span></address>
<address><span style="color: #0000ff">SAWITH1 AS (select distinct SAWITH0.c1 as c1,</span></address>
<address><span style="color: #0000ff">SAWITH0.c2 as c2,</span></address>
<address><span style="color: #0000ff">SAWITH0.c3 as c3,</span></address>
<address><span style="color: #0000ff">SAWITH0.c4 as c4,</span></address>
<address><span style="color: #0000ff">SAWITH0.c5 as c5,</span></address>
<address><span style="color: #0000ff">&#8216;Home&#8217; as c6,</span></address>
<address><span style="color: #0000ff">SAWITH0.c6 as c7</span></address>
<address><span style="color: #0000ff">from</span></address>
<address><span style="color: #0000ff">SAWITH0)</span></address>
<address><span style="color: #0000ff">select distinct SAWITH1.c3 as c1,</span></address>
<address><span style="color: #0000ff">SAWITH1.c4 as c2,</span></address>
<address><span style="color: #0000ff">SAWITH1.c5 as c3,</span></address>
<address><span style="color: #0000ff">SAWITH1.c6 as c4,</span></address>
<address><span style="color: #0000ff">SAWITH1.c7 as c5,</span></address>
<address><span style="color: #0000ff">SAWITH1.c2 as c6,</span></address>
<address><span style="color: #0000ff">SAWITH1.c1 as c7,</span></address>
<address><span style="color: #0000ff">case when SAWITH1.c2 &#8211; SAWITH1.c1 &gt; 0 then 1 else 0 end as c8</span></address>
<address><span style="color: #0000ff">from</span></address>
<address><span style="color: #0000ff">SAWITH1</span></address>
<address><span style="color: #0000ff">order by c1, c2, c3, c4, c5</span></address>
<p>This time the query is the same, but I have put all the details into the table so that each match record is analysed, then used a pivot table to display the results</p>
<p style="text-align: center"><img class="size-medium wp-image-4241 aligncenter" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2010/02/10a-300x138.png" alt="The Pivot" width="300" height="138" /></p>
<blockquote><p>So the secret is to make sure that the calculations are done at the detail row level to get the right answer, then have the BI server add the rows for you.</p></blockquote>
<p>The exam question can therefore be answered by creating a query with all the necessary calculations, Half time losing (make =1)  minus full time winning (make = 0). sum the result in a pivot.</p>
<p>So the data can be analysed by treating the fact like an attribute of the match.  My favourite method to model this is to create the resultant fields &#8211; HT_HW (0/1), FT_HW(0/1) on the table and add these to a logical dimension. Then expose the dimension table and, Hey Presto your facts are acting like dimensional attributes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/02/02/fantasy-football-when-is-a-fact-not-a-fact/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RMOUG Training Days</title>
		<link>http://www.rittmanmead.com/2010/01/27/rmoug-training-days/</link>
		<comments>http://www.rittmanmead.com/2010/01/27/rmoug-training-days/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:03:48 +0000</pubDate>
		<dc:creator>Stewart Bryson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4193</guid>
		<description><![CDATA[The annual RMOUG Training Days event takes place on February 17th and 18th in Denver, CO, with some additional university sessions taking place on February 16th. I am excited to be co-presenting with Mark Rittman on A DBA and Developers&#8217; Guide to Oracle Warehouse Builder 11gR2. Quite often, when we speak or train on OWB, [...]]]></description>
			<content:encoded><![CDATA[<p>The annual <a href="http://rmoug.org/training.htm">RMOUG Training Days</a> event takes place on February 17th and 18th in Denver, CO, with some additional university sessions taking place on February 16th. I am excited to be co-presenting with Mark Rittman on <a href="http://www.technicalconferencesolutions.com/pls/caat/caat_abstract_reports.display_presenter_abstract?conference_id=62&amp;presenter_id=261&amp;abstract_id=172">A DBA and Developers&#8217; Guide to Oracle Warehouse Builder 11gR2</a>. Quite often, when we speak or train on OWB, it is slanted toward BI architects, ETL developers, etc. In this session, however, Mark and I will be demonstrating some of the new 11gR2 features of OWB, approaching the subject from a application-neutral perspective. So perhaps you want to consider using OWB as more of an integration tool, or just need to do your average, run-of-the-mill database development, OWB might just be the tool for you. Additionally, there is a new feature in OWB called <a href="http://www.rittmanmead.com/2009/09/21/code-templates-in-owb11gr2-part-2-introduction-to-code-template-mappings/">code template mappings</a> that allows DBAs and database architects to participate in the ETL lifecycle with some database best-practices, without having to actually DO the ETL development.</p>
<p>This will be my first time attending the Rocky Mountain Oracle Users Group event, and I am excited to see a strong showing from some of the community staples. Have a look at the <a href="http://www.technicalconferencesolutions.com/pls/caat/caat_abstract_reports.schedule?conference_id=62">agenda</a> and see some of the presentations that will be going on at the largest Oracle regional user group event in the United States. You could do worse than spending a few days in beautiful Colorado, after all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/01/27/rmoug-training-days/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The BI Survey 9 &#8211; Fieldwork Closes on Sunday</title>
		<link>http://www.rittmanmead.com/2010/01/27/the-bi-survey-9-fieldwork-closes-on-sunday/</link>
		<comments>http://www.rittmanmead.com/2010/01/27/the-bi-survey-9-fieldwork-closes-on-sunday/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 10:58:38 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4190</guid>
		<description><![CDATA[[Fieldwork for the BI Survey 9, an independent survey of BI customers and partners, closes its fieldwork on Sunday 31st January. It's important that we get a suitable number of Essbase, OBIEE, OLAP and Discoverer users completing the survey, so please visit the site and fill it in if you've not done so already. Thanks [...]]]></description>
			<content:encoded><![CDATA[<p><em>[Fieldwork for the BI Survey 9, an independent survey of BI customers and partners, closes its fieldwork on Sunday 31st January. It's important that we get a suitable number of Essbase, OBIEE, OLAP and Discoverer users completing the survey, so please visit the site and fill it in if you've not done so already. Thanks - MR]</em></p>
<p style="text-align:center;"><img src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/11/dyna_banner_bisurvey9-1.jpg" height="75" width="500" border="1" hspace="4" vspace="4" alt="Dyna Banner Bisurvey9-1" /></p>
<p><strong>&#8220;The BI Survey 9: The Customer Verdict</strong></p>
<p>We would very much welcome your participation in &#8216;The BI Survey 9: The Customer Verdict&#8217;, the world&#8217;s largest survey of business intelligence (BI) and performance management (PM) users (formerly known as The OLAP Survey).</p>
<p>As a participant, you will:</p>
<ul>
<li>Receive a summary of the results from the full survey</li>
<li>Be entered into a draw to win one of ten $50 Amazon vouchers</li>
<li>Ensure that your experiences are included in the final analyses</li>
</ul>
<p>To take part in the survey on-line, visit: <a href="http://digiumenterprise.com/answer?link=249-KP9DYABR">http://digiumenterprise.com/answer?link=270-5J9MMB9M<br />
</a><br />
BARC&#8217;s annual survey obtains input from a large number of organizations in order to better understand their buying decisions, the implementation cycle and the business benefits achieved.</p>
<p>Both business and technical users, as well as vendors and consultants, are welcome to participate. If you are answering as a consultant, please answer the questions (including the demographic questions) from your client&#8217;s perspective; we will ask you separately about your own firm.</p>
<p>The BI Survey has always adopted a vendor-independent stance. While vendors assist by inviting users to participate in the Survey, Business Application Research Center (BARC) &#8211; the publisher &#8211; does not accept vendor sponsorship of the Survey, and the results are analyzed and published without any vendor involvement.</p>
<p>You will be able to answer questions on your usage of a BI product from any vendor. Your answers will only be used anonymously, and your personal details will never be passed on to vendors or other third parties.</p>
<p>The survey should take about 15-20 minutes to complete</p>
<p>* BARC (Business Application Research Center) is a leading independent software industry analyst specializing in Data Management and Business Intelligence. For more information on BARC please visit <a href="http://www.barc.de/index.php?id=6&#038;L=1%22%20%5Co%20%22BARC%20Homepage">The BARC website</a>, <a href="http://www.bi-survey.com">www.bi-survey.com</a> and <a href="http://www.bi-verdict.com%22%20%5Ct%20%22_blank">www.BI-Verdict.com</a>&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/01/27/the-bi-survey-9-fieldwork-closes-on-sunday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heat Maps in OBIEE</title>
		<link>http://www.rittmanmead.com/2010/01/22/heat-maps-in-obiee/</link>
		<comments>http://www.rittmanmead.com/2010/01/22/heat-maps-in-obiee/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 21:06:08 +0000</pubDate>
		<dc:creator>Peter Scott</dc:creator>
				<category><![CDATA[Oracle BI Suite EE]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4169</guid>
		<description><![CDATA[OBIEE 10.1.3.4.1 has a host of ways to add visual impact to reported data to aid its interpretation. But some things are not so easy to achieve, or at least not by just clicking on a few format buttons on the Answers web page.
One of my customers had the need to report a day&#8217;s figures [...]]]></description>
			<content:encoded><![CDATA[<p>OBIEE 10.1.3.4.1 has a host of ways to add visual impact to reported data to aid its interpretation. But some things are not so easy to achieve, or at least not by just clicking on a few format buttons on the Answers web page.</p>
<p>One of my customers had the need to report a day&#8217;s figures and colour the results based on change since yesterday. I also had three additional design challenges to meet: not to change the RPD (this is only a proof of concept, RPD changes might come later), avoid having to laboriously conditionally format each coloured cell (the colour rules could become very complex and based on multiple columns) and allow the use of &#8220;normal&#8221; and pivot tables on the dashboard.</p>
<p>Firstly, as I am looking at the difference between the a measure over two days I can not use a pivot report for this as it is not possible to calculate differences between measure columns in the pivot. But we can use the &#8216;FILTER&#8217; button on the column formula editor to restrict the values returned to just those that match the filter. By doing this twice, once for each day of interest, we get two columns in the same Answers Request TABLE view that we can do the maths on. Here we need to calculate the percentage difference between the two values.</p>
<p>Now I can calculate the values I need for my heat map &#8211; the day&#8217;s measures, and the percentage change since yesterday. Next I need to colour in the cell backgrounds.</p>
<p>Of course it very possible to just use conditional formatting, but this gets quite unwieldy with complex cell colour rules, and of course the request to make the colour mapping reusable across multiple Answers requests and dashboards. I decided to tackle the problem by adding a text column to the request and changing its format to HTML. To change the background colour of a cell you need to make the cell contain the following HTML:</p>
<pre>&lt;div style="background-color: rgb('|| cast(255*RND() as varchar(3))||','||cast(255*RND() as varchar(3))||',cast(255*RND() as varchar(3))|| ');" &gt; -some value to output' || &lt;/div&gt;'</pre>
<p>You must output something in the cell as OBIEE does not colour in NULL values. I decided to use the RGB() form of the colour selector as it is probably simpler to calculate three numeric values than to build colour codes in hexadecimal.</p>
<p>Although it is feasible to code this colour mapping in OBIEE it is a lot of effort. Here I simplified things greatly by writing a database function that takes the value to display and a value that controls the colour (and here it is simply percentage change over two days) as the two arguments and returns a varchar2 string that formats the cell. Although the colouring coding algorithm can be as complex as you like ultimately we populate a string and return it.</p>
<pre>[code omitted]
vHTML_STRING:='&lt;div style="background-color: rgb('||vRED||','||vGREEN||','||vBLUE||')" &gt;'||TO_CHAR(pValue,'FM999,999,999,999')||' &lt;/div&gt;'
return vHTML_STRING;</pre>
<p>To use this we simply set the cell contents to be the results of the OBIEE EVALUATE</p>
<pre>Evaluate('ORCL.F_my_colour_map(%1,%2)' as varchar(100), [some OBIEE expression that evaluates to the colour],[some other expression that gives the value to display]))</pre>
<p>function formatted as HTML.</p>
<p>Of course, this method is only suitable for the current OBIEE release, older versions may not have 'EVALUATE' and  the future OBIEE 11 may not behave in the same way with rendering HTML within Answers tables.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/01/22/heat-maps-in-obiee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advert: Enhanced OBIEE Developer Training Course</title>
		<link>http://www.rittmanmead.com/2010/01/18/advert-enhanced-obiee-developer-training-course/</link>
		<comments>http://www.rittmanmead.com/2010/01/18/advert-enhanced-obiee-developer-training-course/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 10:32:08 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4092</guid>
		<description><![CDATA[A quick advert for a new training course that we&#8217;ve put together. You may be aware that Rittman Mead offers training courses, typically run in-house for organizations looking to train up their development teams. Our courses are popular with clients looking to embark on, for example, an OBIEE project, or for partners new to OBIEE [...]]]></description>
			<content:encoded><![CDATA[<p>A quick advert for a new training course that we&#8217;ve put together. You may be aware that Rittman Mead offers <a href="http://www.rittmanmead.com/training">training courses</a>, typically run in-house for organizations looking to train up their development teams. Our courses are popular with clients looking to embark on, for example, an OBIEE project, or for partners new to OBIEE who want to train up their team prior to starting on a client project. We have courses covering technologies from OBIEE through to OWB, BI Publisher and Oracle Data Warehousing, and we run them all around the world for clients.</p>
<p>Up until recently our OBIEE course has run over three days, but we&#8217;ve had a lot of demand from clients to extend this to five days, and cover some of the more real-world issues that you face on OBIEE projects. We&#8217;ve now finished development on this extended five day OBIEE developer course (we call it our OBIEE &#8220;Bootcamp&#8221;), and details of the course are here:</p>
<ul>
<li><a href="http://www.rittmanmead.com/training/listing-of-courses/trn-201-oracle-bi-ee-bootcamp/">TRN201 : Oracle BI EE 5-Day Bootcamp</a></li>
</ul>
<p>Some highlights of this course include</p>
<ul>
<li>Covers installation and configuration of the various OBIEE elements</li>
<li>RPD modeling including star schemas, normalized source schemas, single-table modeling, combining star schemas of differing granularity</li>
<li>Caching, aggregates, variables, usage tracking</li>
<li>New sections on project migration, upgrades, multi-user development, usage of source control systems</li>
<li>Modeling of Essbase sources</li>
</ul>
<p>The other main addition to the course is on the last day: a one-day, real-world practical workshop. We give you some source data, a &#8220;client specification&#8221;, a set of report requirements and challenge you to build an end-to-end system. The idea of this session is to simulate what you&#8217;ll need to do after you finish the course, when you go back to your office and are faced with a set of data, a set of requirements and you need to produce something. By tackling this first in the course environment, you&#8217;ll get a chance to practice what you have learnt, pull together some new data and prove to yourself that you can build something using OBIEE away from step-by-step instructions.</p>
<p>The course itself is run by myself and our team of consultants, so you&#8217;ll be taught by someone who delivers projects using this technology when they&#8217;re not teaching the course. If you&#8217;re interested (we only run the course in-house for development teams, it&#8217;s not offered &#8220;publically&#8221; yet), <a href="mailto:mark.rittman@rittmanmead.com">drop me a line</a> and I can tell you more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/01/18/advert-enhanced-obiee-developer-training-course/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OBIEE &#8211; What is it good for?</title>
		<link>http://www.rittmanmead.com/2010/01/12/obiee-what-is-it-good-for/</link>
		<comments>http://www.rittmanmead.com/2010/01/12/obiee-what-is-it-good-for/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 09:13:36 +0000</pubDate>
		<dc:creator>Adrian Ward</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=4040</guid>
		<description><![CDATA[I&#8217;m showing my age here with a reference back to the iconic eighties pop song, but with age comes experience, which I thought I share with you today in the form of a question and answer session.
Q. What Does OBIEE Do?

Reports on data from a database.
Provides a web platform for content

e.g. Reports, Embeded Content (websites/Services)



Q.  [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m showing my age here with a reference back to the iconic <a href="http://www.youtube.com/watch?v=nyvmJlAGPrQ" target="_blank">eighties pop song</a>, but with age comes experience, which I thought I share with you today in the form of a question and answer session.</p>
<p>Q. What Does OBIEE Do?</p>
<ul>
<li>Reports on data from a database.</li>
<li>Provides a web platform for content
<ul>
<li>e.g. Reports, Embeded Content (websites/Services)</li>
</ul>
</li>
</ul>
<p>Q.  So, Is OBIEE a Database?</p>
<ul>
<li>NO</li>
</ul>
<p>Q. What Databases will it Report from?</p>
<ol>
<li>Oracle</li>
<li>SQL Server</li>
<li>DB2</li>
<li>MySQL</li>
<li>ODBC Sources</li>
<li>MS Access</li>
<li>SyBase</li>
<li>Redbrick</li>
<li>SAP BW</li>
<li>SQL Anywhere</li>
<li>DB2 AS400</li>
<li>Informix</li>
<li>Netezza</li>
<li>Times Ten</li>
</ol>
<p>Q. Can It Connect to Other Sources?</p>
<p>YES</p>
<ol>
<li>Excel</li>
<li>XML</li>
<li>Oracle OLAP</li>
<li>Oracle Essbase</li>
<li>MS Analysis Services</li>
</ol>
<p>Q. But what does it do?</p>
<ol>
<li>Creates <strong>Web pages</strong> &#8211; <span style="color: #ff0000">Dashboards</span></li>
<li>Has a <strong>Report Writer</strong> &#8211; <span style="color: #ff0000">Answers</span></li>
<li><strong>Sends</strong> Reports and Messages &#8211; <span style="color: #ff0000">Delivers</span> (aka <span style="color: #ff0000">iBots</span>)</li>
<li><strong>Pixel Perfect Reports</strong> -<span style="color: #ff0000"> BI Publisher</span> (e.g. Statements, invoices, cheques)</li>
</ol>
<p>Q. What are the main ‘Features’?</p>
<ol>
<li>Hierarchy Drilling</li>
<li>Graphical Reporting (Charts, Pivots, Gauges, etc)</li>
<li>Scheduled Report Generation</li>
<li>Ad Hoc Analysis</li>
<li>Global support and development capabilty</li>
</ol>
<p>Q. What are the Advantages?</p>
<p>Comparing OBIEE with other products:</p>
<ol>
<li>Mass deployment via Intranet</li>
<li>Scalable</li>
<li>Open standards based</li>
<li>Deploys on all platforms</li>
</ol>
<p>Q. What are the benefits?</p>
<ol>
<li>Reduces Skills required for report production</li>
<li>Removes redundancy in Report production</li>
<li>Removes time to produce reports, enabling more time to analyse the results</li>
<li>Provides &#8220;Actionable Insight&#8221; i.e. it Highlights where action is required</li>
<li>Enables <strong>Single Version of the Truth </strong>Common data and reporting objects</li>
</ol>
<p>(FAB Virgil !!)</p>
<p>Q. But Which component do I use for my Work?</p>
<p>So you want to&#8230;</p>
<p>Q. Send a daily report in the same format to senior management, updated with the latest data?</p>
<ol>
<li>Use BI Publisher to create the report, and use Delivers to send it by Email</li>
</ol>
<p>Q. Give teams a set of standard reports that highlight issues on KPI’s</p>
<ol>
<li>Create a standard set of reports (using Answers) and place these on Team dashboards.</li>
</ol>
<p>Q. Create Pixel perfect documents?</p>
<ol>
<li>Use BI Publisher to produce reports, using the common data set of OBIEE</li>
</ol>
<p>Q. Make sure everyone is using the numbers (i.e. one version of the truth)?</p>
<ol>
<li>Drive all reporting from same database that OBIEE uses.</li>
<li>Direct as much as possible to the use of dashboards, Answers and BI Publisher.</li>
</ol>
<p>Q. Improve Data Quality?</p>
<ol>
<li>Expose as much data as possible in the dashboards. Do not hide ‘odd’ data.</li>
<li>Make sure that all senior management reports come from the OBIEE system.(This will also aid user adoption)</li>
</ol>
<p>Q. Run a daily Invoice run</p>
<ol>
<li>Use BI Publisher on the latest financial data</li>
</ol>
<p>Q. Store Reports for Audit Purposes</p>
<ol>
<li>Use Delivers to email a copy of a report or dashboard to a storage account</li>
<li>Use Briefing Books to store data</li>
<li>Save a report in PDF or HTML format and save in a share drive</li>
</ol>
<p>Q. What departments is OBIEE suited for?</p>
<ol>
<li>Front Office</li>
<li>Risk</li>
<li>Finance</li>
<li>Production</li>
<li>Distribution</li>
<li>Marketing</li>
<li>Sales</li>
</ol>
<p>All of them really !</p>
<p>Q. What size of company should use OBIEE?</p>
<ol>
<li>Very Large &#8211; Global Corporations, Banks, Mining</li>
<li>Large &#8211; Government Agencies, Technology, Manufacturing, Consultancies</li>
<li>Military &#8211; Ministry of Defence, Army, Navy, Airforce</li>
<li>Medium &#8211; Retailers, Transport</li>
<li>Small &#8211; Consultancies, Sports clubs</li>
</ol>
<p>Any organisation that has any data to analyse!!</p>
<p>Note: There are licensing options for smaller companies</p>
<p>Q. Where do I start?</p>
<ol>
<li>Get a free copy of OBIEE from Oracle to evaluate how easy it is.</li>
<li>Train up a couple of internal staff on how to use the product</li>
<li>Get some independent advice
<ol>
<li>Join UKOUG</li>
<li>Go to the User Group conferences</li>
</ol>
</li>
<li>Talk to the Integrators</li>
</ol>
<p>Q. Any Tips?</p>
<ol>
<li>Run a small POC.</li>
<li>Identify the benefits to your organisation, but don’t ‘boil the ocean’ &#8211; Keep work packages small enough to get regular delivery</li>
<li>Use OBIEE experienced Business Analysts</li>
<li>Work with the end users in an &#8216;Agile / RAD&#8217; way</li>
<li>Build a platform for reporting, then build on it with the end users</li>
<li>Focus on <span style="color: #800000"><strong>Dimensional Modelling </strong></span>avoid Normalised data reporting</li>
<li>Call in Rittman Mead Consulting!!</li>
</ol>
<p>Did i Mention work with the end users!</p>
<p>Remember, with any reporting project,<strong><span style="color: #800000"> it&#8217;s all about the database</span></strong> &#8211; however graphical or well laid out the reports are, they will rely on the speed and accuracy of the database. OBIEE is not a silver bullet for reporting issues, but it should be in your armoury.</p>
<p>For those youngsters who were in nappies in the eighties, have a look at <a href="http://en.wikipedia.org/wiki/Frankie_Goes_to_Hollywood">http://en.wikipedia.org/wiki/Frankie_Goes_to_Hollywood</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2010/01/12/obiee-what-is-it-good-for/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Fantasy Football and OBIEE Part 2 : The Next Man City?</title>
		<link>http://www.rittmanmead.com/2009/12/23/fantasy-football-and-obiee-part-1-the-next-man-city/</link>
		<comments>http://www.rittmanmead.com/2009/12/23/fantasy-football-and-obiee-part-1-the-next-man-city/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 09:00:22 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3883</guid>
		<description><![CDATA[In the last blog entry, i basically did a quick run-through of our 1st part of the &#8220;Fantasy Football&#8221; demo we put together for the recent UKOUG Conference in Birmingham. Today, i shall be covering the 2nd part of the demo which is actually even more interesting. The 2nd part of our demo was in [...]]]></description>
			<content:encoded><![CDATA[<p>In the last blog entry, i basically did a quick run-through of our 1st part of the &#8220;Fantasy Football&#8221; demo we put together for the recent UKOUG Conference in Birmingham. Today, i shall be covering the 2nd part of the demo which is actually even more interesting. The 2nd part of our demo was in showing how a potential investor can use BI EE to do an ROI analysis of various Premier League teams and then make a decision based on that analysis. Any investor who likes to buy a football club has to spend his/her money in a couple of streams </p>
<p>1. Purchase Price of the club &#8211; This is the amount required to buy the club. Chris had come up with a formula to derive the Purchase price of a club as given below </p>
<p><strong>(3 x Turnover) &#8211; (Debt + (3 x Annual Loss))</strong> </p>
<p>2. Extra Investment &#8211; This could be an investment on recruiting new players, constructing a new stadium etc. </p>
<p>The purchase price of the club is more or less a derived metric and is driven by a formula shown above. From a technical standpoint, we had a single database table containing the revenue, debt, income figures of each club. An example screenshot is shown below </p>
<p align="center"><img title="Picture 17" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="154" alt="Picture 17" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture172.png" width="504" border="0" /> </p>
<p align="center"><img title="Picture 18" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="315" alt="Picture 18" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture181.png" width="471" border="0" /> </p>
<p align="center"><img title="Picture 19" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="304" alt="Picture 19" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture193.png" width="504" border="0" /> </p>
<p>If you notice, all the big clubs like Chelsea, Manchester United have huge debts and hence their purchase prices are actually negative. Now you will know why Abramovic purchased Chelsea for 1 Pound. He basically just acquired the debt of Chelsea. </p>
<p>An investor always would like look at a club that has a lower purchase price but has a good potential for growth i.e ROI will be much faster and will be more as well. So, whatever investment the investor is making should result in higher profits and hence higher returns soon. The investor can look at a couple of options. </p>
<p>1. Hire new players (Player/Manager Investment) &#8211; This is typically not dependent on a club but more on the amount of spending an investor can do. Hence we had used a formula to arrive at ROI for a specific investment range. That range is given here </p>
<p><strong>An investment of 50 Million Pounds = 10% increase in income from prior year      <br />An investment of 100 Million Pounds = 20% increase in income from prior year       <br />An investment of 200 Million Pounds = 80% increase in income from prior year       <br />An investment of 400 Million Pounds = 250% increase in income from prior year</strong> </p>
<p>2. Invest in a new stadium &#8211; This is completely dependent on the fan following of a club and the potential for growth in the number of followers for the club. Some clubs might have a smaller stadium and hence by building a new stadium with more capacity, the Gate Receipts income can potentially be increased.</p>
<p>For the 2nd part, Chris had come up with a nice little dataset for the population distribution in and around London. That is shown below </p>
<p align="center"><img title="Picture 20" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="205" alt="Picture 20" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture201.png" width="504" border="0" /> </p>
<p>If you notice, we basically have identified population of the areas of each club and then compared that with the actual average attendance for all the matches of each club. How do we determine what will be the percentage growth of each club in terms of number of attendees? This where we introduced a couple of factors </p>
<p>1. Growth Potential 1 (Big Club Potential) &#8211; We allow the investor to enter an arbitrary number(0 to 1) for each club depending on what he thinks will be the potential for the club to be a big club    <br />2. Growth Potential (Big neighbor factor) &#8211; If there is a big neighbor like Manchester United then there is only little growth that we can expect. This factor determines that. Again this accepted an arbitrary number (0 to 1) to be varied across the clubs.</p>
<p>So, we basically enabled a What-if scenario kind of report in BI EE using Writebacks. The screenshot is given below </p>
<p align="center"><img title="Picture 21" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="315" alt="Picture 21" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture212.png" width="416" border="0" /> </p>
<p>If you notice, we have made the both the Growth Potential factors to be alterable in the report above using BI EE writebacks. A potential investor can vary these numbers and then look at the potential turnover graph (which will vary based on a formula). The final formula that we used to calculate the final fans growth potential is given below</p>
<p><strong>10% * Conurbation population/competing clubs * Weighting Factor 1 * Weighting Factor 2 / Average Attendance* 100</strong></p>
<p>We then used a projection to calculate the potential increase in Gate-Receipts revenue using the above growth potential. Once we had the potential increase in Gate-Receipts revenue and the revenue due to player manager investment, we calculated the ROI as</p>
<p><strong>ROI = (Gate Receipts Revenue + Player Management Revenue) * Number of Years – Purchase Price – Debt – Investment in each year * Number of Years</strong>&#160;</p>
<p>To make it complete, we also provided possible investment range numbers to be variable in the what-if scenario. That way an investor can input certain Investment numbers, Growth Potential factors and the expected profit percentage, the graphs on the dashboard will automatically vary to reflect the new change. This was pretty sophisticated. Though there were quite a few variables, we did notice that among all the clubs, Birmingham city had the highest potential for growth for a small investment. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/12/23/fantasy-football-and-obiee-part-1-the-next-man-city/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fantasy Football and OBIEE Part 1 : You Can Be Statto!</title>
		<link>http://www.rittmanmead.com/2009/12/22/fantasy-football-and-obiee-part-1-you-can-be-statto/</link>
		<comments>http://www.rittmanmead.com/2009/12/22/fantasy-football-and-obiee-part-1-you-can-be-statto/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 12:41:16 +0000</pubDate>
		<dc:creator>Venkatakrishnan J</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3876</guid>
		<description><![CDATA[One of the demos that we showed off at the recent UKOUG Conference in Birmingham was a football stats demo build using BI EE. The basic idea here was to upload a few years worth of Premier League statistics, create a semantic model and then use it to answer two question:
1. Picking a particular attribute [...]]]></description>
			<content:encoded><![CDATA[<p>One of the demos that we showed off at the recent UKOUG Conference in Birmingham was a football stats demo build using BI EE. The basic idea here was to upload a few years worth of Premier League statistics, create a semantic model and then use it to answer two question:</p>
<p>1. Picking a particular attribute (score at half time, number of fouls, goals scored etc), how high in the league do you think your team would have reached last year, and</p>
<p>2. Using these stats and some commonly used valuation models, given a theoretical large amount of money, which team would be the best to invest in (comparing Birmingham City, for example, with Chelsea)</p>
<p>The basic idea was to have a bit of fun with some publically available statistics and use them to put together an interesting BI EE demo, but the demo was received quite well and i thought it made sense to blog about the intricacies of what we did, including some nice features especially in the Repository design which i shall be blogging about today. The complete idea for this was conceptualized by our Business Development Manager, Chris Raby who got us all the necessary data to prepare the demo. I shall be covering the details of what we did to accomplish that in the next blog post. </p>
<p>All the data that you will be seeing here are based on actual data that we gathered from multiple websites. </p>
<p>When we started to build this demo we gathered our data from the football stats&#160; website <a href="http://www.football-data.co.uk/" target="_blank">here</a>. They have extensive stats of all the matches that were played in English Premier League, Championship etc for the last 5 to 6 years or so. The data is available in the form of CSV files that one can download. The below screenshot basically shows you in what form the data exists. </p>
<p align="center"><img title="Picture 2" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="129" alt="Picture 2" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture2.png" width="504" border="0" /> </p>
<p>Basically every match score was recorded in the form of Home Team and Away Team i.e each row in the CSV file had the stats for a single match. It had a set of stats like Number of Shots on Target, Number of Goals etc for both the Home Team as well as the Away Team. This was maintained in multiple CSV files for each year. One of the first things that we did was to load all of these multiple CSV files into a single Oracle Database table (with an extra Year column). I just used external tables for these. This ensured that we had the data in the desired format. </p>
<p>Once we had the data, the first thing that we had to do was to design the repository. If you look at the data that we have, every row contains the stats for 2 teams. Just to illustrate the complexity involved(in the RPD design), lets just take 2 rows of data shown below for the year 2008. Lets assume that only these 2 matches were played in the whole of year 2008 </p>
<p><strong>HomeTeam&#160;&#160;&#160; AwayTeam&#160;&#160; HomeGoals&#160; AwayGoals&#160;&#160; Result </strong></p>
<p><strong>Arsenal&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Chelsea&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; A      <br />Chelsea&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Arsenal&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; H</strong> </p>
<p>Now, a common reporting question is how many matches did Arsenal Win, Lost and Drawn in year 2008. If we look at the table above, we can easily say that Arsenal Won none, Lost 2 and Drew none in the year 2008. But from a SQL perspective this can be a little bit tricky. Since each row contains stats for HOME and AWAY teams together, we need to traverse the table twice, one from a Home Team perspective and the other from an Away team perspective. </p>
<pre>SELECT Team, Sum(Won) as Won, Sum(Lost) as Lost, Sum(Drawn) as Draw
FROM
(SELECT HOMETEAM as Team, CASE WHEN RESULT = 'H' THEN 1 ELSE 0 END as Won,
CASE WHEN RESULT = 'A' THEN 1 ELSE 0 END as Lost, CASE WHEN RESULT = 'D' THEN 1 ELSE 0 END as Drawn
FROM
PREMIERSHIP_FOOTBALL_STATS
WHERE
HOMETEAM = 'Arsenal'
AND YEAR = 2008
UNION
SELECT AWAYTEAM, CASE WHEN RESULT = 'A' THEN 1 ELSE 0 END,
CASE WHEN RESULT = 'H' THEN 1 ELSE 0 END, CASE WHEN RESULT = 'D' THEN 1 ELSE 0 END
FROM
PREMIERSHIP_FOOTBALL_STATS
WHERE
AWAYTEAM = 'Arsenal'
AND YEAR = 2008)
GROUP BY TEAM </pre>
<p> Similarly if we need a report showing the number of Home Goals Scored and Away Goals scored by Arsenal, one will have to write a similar query as shown above. This is an excellent example wherein the physical data model is very straightforward, but the actual reporting requirements necessitate quite a bit of long and complex SQL. </p>
<p>You can now see why the BI EE repository design is not straightforward even though we just have a single physical table. So, to model this we start with identifying the possible Dimensions and Facts. From a reporting standpoint, we are doing analysis on Football Matches. So, we start with defining a dimension called Match. The attributes of a Match are<br />
  <br />1. A Team &amp; its opponent </p>
<p>2. Match Location </p>
<p>3. Match Date </p>
<p>4. Referee </p>
<p align="center"><img title="Picture 3" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="154" alt="Picture 3" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture3.png" width="226" border="0" /> </p>
<p>And the Fact metrics are, Number of Matches Won, Number of Matches Won (by Home Team), Number of Matches Won (by Away Team) etc </p>
<p align="center"><img title="Picture 4" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="315" alt="Picture 4" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture4.png" width="199" border="0" /> </p>
<p>Once we have identified this, we need to model the Match dimension conforming to 2 fact tables (Home Team Measures and Away Team Measures). The main reason why we are doing this is, when you analyze a team, it can either be a home team or an away team. We need to make BI EE to fire 2 separate queries (one for the home measures and the other for the away measures) and then join them in its memory(or in database memory through sub-query joins). </p>
<p align="center"><img title="Picture 22" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="248" alt="Picture 22" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture221.png" width="237" border="0" /> </p>
<p>Then in the dimension logical table, we map 2 LTS . The first LTS will have Your Team attribute mapped to the HOMETEAM column in the Physical data source. The 2nd LTS will have Your Team attribute mapped to the AWAYTEAM column in the physical data source. </p>
<p align="center"><img title="Picture 23" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="223" alt="Picture 23" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture231.png" width="504" border="0" /> </p>
<p align="center"><img title="Picture 24" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="216" alt="Picture 24" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture241.png" width="504" border="0" /> </p>
<p>This is the only part which might take a while to understand. But if you can understand this, then creating all the measures will become very straightforward. Our final Presentation layer looked something like this </p>
<p align="center"><img title="Picture 7" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="315" alt="Picture 7" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture72.png" width="183" border="0" /> <img title="Picture 6" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="315" alt="Picture 6" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture61.png" width="158" border="0" />&#160;</p>
<p>Using this model, if we wanted to create a sample report containing the number of matches won, Lost and Drawn by Arsenal, BI EE would fire 2 separate queries (2 queries that form the part of UNION in the above SQL) and then will stitch them&#160; externally as shown above in the sample query. We can control where the join (with a sub-query join pushed to the database or a BI Server in-memory join) happens. </p>
<p align="center">&#160;<img title="Picture 8" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="197" alt="Picture 8" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture81.png" width="504" border="0" /> </p>
<p align="center"><img title="Picture 9" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="178" alt="Picture 9" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture91.png" width="504" border="0" /> </p>
<p>This model turned out to be extremely flexible. For example, you can pick a team and analyze the stats for the team in isolation. Then you can compare the stats of your favorite team with some of the opponents that you do not like. This can further be opened up to Home and Away performance of each team against each opponent if required. There were some other stats that a lot of people were interested to see. For example, people wanted to know the referee who was responsible for maximum red cards in a season. While betting on a team, we need to analyze the pros and cons of each team by looking at the team stats over a period of time. Also, there are other extraneous factors like biased referees etc. So, using this model one can find out which referee has the potential to be biased against which team.</p>
<p>There were quite a few other things this model supported. For example, currently the points system in the EPL is 3 for win, 0 for Loss and 1 for Draw. People wanted to know if the number of points for a win is reduced to 2 or increased to 2 for a Draw, who would have won the championship. What if, we added a negative point for every red card for a team in a match, who would have won the championship. Some more scenarios like number of matches that a team was winning in Half time but went on to lose were possible as well(Adrian wanted an attribute for this which is the correct way, but again we had so many measures exposed that we were able to derive it out of the existing measures). A sample screenshot of some of the reports that we showed is given below </p>
<p align="center">&#160;<img title="Picture 10" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="203" alt="Picture 10" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture102.png" width="504" border="0" /> </p>
<p align="center"><img title="Picture 12" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="315" alt="Picture 12" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture121.png" width="442" border="0" /> </p>
<p align="center">&#160;<img title="Picture 14" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="315" alt="Picture 14" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture143.png" width="423" border="0" /> </p>
<p>As you see, as part of the demo, we also did a bit of UI customization to match our company standard. I especially liked the login screen </p>
<p align="center">&#160;<img title="Picture 16" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="315" alt="Picture 16" src="http://www.rittmanmead.com/wp2/wp-content/uploads/2009/12/Picture162.png" width="374" border="0" /> </p>
<p>The entire UI customization that we did was pretty straightforward. All we did was, we created a style so that the necessary dashboards can be altered to our look and feel. Apart from the style, we also created a Skin so that the every aspect of the dashboards/answers were customized as well. Myself and Mark have been discussing about a possibility of creating a small utility to automate the customization of the entire look and feel of BI EE. If we ever manage to create that, as always, we will share them here. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/12/22/fantasy-football-and-obiee-part-1-you-can-be-statto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rittman Mead Presentations at UKOUG Tech and EBS Conference</title>
		<link>http://www.rittmanmead.com/2009/11/27/rittman-mead-presentations-at-ukoug-tech-and-ebs-conference/</link>
		<comments>http://www.rittmanmead.com/2009/11/27/rittman-mead-presentations-at-ukoug-tech-and-ebs-conference/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 22:32:26 +0000</pubDate>
		<dc:creator>Mark Rittman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rittmanmead.com/?p=3674</guid>
		<description><![CDATA[Just a quick remind for anyone who&#8217;ll be attending the UKOUG Technology and EBS Conference at the Birmingham ICC next week. We&#8217;ll be exhibiting at Stand 50, and will also be delivering the following sessions:

&#8220;Oracle BI EE and Essbase Integration Step-by-Step&#8221;, Monday 14:45 &#8211; 15:45, presented by myself and Venkat Janakiraman
&#8220;Oracle Warehouse Builder 11gR2 New [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick remind for anyone who&#8217;ll be attending the UKOUG Technology and EBS Conference at the Birmingham ICC next week. We&#8217;ll be exhibiting at Stand 50, and will also be delivering the following sessions:</p>
<ul>
<li><a href="http://techandebs.ukoug.org/default.asp?p=3227&#038;dlgact=shwprs&#038;prs_prsid=3934&#038;day_dayid=32">&#8220;Oracle BI EE and Essbase Integration Step-by-Step&#8221;</a>, Monday 14:45 &#8211; 15:45, presented by myself and Venkat Janakiraman</li>
<li><a href="http://techandebs.ukoug.org/default.asp?p=3227&#038;dlgact=shwprs&#038;prs_prsid=4593&#038;day_dayid=32">&#8220;Oracle Warehouse Builder 11gR2 New Features&#8221;</a>, Monday 16:15 &#8211; 17:00, presented by myself</li>
<li><a href="http://techandebs.ukoug.org/default.asp?p=3227&#038;dlgact=shwprs&#038;prs_prsid=3933&#038;day_dayid=33">&#8220;Under the covers of ODI and the Oracle BI Applications&#8221;</a>, Tuesday 14.30 &#8211; 15.30, presented by myself</li>
<li><a href="http://techandebs.ukoug.org/default.asp?p=3227&#038;dlgact=shwprs&#038;prs_prsid=3932&#038;day_dayid=34">&#8220;Oracle BI Enterprise Edition Masterclass&#8221;</a>, Wednesday 13.50 &#8211; 15.50, presented by myself, Venkat, Adrian Ward and Borkur</li>
</ul>
<p>This year at the Masterclass, as well as tackling the basics of modeling and reporting, we&#8217;ll be tackling four of the questions that most often come up from our customers: </p>
<ul>
<li>How do we model non-dimensional (OLTP) sources using the BI Administration tool;</li>
<li>How do we join together fact tables that do not have the same dimensionality;</li>
<li>How do we model single-table sources, and</li>
<li>How do we (safely) migrate OBIEE projects from one environment to the other.</li>
</ul>
<p>Although OBIEE 10g is a fairly mature technology now, these questions always come up and it seems that no-one is too sure about how to approach them. We&#8217;ll deliver a session on this (together with a general update on the product) and try and tackle them for you.</p>
<p>We&#8217;re also running a BI &#8220;Fringe Event&#8221; on the Tuesday night at the Pitcher and Piano from 6pm &#8211; 9pm, where we&#8217;ll put some money behind the bar, lay on some nibbles and try and get all the BI speakers, delegates and users together for an informal get together. We&#8217;ll be inviting all those that came to the BI Forum in May and the Training Days in October as a kind of &#8220;reunion&#8221;, but we&#8217;d be happy to have anyone along with something interesting to say on Oracle BI. If you want to come along, please <a href="mailto:mark.rittman@rittmanmead.com">send me an email</a> or come along to Stand 50 so we can get an idea on numbers. Other than that, see you all in Birmingham in a few weeks time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rittmanmead.com/2009/11/27/rittman-mead-presentations-at-ukoug-tech-and-ebs-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
