<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: A First Look at Oracle OLAP 11g</title>
	<atom:link href="http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/</link>
	<description>Delivered Intelligence</description>
	<lastBuildDate>Mon, 15 Mar 2010 14:12:52 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: John</title>
		<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/comment-page-1/#comment-3910</link>
		<dc:creator>John</dc:creator>
		<pubDate>Fri, 22 Feb 2008 14:57:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2007/11/17/a-first-look-at-oracle-olap-11g/#comment-3910</guid>
		<description>When you installed did you install the patched version?  I believe it is 11.1.0.6.  We have been working with 11g for some time and found alot of issues which were handle in the .0.6 patch.</description>
		<content:encoded><![CDATA[<p>When you installed did you install the patched version?  I believe it is 11.1.0.6.  We have been working with 11g for some time and found alot of issues which were handle in the .0.6 patch.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Almost started OLAP 11g&#8230; &#171; Pete Scott&#8217;s random notes</title>
		<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/comment-page-1/#comment-3905</link>
		<dc:creator>Almost started OLAP 11g&#8230; &#171; Pete Scott&#8217;s random notes</dc:creator>
		<pubDate>Sun, 17 Feb 2008 09:07:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2007/11/17/a-first-look-at-oracle-olap-11g/#comment-3905</guid>
		<description>[...] problems (new ones!) which needed to be worked through. I decided to have a look at the stuff Mark wrote about in his initial glance at Oracle 11g OLAP and repeat his work with the global schema - this [...]</description>
		<content:encoded><![CDATA[<p>[...] problems (new ones!) which needed to be worked through. I decided to have a look at the stuff Mark wrote about in his initial glance at Oracle 11g OLAP and repeat his work with the global schema &#8211; this [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shankar</title>
		<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/comment-page-1/#comment-3911</link>
		<dc:creator>Shankar</dc:creator>
		<pubDate>Fri, 21 Dec 2007 13:57:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2007/11/17/a-first-look-at-oracle-olap-11g/#comment-3911</guid>
		<description>Just wondering how relational aggregates (MVs) and 11g OLAP based query rewrite can be applied to Inventory data which typically have a dimension specific aggregation method :

SUM over OTHER (all dimensions except TIME),
HLAST (LAST_VALUE) over TIME


Since the OLAP AW needs to be consistent with the relational MVs, they require the same aggregation operator along all dimensions of the cube (measure) and so we will not be able to model this.

Is it a fair to say that unless OLAP allows for a different aggregation operator (per dimension) for the cube, the query rewrite (from MVs to AW) feature will not be useful for end of period kind of calculations (stock information, say)?

To word the issue differently, without OLAP in the picture, How is Inventory data (E.g: stock on hand information which needs dimension specific aggregation), modeled with MVs to utilize Query Rewrite and speed up relational reporting?

Do the MVs (aggregate table definitions) required to simulate such calculations suffer from restrictions like
* MVs are not suitable for fast refresh
* MVs need to be rebuilt completely when base data changes
making them almost unusable (as MVs).

MV Definition would perhaps be something like
SELECT ..., LAST_VALUE(fact_col) OVER TIME partition by ...
FROM (
SELECT TIME, ..., SUM(fact.col) fact_col
FROM FACT, TIME,
WHERE ...joins...
AND  ...filters...
order by time asc
) join with</description>
		<content:encoded><![CDATA[<p>Just wondering how relational aggregates (MVs) and 11g OLAP based query rewrite can be applied to Inventory data which typically have a dimension specific aggregation method :</p>
<p>SUM over OTHER (all dimensions except TIME),<br />
HLAST (LAST_VALUE) over TIME</p>
<p>Since the OLAP AW needs to be consistent with the relational MVs, they require the same aggregation operator along all dimensions of the cube (measure) and so we will not be able to model this.</p>
<p>Is it a fair to say that unless OLAP allows for a different aggregation operator (per dimension) for the cube, the query rewrite (from MVs to AW) feature will not be useful for end of period kind of calculations (stock information, say)?</p>
<p>To word the issue differently, without OLAP in the picture, How is Inventory data (E.g: stock on hand information which needs dimension specific aggregation), modeled with MVs to utilize Query Rewrite and speed up relational reporting?</p>
<p>Do the MVs (aggregate table definitions) required to simulate such calculations suffer from restrictions like<br />
* MVs are not suitable for fast refresh<br />
* MVs need to be rebuilt completely when base data changes<br />
making them almost unusable (as MVs).</p>
<p>MV Definition would perhaps be something like<br />
SELECT &#8230;, LAST_VALUE(fact_col) OVER TIME partition by &#8230;<br />
FROM (<br />
SELECT TIME, &#8230;, SUM(fact.col) fact_col<br />
FROM FACT, TIME,<br />
WHERE &#8230;joins&#8230;<br />
AND  &#8230;filters&#8230;<br />
order by time asc<br />
) join with</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bud Endress</title>
		<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/comment-page-1/#comment-3909</link>
		<dc:creator>Bud Endress</dc:creator>
		<pubDate>Mon, 19 Nov 2007 16:06:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2007/11/17/a-first-look-at-oracle-olap-11g/#comment-3909</guid>
		<description>Nice write up.  A few comments.

Aggregation and Partitioning

With cost-based aggregation, a setting of 0 means do nothing to optimized the aggregate space of the cube.  Low cost on the build, not usually very useful for query.  A setting of 1 causes the composite to be built in the aggregate space, but none of the measure values to be precomputed.  Unless the cube is a small, what-if type cube you should always choose a value of 1 (or higher).  Values between 2 and 100 simply precompute more of the aggregate space.  A good starting point is 20 (50 is very high).

The value, by the way, really isn&#039;t a true indication of the percentage of the cube being precomputed.  It&#039;s simply a relatively scale.  It could just as well have been 0 to 50.  (And, I agree, size or time constraints would be more understandable.)

It is important to understand the relationship between partitioning and cost-based aggregation.  If you partition the cube, you will notice that there will be cost-based aggregation settings for both the bottom and top partitions.  The bottom partition includes all the members of the partitioned dimension up to and including the partition level.  E.g.,  if you partition on Quarter it will include Days through Quarter (and well as values from the other dimensions).  The top partition will include levels above the partition dimension.  E.g., Year.

The top partition can be very large (E.g., all years by all other dimension values).  So, any significant pre-aggregation of the top partition can be expensive (lots of data in a single partition, which often get bogged down in I/O).  I try to partition at as high a level as possible and set the top partition to 0 or 1.

Remember that the cube is incrementally aggregated within a partition during a refresh (unless you&#039;ve chosen to clear values first), so it&#039;s not necessary important to partition at a low level to isolate refreshed.  Partitioning has more to do with parallel processing and keeping data in memory (and off disk).

Requirements for MVs

The requirements for MVs (levels, agg operators, etc.) are required to ensure that the cube matches the capabilities of SQL query because the data returned by the cube is compatible with what would be returned by the SQL statement had the query block actually executed the GROUP BY.  In the case of requiring compressed cubes, the aggregation index of the compressed cube ensured correct looping within the cube and thus correct row counts for the cube MV.

Sparsity Advisor

It looks like you are using the Global data set.  Global is actually very dense (so it&#039;s easy to use in BI tools) and thus a compressed composite isn&#039;t the best choice unless you need it for cube MVs.  With real world data, the sparsity advisor will almost always choose compressed.

Cube Scripts

For MVs, the cube most be a load and aggregate.  You can&#039;t introduce calcs in to the cube which could cause it to be semantically inconsistent with the MV definition.

MV Advisor

No Enterprise Manager management packs are required to use the OLAP Option.</description>
		<content:encoded><![CDATA[<p>Nice write up.  A few comments.</p>
<p>Aggregation and Partitioning</p>
<p>With cost-based aggregation, a setting of 0 means do nothing to optimized the aggregate space of the cube.  Low cost on the build, not usually very useful for query.  A setting of 1 causes the composite to be built in the aggregate space, but none of the measure values to be precomputed.  Unless the cube is a small, what-if type cube you should always choose a value of 1 (or higher).  Values between 2 and 100 simply precompute more of the aggregate space.  A good starting point is 20 (50 is very high).</p>
<p>The value, by the way, really isn&#8217;t a true indication of the percentage of the cube being precomputed.  It&#8217;s simply a relatively scale.  It could just as well have been 0 to 50.  (And, I agree, size or time constraints would be more understandable.)</p>
<p>It is important to understand the relationship between partitioning and cost-based aggregation.  If you partition the cube, you will notice that there will be cost-based aggregation settings for both the bottom and top partitions.  The bottom partition includes all the members of the partitioned dimension up to and including the partition level.  E.g.,  if you partition on Quarter it will include Days through Quarter (and well as values from the other dimensions).  The top partition will include levels above the partition dimension.  E.g., Year.</p>
<p>The top partition can be very large (E.g., all years by all other dimension values).  So, any significant pre-aggregation of the top partition can be expensive (lots of data in a single partition, which often get bogged down in I/O).  I try to partition at as high a level as possible and set the top partition to 0 or 1.</p>
<p>Remember that the cube is incrementally aggregated within a partition during a refresh (unless you&#8217;ve chosen to clear values first), so it&#8217;s not necessary important to partition at a low level to isolate refreshed.  Partitioning has more to do with parallel processing and keeping data in memory (and off disk).</p>
<p>Requirements for MVs</p>
<p>The requirements for MVs (levels, agg operators, etc.) are required to ensure that the cube matches the capabilities of SQL query because the data returned by the cube is compatible with what would be returned by the SQL statement had the query block actually executed the GROUP BY.  In the case of requiring compressed cubes, the aggregation index of the compressed cube ensured correct looping within the cube and thus correct row counts for the cube MV.</p>
<p>Sparsity Advisor</p>
<p>It looks like you are using the Global data set.  Global is actually very dense (so it&#8217;s easy to use in BI tools) and thus a compressed composite isn&#8217;t the best choice unless you need it for cube MVs.  With real world data, the sparsity advisor will almost always choose compressed.</p>
<p>Cube Scripts</p>
<p>For MVs, the cube most be a load and aggregate.  You can&#8217;t introduce calcs in to the cube which could cause it to be semantically inconsistent with the MV definition.</p>
<p>MV Advisor</p>
<p>No Enterprise Manager management packs are required to use the OLAP Option.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sandeep</title>
		<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/comment-page-1/#comment-3908</link>
		<dc:creator>Sandeep</dc:creator>
		<pubDate>Sun, 18 Nov 2007 22:52:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2007/11/17/a-first-look-at-oracle-olap-11g/#comment-3908</guid>
		<description>AWM 11g uses the 11g OLAP API to create the 11g AWs.
It uses the AWXML API to create the 10g AW
Another interesting featurue I would like to point out is the OLAP dictionary views that let you query the metadata using SQL. You can see all the views by clicking on the OLAP dictionary reports in AWM</description>
		<content:encoded><![CDATA[<p>AWM 11g uses the 11g OLAP API to create the 11g AWs.<br />
It uses the AWXML API to create the 10g AW<br />
Another interesting featurue I would like to point out is the OLAP dictionary views that let you query the metadata using SQL. You can see all the views by clicking on the OLAP dictionary reports in AWM</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Rittman</title>
		<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/comment-page-1/#comment-3906</link>
		<dc:creator>Mark Rittman</dc:creator>
		<pubDate>Sun, 18 Nov 2007 21:02:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2007/11/17/a-first-look-at-oracle-olap-11g/#comment-3906</guid>
		<description>Hi Dan,

I just used SQL Developer, selected the MV and then clicked on the SQL tab - it then generated the SQL that is used to define the object, no issue with character length.

regards

Mark</description>
		<content:encoded><![CDATA[<p>Hi Dan,</p>
<p>I just used SQL Developer, selected the MV and then clicked on the SQL tab &#8211; it then generated the SQL that is used to define the object, no issue with character length.</p>
<p>regards</p>
<p>Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Gerena</title>
		<link>http://www.rittmanmead.com/2007/11/17/a-first-look-at-oracle-olap-11g/comment-page-1/#comment-3907</link>
		<dc:creator>Dan Gerena</dc:creator>
		<pubDate>Sun, 18 Nov 2007 15:16:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.rittmanmead.com/wp2/2007/11/17/a-first-look-at-oracle-olap-11g/#comment-3907</guid>
		<description>On a somewhat related note, what mechanism do you use to view the MV logic? I use Discoverer Relational, and query the &quot;DBA Snapshots&quot; object to view the logic, but Discoverer has a limitation of 1400 or so characters in a single cell, so the logic gets truncated. Do you know of a better means?</description>
		<content:encoded><![CDATA[<p>On a somewhat related note, what mechanism do you use to view the MV logic? I use Discoverer Relational, and query the &#8220;DBA Snapshots&#8221; object to view the logic, but Discoverer has a limitation of 1400 or so characters in a single cell, so the logic gets truncated. Do you know of a better means?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
