<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Gobán Saor &#187; Palo</title>
	<atom:link href="http://blog.gobansaor.com/category/palo/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gobansaor.com</link>
	<description>A country datasmith.</description>
	<lastBuildDate>Fri, 27 Jan 2012 10:22:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.gobansaor.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/67e164f5d51c2b3115a7819b84505c13?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Gobán Saor &#187; Palo</title>
		<link>http://blog.gobansaor.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.gobansaor.com/osd.xml" title="Gobán Saor" />
	<atom:link rel='hub' href='http://blog.gobansaor.com/?pushpress=hub'/>
		<item>
		<title>Handling Flat, Parent-Child and Nested Set Hierarchies</title>
		<link>http://blog.gobansaor.com/2011/02/18/handling-flat-parent-child-and-nested-set-hierarchies/</link>
		<comments>http://blog.gobansaor.com/2011/02/18/handling-flat-parent-child-and-nested-set-hierarchies/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 19:58:19 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[microETL]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Adjacency list]]></category>
		<category><![CDATA[Nested Set]]></category>
		<category><![CDATA[Parent Child Hierarchy]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1338</guid>
		<description><![CDATA[Alberto Ferrari describes a method of handling un-balanced hierarchies in PowerPivot. As usual Alberto comes up with an elegant solution to something that looks near impossible. For more of the same, check out  his book, co-authored with Marco Russo, Microsoft PowerPivot &#8230; <a href="http://blog.gobansaor.com/2011/02/18/handling-flat-parent-child-and-nested-set-hierarchies/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1338&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Alberto Ferrari<a href="http://sqlblog.com/blogs/alberto_ferrari/archive/2011/02/15/powerpivot-and-parent-child-hierarchies.aspx"> describes a method of handling un-balanced hierarchies in PowerPivot</a>. As usual Alberto comes up with an elegant solution to something that looks near impossible. For more of the same, check out  his book, co-authored with Marco Russo, <a href="http://www.amazon.com/dp/0735640580/?tag=se04-20">Microsoft PowerPivot for Excel 2010: Give Your Data Meaning</a>. It&#8217;s the best book out there for those from a data modeling background trying to make sense of this new form of ROLAP or indeed for those from a spreadsheet background who wish to gain a better insight into PowerPivot-oriented data modelling.</p>
<p>PowerPivot has problems with un-balanced hierarchies (aka variable-depth parent-child hierarchies) as it&#8217;s essentially a relational engine. Relational databases have traditionally sucked at handling such hierarchies which are usually implemented using an <a href="http://www.sqlsummit.com/AdjacencyList.htm">Adjacency List Model</a>.</p>
<p>When I moved from <a href="http://en.wikipedia.org/wiki/Network_model_(database)">network CODASYL databases </a>to relational databases all those years ago it was my biggest complaint about the &#8216;new order&#8217; of the RDBMs. I guess it&#8217;s my network database heritage that makes working with MOLAP engines such as <a href="http://www.palo.net/en/">Palo</a> seem so natural. Such databases are kind to hierarchies and to the users of hierarchies.</p>
<p>Most of the major commercial databases have now extended their SQL offering to handle hierarchy navigation, you can see the SQL Server&#8217;s way in Alberto&#8217;s post. But SQLite offers no help, so in order to make handling for what are in fact very common requirements for reporting and analysis datasets, I&#8217;ve extended the SQLite SQL available within microETL with 4  useful helper functions.</p>
<p>All 4 work with tables of the following structure:</p>
<h5 style="text-align:center;"><em>Create table whatEver (HierarchyName text, Parent text,Child text,Name text,Level int,setID int,setLeft in,setRight int);</em></h5>
<p>Where:</p>
<ul>
<li>HierarchyName allows for multiple hierarchies to be stored in the one table.</li>
<li>Parent is the parent node for &#8220;this Child&#8221;. Can be text or a numeric surrogate key. Top level nodes will be set to null (or = &#8220;&#8221;).</li>
<li>Child is the node identifier.</li>
<li>Name is the textual identifier. If not populated, uses Child value.</li>
<li>Level is the depth from top of the current path. Levels = 0 are top level nodes. Not strictly required, but so useful it&#8217;s worth populating.</li>
<li>setID like Level is not required to be populated but can be useful in Nested Set queries.</li>
<li>setLeft is the left-hand side of the Nested Set range associated with this node.</li>
<li>setRight is the right-hand side of the Nested Set range.</li>
</ul>
<p>What&#8217;s all this Nested Set stuff? As I pointed out above, SQL engines tend not to agree on a method of hierarchy navigation, if indeed they offer any method. <em><strong>Nested Sets</strong></em> is the classic data modelling method to get around this problem (if you look at hierarchy tables in cross-RDBMs packaged applications you&#8217;ll often find a variation on this method).</p>
<p>See this post <a href="http://dev.mysql.com/tech-resources/articles/hierarchical-data.html">Managing Hierarchical Data in MySQL</a> for a good description of the technique.</p>
<p>There&#8217;s no need to populate these &#8216;set columns&#8217; unless required they&#8217;re there just in case.</p>
<h3>Function: make_pc_hier</h3>
<p>This function is for handling the opposite problem to that which Alberto faced. It takes an existing flattened hierarchy and turns it into a &#8220;proper&#8221; parent-child one (hence the <em><strong>pc</strong></em> element of the name). Why would you do that? Well, MOLAP tools such as Palo not only handle unbalanced hierarchies, they usually store hierarchies using an adjacency list model. Also, if you wish to use Nested Set SQL, you&#8217;ll first need the model in parent-child format.</p>
<p>The function&#8217;s 1st argument is the name of the hierarchy table; if it exists it must be in the format specified above, otherwise a table of that name with the required format will be created by the function.</p>
<p>The 2nd argument is the hierarchy&#8217;s name.</p>
<p>The remaining arguments are the source columns for the hierarchy in the sequence of level 0 to level n.</p>
<p>The function is in fact a aggregation function (like SUM()) so can be used to group the required columns from a table where they are repeated (such as a fact table on which the hierarchy has been denormalised).</p>
<p>Example (click on it to see larger version):</p>
<p><a href="http://gobansaor.files.wordpress.com/2011/02/make_pc_hier_example.png"><img class="aligncenter size-medium wp-image-1340" title="make_pc_hier_example" src="http://gobansaor.files.wordpress.com/2011/02/make_pc_hier_example.png?w=300&#038;h=159" alt="" width="300" height="159" /></a></p>
<h3>Function: make_pc_hier_from_tree</h3>
<p>This is similar to make_pc_hier() except the source table must be in a &#8216;tree format&#8217;. It is also an aggregate function but the use of <em><strong>group by</strong></em> would, in this case, not make sense. The use case for this is the easy creation of hierarchy dimensions from a tree structure for use in the likes of Palo.</p>
<p>Example:</p>
<p><a href="http://gobansaor.files.wordpress.com/2011/02/make_pc_hier_from_tree_example.png"><img class="aligncenter size-medium wp-image-1342" title="make_pc_hier_from_tree_example" src="http://gobansaor.files.wordpress.com/2011/02/make_pc_hier_from_tree_example.png?w=300&#038;h=158" alt="" width="300" height="158" /></a></p>
<h3>Function: flatten_pc_hier</h3>
<p>This takes four mandatory and an optional fifth argument. First two are the usual hierarchy table name and hierarchy name. The 3rd is the output table to receive the flattened table. The first column of this output table will be populated with the base element Child IDs (i.e. the deepest level in the nodes&#8217; paths). The remaining columns must match the number of the next argument. This 4th argument specifies the maximum depth of the flattened hierarchy, so if the hierarchy is to be, for example, Sector,Brand,Product, then this would be 3.</p>
<p>The optional 5th argument if set to Y will not fill unused columns in an unbalanced hierarchy, otherwise the final nodes are filled out to the right with the last non-blank Name. This is a &#8220;stored procedure&#8221; like function, so should be called using &#8220;<em>Select function(arg1,arg2 &#8230;);&#8221;</em> syntax.</p>
<p>Example:</p>
<p><a href="http://gobansaor.files.wordpress.com/2011/02/flatten_example.png"><img class="aligncenter size-medium wp-image-1344" title="flatten_example" src="http://gobansaor.files.wordpress.com/2011/02/flatten_example.png?w=300&#038;h=159" alt="" width="300" height="159" /></a></p>
<h3>Function: nested_set_hier</h3>
<p>This takes the two usual arguments, hierarchy table and hierarchy name. Its function is to populate the &#8220;nested set&#8221; fields of the supplied table to make a valid Nested Set. Again, it&#8217;s a &#8220;stored procedure&#8221; function so should be called using the &#8220;<em>Select function(arg1,arg2 &#8230;);&#8221;</em> syntax.</p>
<p>Example</p>
<p><a href="http://gobansaor.files.wordpress.com/2011/02/nested_example.png"><img class="aligncenter size-medium wp-image-1345" title="nested_example" src="http://gobansaor.files.wordpress.com/2011/02/nested_example.png?w=300&#038;h=162" alt="" width="300" height="162" /></a></p>
<h3>Download Example:</h3>
<p>Download  microETL from <a href="http://www.gobansaor.com/microetl">http://www.gobansaor.com/microetl</a> and locate the hier97-2003.xls file.</p>
<p>The microETL project  is password protected; if you need access to the code just email me I&#8217;ll send you on the password.</p>
<p><strong>Update: </strong></p>
<p>There&#8217;s now an Alberto_hier workbook (in 2007/2010 format) with a worked example of building Alberto&#8217;s modified dimension. This workbook also includes a PowerPivot cube demonstrating the required measure (plus an equivalent Nested Set SQL Query).</p>
<p><a href="http://gobansaor.files.wordpress.com/2011/02/nested_set_powerpivot.png"><img class="aligncenter size-medium wp-image-1387" title="Nested_Set_PowerPivot" src="http://gobansaor.files.wordpress.com/2011/02/nested_set_powerpivot.png?w=300&#038;h=162" alt="" width="300" height="162" /></a></p>
<p><strong><em>For more on handling nested sets in PowerPivot see <a href="http://blog.gobansaor.com/2011/03/10/powerpivot-nested-set-measures/">http://blog.gobansaor.com/2011/03/10/powerpivot-nested-set-measures/</a></em></strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1338/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1338&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2011/02/18/handling-flat-parent-child-and-nested-set-hierarchies/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/02/make_pc_hier_example.png?w=300" medium="image">
			<media:title type="html">make_pc_hier_example</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/02/make_pc_hier_from_tree_example.png?w=300" medium="image">
			<media:title type="html">make_pc_hier_from_tree_example</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/02/flatten_example.png?w=300" medium="image">
			<media:title type="html">flatten_example</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/02/nested_example.png?w=300" medium="image">
			<media:title type="html">nested_example</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/02/nested_set_powerpivot.png?w=300" medium="image">
			<media:title type="html">Nested_Set_PowerPivot</media:title>
		</media:content>
	</item>
		<item>
		<title>Slowly Changing Dimensions &#8211; time to stop worrying.</title>
		<link>http://blog.gobansaor.com/2011/01/08/slowly-changing-dimensions-time-to-stop-worrying/</link>
		<comments>http://blog.gobansaor.com/2011/01/08/slowly-changing-dimensions-time-to-stop-worrying/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 20:15:59 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[BI all-rounder]]></category>
		<category><![CDATA[micro ETL]]></category>
		<category><![CDATA[raw-to-actionable data gap]]></category>
		<category><![CDATA[Self-service BI]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1261</guid>
		<description><![CDATA[Anybody who has worked on a major data warehouse project has war stories about that most awkward of BI concepts, the slowly changing dimension (see http://en.wikipedia.org/wiki/Slowly_changing_dimension). The problem is not so much the need to keep a history of changes to &#8230; <a href="http://blog.gobansaor.com/2011/01/08/slowly-changing-dimensions-time-to-stop-worrying/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1261&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Anybody who has worked on a major data warehouse project has war stories about that most awkward of BI concepts, the slowly changing dimension (see <a href="http://en.wikipedia.org/wiki/Slowly_changing_dimension">http://en.wikipedia.org/wiki/Slowly_changing_dimension</a>).</p>
<p>The problem is not so much the need to keep a history of changes to master data attributes nor how to model these in the underlying data warehouse but how, or if, to model SCDs on end-user facing cubes.</p>
<p>SCDs have the potential to make end-user interaction with a cube more complex and error prone. A similar problem arises when a dimension can have several &#8220;roles&#8221; such as a sales fact with an order date,  dispatch date and invoice date.</p>
<p>Where the nature of the problem requires the exposure of dimensional change in a cube model then there&#8217;s no alternative. But, when the justification is that there might be a need in the future or that occasionally in the past that need existed then the argument that front-end cubes should solve specific not generic problems should apply. Holding that line was not always possible when the cost of developing cubes was high due to professional IT involvement and the well founded fear that the money might be wasted as requirements changed over time. The result was often cubes that were more generic (and long-lived, often to the point of irrelevancy) compared to a design that was more tightly focused.</p>
<p><a href="http://gobansaor.files.wordpress.com/2011/01/crystal-ball.jpg"><img class="alignleft size-medium wp-image-1265" title="crystal-ball" src="http://gobansaor.files.wordpress.com/2011/01/crystal-ball.jpg?w=300&#038;h=187" alt="" width="300" height="187" /></a>This is where I think self-service BI tools such as PowerPivot or Palo changes things; if those who pay for BI need no longer insist that a design is future proof or that a single model be capable of handling all the current views of the business they can concentrate on building just-in-time highly focused (and hence usually simpler) models.</p>
<p>Different groups in the same business can have variations that suit them e.g. HR/Payroll might was to see a sales rep who has changed sales area reported against the rep&#8217;s actual sales while Sales/Marketing might be interested in the potential/history of the rep&#8217;s current sales area. Likewise, with date roles, call centre management might wish to report against order date, while the warehouse guys focus on dispatch date, and Accounts only have interest in those transactions with an invoice date.</p>
<p>But what about <a class="zem_slink" title="Single version of the truth" rel="wikipedia" href="http://en.wikipedia.org/wiki/Single_version_of_the_truth">single-version-of-the-truth</a> worries, what about reconciliation? This is where professional IT come back into the picture. Self service BI doesn&#8217;t mean do-it-all-by-yourself BI, no more than a self-service sausage and bacon hotel breakfast means you first catch a pig. The marshalling and delta management of data remains an IT responsibility, very small organisations and/or skilled end-users may be the exception to the rule, but ETL and data repository design are non-trivial problems and look likely to remain so. But with more and more of the front-end been delegated to (or snatched by) business end-users, the nature of back-end ETL and data modeling will change. Many of the resources once applied to a fully IT owned BI project will be focused on speedy, cost effective and accurate data provisioning, a less glamorous and largely invisible role compared to putting pretty dashboards on the CEO&#8217;s desktop. As a result, many IT staff with front-of-house skills who are now regarded as IT &#8220;assets&#8221; will more and more see themselves (and be seen) as front-line business ones.</p>
<p>So is this end of the road for the all-rounder, the catcher of pigs, frier of bacon and breakfast waiter rolled into one? No, I think not, there will continue to be a need for those individuals (or small teams) who can quickly and effectively tackle<em> the once-offs, the emergencies and the need-to-knows</em> that &#8220;normal&#8221; business practice continually brings to the surface. Small business (or isolated departments in larger concerns) will also continue to need tailored &#8221;end-to-end solutions&#8221;.</p>
<p>While I do see the continuing need for <em>all-rounders</em> their background (and hence the tools and product features to support them) will change from IT folks with business skills  to end-users with IT skills. Tools such as PowerPivot are an important first step on that journey, more end-user focused ETL tools (and services) is the next step. In the mean time, the world will have to depend on the likes of me (IT guy with business skills armed with a hodge-podge of <a href="http://blog.gobansaor.com/category/microetl/">ETL tools</a> and techniques to bridge the <em>raw-to-actionable data gap</em>) for most of their BI all-rounders.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1261/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1261&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2011/01/08/slowly-changing-dimensions-time-to-stop-worrying/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/01/crystal-ball.jpg?w=300" medium="image">
			<media:title type="html">crystal-ball</media:title>
		</media:content>
	</item>
		<item>
		<title>Excel in Data</title>
		<link>http://blog.gobansaor.com/2010/11/02/excel-in-data/</link>
		<comments>http://blog.gobansaor.com/2010/11/02/excel-in-data/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 16:47:19 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[olap]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Talend]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[micro ETL]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1196</guid>
		<description><![CDATA[My speciality is data, more specifically, data at the edges. Data that has been extracted from, or needs to be generated outside of, formal systems. Such data tends to be the extremely valuable and useful, but only if shaped into &#8230; <a href="http://blog.gobansaor.com/2010/11/02/excel-in-data/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1196&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://gobansaor.files.wordpress.com/2010/11/excelindata-logo.png"><img class="alignleft size-full wp-image-1202" title="Excel In Data" src="http://gobansaor.files.wordpress.com/2010/11/excelindata-logo.png?w=500" alt=""   /></a>My speciality is data, more specifically, data at the edges. Data that has been extracted from, or needs to be generated outside of, formal systems. Such data tends to be the extremely valuable and useful, but only if shaped into a format that has meaning to those who can use and analyse it. I&#8217;ve been extracting, marshalling and shaping such data for most of my 30 years in the IT business, I&#8217;m a datasmith.</p>
<p>The technical term for what I do is<a href="http://blog.gobansaor.com/2010/08/20/micro-etl-in-the-powerpivot-age/"> ETL (Extract, Transform &amp; Load)</a>. It&#8217;s the name given to the skill-set and tools associated with the movement of datasets. It&#8217;s the unglamorous, but essential backbone, to a whole range of IT deliverables: Data Warehousing, BI (Business Intelligence), Planning &amp; Forecasting, New System Commissioning, Systems Integration.</p>
<p>In the past my skills would only have been of use to large IT departments, as major &#8220;data shaping&#8221; activities such as BI &amp; data warehousing were &#8220;owned&#8221; by IT; small businesses and departmental workgroups were outside the loop except as providers of requirements (and money) and as long-suffering &#8220;end users&#8221;.</p>
<p>This alienation from the process of data shaping and the need to simply &#8220;get things done&#8221; led to the evolution of<a href="http://blog.gobansaor.com/2009/10/25/excel-as-the-ipod-of-downloaded-data/"> &#8220;shadow IT&#8221;, usually involving Excel is some form or another</a>. Although many attempts have been made to control and tame this wild-west of data creation and consumption, they&#8217;ve largely failed. With good reason, the best people to get value out of data are those who depend on and generate the data in the first place.</p>
<p>Microsoft has long recognised this and has over the years improved Excel&#8217;s ability to handle and pivot lists (<a href="http://blog.gobansaor.com/2007/03/03/tables-vs-xml-the-data-lingua-franca-debate/">aka tables, the primary data artefacts of business</a>). Excel&#8217;s PivotTable is undoubtedly the world&#8217;s primary BI tool.</p>
<p>Microsoft has, with Excel 2010, introduced an even more powerful end-user pivoting tool, the free <a href="http://www.powerpivot.com/">PowerPivot add-in</a>. The world of self-service data analysis has changed for ever; not only can PowerPivot handle enormous amounts of data but it enables end-users and data analysts alike to build highly complex analytical models at a fraction of their previous cost.</p>
<p>PowerPivot offers the greatest returns to those organisations or individuals who have:</p>
<ul>
<li>access to report-friendly data sources, such as those provided by existing data warehouses.</li>
<li>The resources to purchase and maintain an Enterprise SharePoint farm (backed by Enterprise SQLServer) allowing PowerPiviot dashboards to be shared (and controlled) via a web interface. Such infrastructure, although ideal, comes with an expensive price tag.</li>
</ul>
<p>So, if your organisation or your team is missing one or both of the above is PowerPivot not for you?</p>
<p>Far from it, <a href="http://blog.gobansaor.com/2010/08/11/power-pivot-to-the-people/">PowerPivot is still extremely useful without either</a>. Data that&#8217;s not in the ideal format can still provide useful analyses, and both Excel and PowerPivot can help cleanse such data. Likewise, just like an ordinary workbook, a PowerPivot workbook can be emailed or placed on a shared drive (all the supporting data is embedded in the .xlsx file). The only problem is, the time and resources associated with this activity can be substantial if you don&#8217;t have the &#8216;micro ETL&#8217;  and general Excel VBA skills to help automate it. This is where I can help.</p>
<div>
<p>I&#8217;ve both the skills and the tools to build a rock-solid Excel-based ETL back-end for your PowerPivot projects. This can be as simple as a &#8220;good enough&#8221; data shaping automation for a single PowerPivot cube or a sophisticated &#8216;micro-Data Warehouse&#8217; which would act as a foundation for a more long-term self-service BI strategy. The only software product you&#8217;ll need to purchase is Excel, I&#8217;ll provide the rest. Most of the time Excel 2010&#8242;s  &amp; Powerpivot&#8217;s in-built ETL capabilities, automated with some VBA, will be all that is required but when more &#8216;firepower&#8217; is required:</p>
<ul>
<li><span style="font-size:small;"><span style="font-size:13px;line-height:22px;">I&#8217;ve assembled my own <a href="http://www.gobansaor.com/xlite">Excel based ETL tool</a> specifically to enable me to quickly and cheaply build such micro-ETL solutions, it&#8217;s a collection of best-of-breed open-source tools (such as <a title="SQLite" rel="homepage" href="http://blog.gobansaor.com/2009/03/14/sqlite-as-the-mp3-of-data/">SQLite</a>) driven by, and integrated into Excel (versions 2000 &#8211; 2010, 32bit &amp; <a href="I've assembled my own Excel based ETL tool specifically to enable me to quickly and cheaply build such micro-ETL solutions, it's a collection of best-of-breed open-source tools (such as SQLite, Python, Javascript) driven by, and integrated into, Excel">64bit</a>).<br />
</span></span></li>
<li><span style="font-size:small;"><span style="font-size:13px;line-height:22px;">I can call on <a href="http://www.palo.net/en/">Palo OLAP</a> (an open source, Excel focused budgeting &amp; forecasting tool)</span></span></li>
<li><span style="font-size:small;"><span style="font-size:13px;line-height:22px;"> </span></span>and on <a href="//www.talend.com/index.php">Talend</a>, a leading open source ETL and data-management suite.</li>
</ul>
<p>I can also automate the work-flows and non-ETL repetitive tasks associated with such projects. Tasks such as: generating questioners, marshalling and recording the resulting replies, generating non-PowerPivot workbook reports/pivots (remember, unlike previous versions, Excel 2010 can exist side-by-side with older versions of Office, only need to provide it to those who need its full power).</p>
<p>As for building PowerPivot cubes, I&#8217;ve a long background in the design &amp; delivery of <a href="http://en.wikipedia.org/wiki/ROLAP">ROLAP</a> &amp; <a href="http://en.wikipedia.org/wiki/MOLAP">MOLAP</a> solutions. PowerPivot is essentially a 3rd way of producing OLAP cubes, heavily influenced by the dimensional modelling technique commonly know as the <a href="http://blog.gobansaor.com/2010/07/09/star-schemas-to-boldly-go-where-no-excel-spreadsheet-has-gone-before/">star-schema</a>, but with the presentational simplicity of the Excel&#8217;s PivotTable and an Excel-like formula language (<a href="http://powerpivotpro.com/2009/11/15/introducing-powerpivot-dax-measures/">DAX</a>) bolted on. PowerPivot models built with an understanding of the usefulness of the star-schema approach will allow for richer and simpler data analystics. I can provide that knowledge or help you master it.</p>
<p>My involvement can be either on a &#8220;deliverable&#8221; basis, i.e. I deliver the required solution, usually fixed-price for a fixed deliverable or on a consultancy basis, where the &#8220;deliverable&#8221; is more an ongoing process and would often involve a degree of skills transfer.</p>
<p>I excel in data, with tools such as PowerPivot so can you.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1196&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2010/11/02/excel-in-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2010/11/excelindata-logo.png" medium="image">
			<media:title type="html">Excel In Data</media:title>
		</media:content>
	</item>
		<item>
		<title>Star Schemas &#8211; to boldly go where no Excel spreadsheet has gone before</title>
		<link>http://blog.gobansaor.com/2010/07/09/star-schemas-to-boldly-go-where-no-excel-spreadsheet-has-gone-before/</link>
		<comments>http://blog.gobansaor.com/2010/07/09/star-schemas-to-boldly-go-where-no-excel-spreadsheet-has-gone-before/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 17:50:10 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[olap]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[Star Schema]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1038</guid>
		<description><![CDATA[Need help designing PowerPivot models  see  www.gobansaor.com/powerpivot One of the many things that delights me about PowerPivot is the central role played by the Star Schema. Those of you reading with a data-warehousing background would shrug your shoulders and say: &#8230; <a href="http://blog.gobansaor.com/2010/07/09/star-schemas-to-boldly-go-where-no-excel-spreadsheet-has-gone-before/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1038&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong> Need help designing PowerPivot models </strong><br />
<strong>see  <a href="http://www.gobansaor.com/powerpivot?star">www.gobansaor.com/powerpivot</a></strong></p>
<p><a href="http://gobansaor.files.wordpress.com/2010/07/star-ship.png"><img class="alignleft size-medium wp-image-1044" title="star-ship" src="http://gobansaor.files.wordpress.com/2010/07/star-ship.png?w=300&#038;h=296" alt="" width="300" height="296" /></a></p>
<p>One of the many things that delights me about <a href="http://powerpivot.com/">PowerPivot</a> is the central role played by the Star Schema. Those of you reading with a data-warehousing background would shrug your shoulders and say: &#8220;So what, what else would you expect to find at the core of a BI tool?&#8221;.</p>
<p>Those from an Excel PivotTable background would ask: &#8220;What&#8217;s a Star Schema, why do we need one,what&#8217;s wrong with a the good old-fashioned single flattened table?&#8221;.</p>
<p>Those from a classic <a href="http://en.wikipedia.org/wiki/MOLAP">MOLAP</a> background (<a class="zem_slink" title="Essbase" href="http://en.wikipedia.org/wiki/Essbase" rel="wikipedia">Essbase</a>, TM1, Palo) might also ask: &#8220;Why do we need this extra layer? Load the cube directly from the operational data model and get on with it!&#8221;.</p>
<p>A quick Q&amp;A is perhaps the best way for me to explain why star schema design is a powerful skill in a datasmith&#8217;s toolset.</p>
<p>First off, what&#8217;s a Star Schema?</p>
<p>A Star Schema (also know as the dimensional model) is a <a class="zem_slink" title="Denormalization" href="http://en.wikipedia.org/wiki/Denormalization" rel="wikipedia">denormalised</a> (flattened) data model used to simplify an operational (OLTP) data model to better accommodate reporting and what-if analysis.</p>
<p>At its simplest, it consists of a central fact table with links back to a &#8220;surrounding&#8221; set of dimensional tables, hence the star name. A variation is the snow-flake schema, where the dimensional tables are not fully denormalised (e.g. Product Category-&gt;Product-&gt;Fact instead of  Product-&gt;Fact).</p>
<p>The role of the fact table (besides being the table that hosts most of the <a href="http://en.wikipedia.org/wiki/Measure_(data_warehouse)">measure fields</a>) is to create linkages between dimensions (such as Customer, Product, Date) usually based on an actual transactional event (e.g. Invoice) or a proposed event (such as a Budget or Forecasted Sale). In effect, simplifying  the often complex work-flow-driving connections of a typical operational system by using a single many-to-many relationship (modern ERP/CRM systems&#8217; data models consist of scores of configurable many-to-many relationships).</p>
<p>Many wrongly believe the star-schema was adopted for performance reasons and now that in-memory OLAP is becoming the norm it&#8217;s no longer necessary to use dimensional modelling techniques. In fact, in the early days of data-warehousing, RDBMs had great difficulty efficiently handling star-queries (and some such as MySQL and <a href="http://blog.gobansaor.com/2007/08/30/sqlite-star-query/">SQLite, still do</a>).</p>
<p>The original primary purpose of the star schema was to simplify the SQL required to access reporting data; to make the model more approachable to non-technical users. Of course, even simple SQL was beyond the knowledge or interest of most end-users but a sizeable proportion were happy to do so (often helped by SQL &#8220;generators&#8221; such as MicroStratery or Business Objects). But even in situations where SQL-wielding civilians were not to be found, the simplicity of the dimensional models  proved to be a valuable aid when establishing and developing the warehouse data requirements. PowerPivot requires no SQL knowledge to manipulate the dimensional model which brings the original concept full-circle but this time opening its possibilities to a much wider audience.</p>
<p>But surely, concentrating on the actual reports would be a more valuable requirements gathering exercise?</p>
<p>A so called &#8220;bottom-up approach&#8221; is often the best way to approach a reporting request particularly if the reports are simple one-off &#8220;traditional&#8221; reports. But for self-service BI, this needs to be combined with a top-down dimensional design. The idea is not to build out each and every report or indeed cube but to build a structure that&#8217;ll support likely queries. The process of building a star schema provides both a logical model and a physical implementation of that model against which potential queries can be tested. I&#8217;ve worked on several <a href="http://en.wikipedia.org/wiki/Proof_of_concept">POC</a>s destined for implementation in Essbase where the star-schema was built and potential cubes mocked up using Excel PivotTables that subsequently never went any further (except for the star-schema ETL process). The end-users derived sufficient value from the denormalised star-schema pivoted and reported in Excel.</p>
<p>In traditional ROLAP data-warehouses where the cubes were built directly against star-schemas, the pure logical approach to the data model often had to take a back-seat to the necessity of fine-tuning it to make response times (be that <a href="http://en.wikipedia.org/wiki/Extract,_transform,_load">ETL</a> or user-pivoting) acceptable. This is why I much preferred situations where the star acted as a logical model from which MOLAP cubes were built.</p>
<p>With PowerPivot, <a href="http://en.wikipedia.org/wiki/ROLAP">ROLAP</a> has a new champion. The column-oriented high-compression in-memory architecture means that the compromises of the past are no longer necessary. The fact table reverts back to it primary role as a many-to-many connector. In a <a href="http://en.wikipedia.org/wiki/OLAP_cube">pure hypercube</a>, measures are just another dimension (the approach that <a href="http://www.palo.net/en/">Palo</a> takes), this is also now true of PowerPivot models; measures can be sourced from dimension tables and dimensions from fact tables as it logically should be, but without the performance hit of old.</p>
<p>But what&#8217;s the advantage of a star schema over a flattened table when using PowerPivot?</p>
<p>It is true that the same flattened table model as used to backend a PivotTable can be used within PowerPivot. But doing so would limit the potential of the <a href="http://technet.microsoft.com/en-us/library/ee835613.aspx">DAX language</a> to construct measures such as average sales spread over potential customers (rather than actual customers that would typically be represented on a flattened table). Also, by creating &#8220;conformed dimensions&#8221; (single cross-business views of Customer, Product etc.) and using such tables as dimensional sources for multiple fact tables, &#8220;virtual cubes&#8221; that combine values from multiple fact tables can be built.</p>
<p>If you&#8217;re new to dimensional modelling I&#8217;d recommend t<a href="http://www.kimballgroup.com/">he books &amp; articles of Ralph Kimbal</a> as good starting point. You do have to be aware that some of the advice regarding efficiency trade-offs, surrogate keys etc. do not  apply in a PowerPivot scenario (<a href="http://sqlblog.com/blogs/marco_russo/archive/2010/01/26/memory-considerations-about-powerpivot-for-excel.aspx">even though other performance issues still apply</a>) but the logical design tips still apply.</p>
<p>Star Schemas: to explore strange new conformed dimensions, to seek out new measures, to boldly go where no Excel spreadsheet has gone before.</p>
<p><a href="http://blog.gobansaor.com/2011/01/08/slowly-changing-dimensions-time-to-stop-worrying/">More on data modelling for PowerPivot &#8230;</a></p>
<p><strong>Need help designing PowerPivot models </strong><br />
<strong>see  <a href="http://www.gobansaor.com/powerpivot?star">www.gobansaor.com/powerpivot</a></strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1038/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1038/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1038/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1038/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1038/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1038/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1038/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1038/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1038/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1038/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1038/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1038/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1038/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1038/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1038&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2010/07/09/star-schemas-to-boldly-go-where-no-excel-spreadsheet-has-gone-before/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2010/07/star-ship.png?w=300" medium="image">
			<media:title type="html">star-ship</media:title>
		</media:content>
	</item>
		<item>
		<title>TAG Cubes &#8211; SQLite Star Query Part III</title>
		<link>http://blog.gobansaor.com/2009/09/29/tag-cubes-sqlite-star-query-part-iii/</link>
		<comments>http://blog.gobansaor.com/2009/09/29/tag-cubes-sqlite-star-query-part-iii/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 13:36:16 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[olap]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[xLite]]></category>
		<category><![CDATA[hypercube]]></category>
		<category><![CDATA[Mondrian]]></category>
		<category><![CDATA[TAG Cube]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=738</guid>
		<description><![CDATA[It&#8217;s no secret that I&#8217;m a huge fan of SQLite and Excel, particularly when used in combination. I also greatly admire the open source BI engines, Palo and Mondrian. Mondrian appeals because of its &#8220;ROLAP with a cache&#8221; architecture and &#8230; <a href="http://blog.gobansaor.com/2009/09/29/tag-cubes-sqlite-star-query-part-iii/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=738&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s no secret that <a href="http://blog.gobansaor.com/2009/03/14/sqlite-as-the-mp3-of-data/">I&#8217;m a huge fan of SQLite</a> and Excel, particularly when used in combination. I also greatly admire the open source BI engines, <a href="www.jedox.com">Palo</a> and <a href="http://sourceforge.net/projects/mondrian/">Mondrian</a>. Mondrian appeals because of its &#8220;ROLAP with a cache&#8221; architecture and its implementation of MS&#8217;s excellent<a href="http://en.wikipedia.org/wiki/Multidimensional_Expressions"> </a><a href="http://en.wikipedia.org/wiki/Multidimensional_Expressions">MDX</a> language. When I say MDX is excellent I&#8217;m talking with my professional programmer&#8217;s hat on, as an end-user tool it&#8217;s a non-runner. This is where Palo comes in, building on the <a href="http://en.wikipedia.org/wiki/Hypercube">hypercube</a> concepts pioneered by the likes of  <a href="http://en.wikipedia.org/wiki/Applix">TM1</a> and <a href="http://en.wikipedia.org/wiki/Essbase">ESSbase</a>, it presents a designview that&#8217;s approachable by a vastly greater percentage of &#8220;civilians&#8221; than is the case with<a href="http://en.wikipedia.org/wiki/ROLAP"> </a><a href="http://en.wikipedia.org/wiki/ROLAP">ROLAP-based</a> solutions.</p>
<p>The trick behind TM1, Essbase, Palo etc. is the extension of the spreadsheet metaphor from two to multiple dimensions, while still binding the interface closely to the familiar spreadsheet (which for most of the business world is still Excel).</p>
<p>So where does <a href="http://www.sqlite.org/">SQLite</a> come in all this?</p>
<p><a href="http://blog.gobansaor.com/2007/08/30/sqlite-star-query/">At first glance</a>, SQLite lacks the s<a href="http://www.sqlite.org/optoverview.html">ophisticated join functionality</a> to support star-queries, but of course, if the dataset is small then a full-table scan of a fact table, or better still, loading the fact table into memory negates any such short-comings.</p>
<p>In fact, all traditional ROLAP engines have problems with dimensional models, particularly when you reach the point of using summary tables or query re-writes, that&#8217;s why the emerging SQL-speaking <a href="http://www.information-management.com/blogs/columnar_databases_column_major_data_warehouse_startup_analytics-10015473-1.html">columnar-databases</a> are such a godsend for ROLAP data warehouses.</p>
<p>It was SQLite combined with Excel acting as a data prep platform that was originally my main interest, so for pivoting, Excel&#8217;s own pivot table would have to do.  Nevertheless, I felt the tool was incomplete without the ability to directly pivot the underlying SQLite database.</p>
<p>Why not use Palo or Mondrian as a pivot tool? Well yes, where a fixed permanent &#8220;solution&#8221; is required then the extra moving parts of either approach would be justified and indeed necessary but that is to miss the essence of what I call datasmithing.</p>
<p>Datasmithing is not data warehousing nor is it the provision of solutions (which, for example, Palo superbly enables in multi-user budgeting situations). Datasmithing, as a skill, is of course part of the process of both, but it&#8217;s on the edges, at perhaps the planning or consumption stages.</p>
<p>Datasmiths deal in the unknown, in change, in disaster recovery, in systems&#8217; commissioning, in the never-ending barely-repeatable processes thrown up by daily business life.  For that, the toolset required must be as simple as possible (but no simpler), self-contained, document-oriented, secureable (is that a word?) and easily archived and retrieved. Excel and file-based DBMSs such as MSAccess or SQLite fit the bill nicely, server-based technologies such as DBA controlled database servers or IT installed &#8220;solutions&#8221;, less so.</p>
<p>Jedox has made Palo relatively easy to install (and likewise, Canada&#8217;s SQLPower has made Mondrian setup a painless exercise via their excellent <a href="http://www.sqlpower.ca/page/wabit">Wabit reporting too</a>l), but, the zero-install, email friendly document approach that spreadsheets are famous (and infamous) for, is preferable in many situations. This is something that Microsoft have recognised in their <a href="http://blog.gobansaor.com/2009/04/01/project-gemini-xxl-excel-on-steroids/">Gemini add-in for Excel 2010</a>, but Excel 2010 is a not here yet and it&#8217;s likely to be five years or more before it&#8217;s as common as Excel 2003 is today.</p>
<p>The inclusion of <a href="http://sqlite.org/fts3.html">FTS full-text searching</a> with SQLite triggered an ah-ah moment with regards to pivot-enabling SQLite.</p>
<p>The usual method that hypercube-like excel-friendly OLAP tools use to return data is via a UDF like so&#8230;</p>
<p style="text-align:center;"><em>=DATA(&#8220;CubeName&#8221;,&#8221;value1&#8243;,value2&#8243;,&#8230;)</em></p>
<p>&#8230;where valueN represents dimensional elements, so&#8230;</p>
<p style="text-align:center;"><em>=DATA(&#8220;SalesCube&#8221;,&#8221;Beer&#8221;,&#8221;Profit&#8221;,&#8221;Jan 09&#8243;,&#8221;Actual&#8221;)</em></p>
<p>&#8230;is the Actual Profit for Beer sales in Jan 09. The dimensional elements act as &#8220;tags&#8221; to locate a particular value, there is of course much more to tools like Palo; hierarchies, intra-cube rules etc. but in essence most OLAP tools are like <a href="http://delicious.com/">www.delicious.com</a> for number crunchers. This method of retrieving data fits well with how people use Excel and not just for pivots, but for embedding OLAP aggregated cells in <em>lists</em>.  For example, a CRM scenario; a Sales Rep makes a list of her &#8216;best&#8217; (subjective) customers, but needs hard (objective) stats, to be placed alongside the list to convince the boss or to track actuals against expectation.</p>
<p>Dimensional elements as tags; FTS3 virtual tables as fact table indexes; the concept of a TAG Cube was born.</p>
<p>In the above example &#8220;Profit&#8221; would most likely be described as a <em>measure</em> (Palo, a near pure hypercube does not distinguish between Measure and other Dimensional coordinates). Dimensions, measures and attributes are in reality interchangeable (a Customer ID can act as a dimension or an attribute, but by applying a  Count Distinct to it, it&#8217;s a measure) but most OLAP solutions treat &#8220;Measure Dimensions&#8221; as different, and so do TAG Cubes.</p>
<p>By using the default fact table structure (a single-columned table) and querying using the default measure (which translates to the SUM() of that single value) a &#8216;pure&#8217; approach can be used. But, ROLAP is tightly bound to the concept of a fact table, and since SQLite is relational, TAG Cubes offer the ability to use a wide fact table approach and I think gains considerably in flexibility by so going.</p>
<p>The above example of using Count Distinct, or the simple creation of calculated measures are examples of this flexibility. Another, is a measure based on SQLite&#8217;s concat_group aggregate function to provide a drill-down facility, e.g.</p>
<p style="text-align:center;"><em>=DATA(&#8220;SalesCUBE&#8221;,&#8221;ROWIDList,&#8221;Beer&#8221;,&#8221;Jan 09&#8243;,&#8221;Actual&#8221;)</em></p>
<p>&#8230;where &#8220;ROWIDList&#8221; would be setup as <em>concat_group(rowid,&#8217;,') </em>and will return a comma separated list of the underlying fact table ROWIDs.</p>
<p>A major reason for rolling my own pivot engine was to add a concept of <a href="http://en.wikipedia.org/wiki/Namespace_(computer_science)">&#8220;namespaces&#8221; </a>and to separate the implementation of these namespaces from the actual pivot.  When a tag (or a predefined hierarchy of tags) is assigned to a cube, it&#8217;s also assigned to a namespace, in many cases namespace and cube would be synonymous, but in some cases a more sophisticated approach is required:</p>
<ul>
<li>Multiple cubes sharing the same set of conformed dimensions would be best served by such cubes sharing a common namespace, and so they can.</li>
<li>Different consumers of the pivot may require the use of a different language, be that a spoken language or a different &#8216;business language&#8217; e.g. Manufacturing Product Codes V Consumer Product Names. Again, easily done.</li>
<li>Sometimes identifying data can&#8217;t be shared with the datasmith or the numerical analyst working on a problem; in such cases being able to replace  the actual namespace with an obfuscated one can be very useful. Or, for added security, the namespace might only be issued to approved  PCs while the tag index and fact table are stored on a shared drive.  Needs some more work to make managing such scenarios secure and easy to use but the structure is there.</li>
</ul>
<p>As hinted on above, the three elements of a Tag Cube, the namespace, tag index and fact table can be assigned to different databases (i.e. files). Due to the wonders of SQLite&#8217;s <a href="http://www.sqlite.org/lang_attach.html">ATTACH statement</a> and the <a href="http://www.sqlite.org/backup.html">backup API&#8217;s</a> ability to quickly load/unload databases in/out of memory, it&#8217;s possible, for example, to load namespace and tag index (i.e. the &#8216;dimensions&#8217;) into a memory database, while a very large (i.e. too big to fit to memory) fact table remains on disk. Fast and cheap <a href="http://en.wikipedia.org/wiki/Solid-state_drive">SSDs</a> will add further configuration options.</p>
<p>Although most of the TAG Cube functionality is available only within Excel, I&#8217;ve built a C based SQLite Virtual Table (cFact) to allow the tag index to used outside xLite. This means that SQLite drivers for ODBC (for use as a Pivot Table source, for example) or JDBC (for use in  SQLPower Wabit perhaps) can efficiently access data models built using xLite.</p>
<p><em>I had to revert to using C rather than my preferred Python (did I mention that xLite now embeds Python in Excel, no, well it does, <a href="http://blog.gobansaor.com/2008/04/11/python-the-new-vba/">Python the newVBA ?</a>), having failed to get around multi-threading issues with callbacks to Python in both the </em><a href="http://www.ch-werner.de/sqliteodbc/"><em>ODBC</em></a><em> and </em><a href="http://www.zentus.com/sqlitejdbc/"><em>JDBC</em></a><em> drivers. I&#8217;d make a career promise to myself many years ago, not to having anything to do with printers or threads, and I think I&#8217;ll stick with it <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p>TAG Cubes are the latest addition (still WIP actually) to be added to xLite, adding to:</p>
<ul>
<li>VBA coded SQLite SQL functions.</li>
<li>Worksheet Functions; call out to a &#8216;function&#8217; built using Excel formula, passing a parameter list and returning a value.</li>
<li>Workbook Functions; like Worksheet Functions, but loading a new Workbook, passing in parameters, passing back a value (or tables) and closing the Workbook when finished.</li>
<li>XLiteScript; xLite exposes its functionality via VBA coded UDFs, which can be called like any other formula, but data prep activities often require sequential procedural logic, xLiteScript is a <a href="http://blog.gobansaor.com/2007/03/03/tables-vs-xml-the-data-lingua-franca-debate/">table-oriented</a> scripting mechanism offering basic flow-control logic.</li>
<li>pyScript; I embedded Python into xLite to take advantage of Python&#8217;s speed in developing Virtual Tables, SQL Functions and extensions to SQLite and to tap in the wonderful world of Python code. I&#8217;ve also added the ability to use Python from scripts defined within Excel (to indent, tab to the next cell!).</li>
<li>Fast load/unload to/from CSV.</li>
<li>Load from any ADO source.</li>
<li>Remove xLite formulae and rename and save Workbook, very handy when used via Workbook Functions to mass produce Excel &#8220;reports&#8221;.</li>
<li>Other WIP items are; load from SAP, load/unload to/from Amazon S3, use Palo cubes as TAG Cube &#8220;facts&#8221;, slot in/out Palo for TAG Cubes, auto-generate Mondrian XML based on TAG Cubes, write-back and splash, Python &amp; VBA TAG Cube &#8220;rules&#8221;.</li>
</ul>
<p><a href="http://www.gobansaor.com/xlite">I&#8217;ve started the process of releasing the beta code here &#8230;</a></p>
<p style="text-align:right;"><em>Why not join me on Twitter at </em><a style="text-decoration:none;color:#265e15;border-bottom-color:#996633;border-bottom-width:1px;border-bottom-style:dashed;margin:0;padding:0;" href="http://www.twitter.com/gobansaor"><em>gobansaor</em></a><em>?</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/738/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/738/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/738/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=738&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2009/09/29/tag-cubes-sqlite-star-query-part-iii/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>Palo HTTP API via Excel/VBA</title>
		<link>http://blog.gobansaor.com/2009/06/22/palo-http-api-via-excelvba/</link>
		<comments>http://blog.gobansaor.com/2009/06/22/palo-http-api-via-excelvba/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 16:43:18 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[Palo]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Palo HTTP API]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=719</guid>
		<description><![CDATA[As a result of a request on the Palo support forum last week looking for a VBA tool to directly access the Palo OLAP server via its native HTTP API, I realised I had such a tool. I had built it &#8230; <a href="http://blog.gobansaor.com/2009/06/22/palo-http-api-via-excelvba/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=719&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a result of a request on the Palo support forum last week looking for a VBA tool to directly access the <a href="http://www.jedox.com/en/home/overview.html">Palo OLAP server</a> via its native HTTP API, I realised I had such a tool. I had built it about a year ago (to use alongside <a href="http://www.fiddler2.com/fiddler2/">Fiddler Web Debugger</a> and <a href="http://www.red-gate.com/products/reflector/">.NET Reflector</a>) to help me understand in detail the interaction between the Excel client and Palo. (Remember this was before <a href="http://blog.gobansaor.com/2009/06/12/palo-bi-suite-community-edition/">Jedox released the Excel add-in as open source</a>)</p>
<p>I removed the SQLite dependent parts (which allowed me to load meta-data into tables and analyse using SQL) and used a pure-VBA MD5 hash routine to reduce the number of moving parts. Also added a few VBA helper routines (including an array-formula UDF to allow direct calling of the API from Excel UI).</p>
<p>As I said, I originally built it as a learning aid but I&#8217;ve started to look at it again in the context of a an Excel/Sqlite Palo ETL add-on.  Having the flexibility of the native API and my own meta-data cache in SQLite might prove very useful.</p>
<p><a href="http://blog.gobansaor.com/projects/excel-vba-palo-http-api/">The code may be found here</a>.  Enjoy!</p>
<p style="text-align:right;"><em>Why not join me on Twitter at </em><a style="text-decoration:none;color:#265e15;border-bottom-color:#996633;border-bottom-width:1px;border-bottom-style:dashed;margin:0;padding:0;" href="http://www.twitter.com/gobansaor"><em>gobansaor</em></a><em>?</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/719/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/719/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/719/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=719&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2009/06/22/palo-http-api-via-excelvba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>Palo BI Suite Community Edition</title>
		<link>http://blog.gobansaor.com/2009/06/12/palo-bi-suite-community-edition/</link>
		<comments>http://blog.gobansaor.com/2009/06/12/palo-bi-suite-community-edition/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 14:08:18 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[GoogleApps]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[olap]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[Community Edition]]></category>
		<category><![CDATA[Palo BI Suite]]></category>
		<category><![CDATA[Worksheet Server]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=709</guid>
		<description><![CDATA[Jedox have finally published a roadmap for the Palo BI Suite Community Edition, having caused considerable confusion by pre-announcing its availability last April. See here for the details.  The headline dates are, a beta version due 1st of July with &#8230; <a href="http://blog.gobansaor.com/2009/06/12/palo-bi-suite-community-edition/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=709&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jedox have finally published a roadmap for the Palo BI Suite Community Edition, having <a href="http://www.jedox.com/community/palo-forum/thread.php?threadid=1589&amp;hilight=community+edition">caused considerable confusion</a> by pre-announcing its availability last April. <a href="http://www.jedox.com/community/palo-forum/thread.php?threadid=1671">See here for the details</a>.  The headline dates are, a beta version due 1<sup>st</sup> of July with a Release Candidate due 1<sup>st</sup> September.</p>
<p>Although the announcement in April was essentially vapour-ware (no Worksheet Server V3, no Amazon EC2 images), one very significant actual deliverable was the addition to <a href="http://palo.svn.sourceforge.net/">SourceForge</a> of the Palo Excel Add-in sources (GPL licence).  This, at least for me, is very welcome as it now means that Palo is truly open source.  Prior to this, the server sources were GPL’d but not the main front-end tool used by the vast majority of end-users. In fact, the deep Excel integration offered by the Add-In is Palo’s main attraction to the business-focused “datasmiths” who make up the bulk of the product&#8217;s user-base.</p>
<p>The GPL’ing of the Add-in has removed the last barrier that had stopped me, as an independent consultant, from committing to the platform.  While the ‘freeness’ of open source is nice, it’s the source that really attracts me.  With access (and rights) to the source, I have no worries that the terms of use or indeed the product’s core functionality can be arbitrarily changed.  Having the source also means I can delve as deep or as shallow as I need to into the inners of the product, improving my understanding of the technology (both bugs and functionality) as needs dictate.</p>
<p>What has Palo BI Suite to offer, besides being open source?  Well, even if Jedox’s offering consisted of mediocre products, being open source as I explained above is in itself a huge advantage. Having an agnostic FOSS pivot engine that can be shared across many technologies, from Excel to Open Office to a PHP based website, is extremely useful.</p>
<p>However, Jedox’s BI suite is far from mediocre.  Palo is now a very polished and powerful in-memory MOLAP server with excellent integration with Excel (through the Add-In, or if you take out a support contract, via ODBO/MDX powered Pivot Tables).  The addition of a browser delivered spreadsheet (Worksheet Server V3) will add significantly to the product’s street appeal.  Version 3 differs significantly from previous WSS versions; being open source is one, but the entire product was also completely redesigned to meet the challenge posed by web-based products from the likes of <a href="http://sheet.zoho.com/">Zoho</a>, <a href="http://www.editgrid.com/">EditGrid</a> and of course Google Docs (not to mention the ever-present threat of a MS response). Web-based spreadsheets are becoming a commodity, so Jedox’s response was to open source the product but at the same time make it more usable for real-world business analytics.</p>
<p>Current browser-delivered spreadsheets suffer from two shortcomings;</p>
<ul>
<li>Spreadsheets with large numbers of inter-related cells (typical of business models ) tend to perform poorly, in many cases being unusable compared with Excel or Open Office.</li>
<li>Only available as hosted SaaS; not a major problem for some businesses, but for others, services outside the corporate firewall, especially for sensitive information such as what-if, budgeting and sales analysis models, are a no-no.</li>
</ul>
<p>WWS V3 gets around both problems.  Performance is improved by the use of Palo as the spreadsheet’s pivot engine but also by the “lazy calculation” of related cells i.e. a cell that’s not visible, and itself not yet referenced by other visible cells, remains uncalculated, saving on the constant churning that can effect large models.  This combined with a DynaRange concept means templates and models react dynamically and efficiently to the ever changing datasets being presented to the sheets from the Palo OLAP server.   The look’n’feel is very similar to Excel with even array-formulae being fully supported.</p>
<p>The second problem of only-behind-the-firewall access is solved by the open source GPL licence and by the front-end being coded in PHP (very approachable to most in-house support staff and even the <a href="http://twitter.com/martynshiner/">odd accountant</a>).  The core (the bit not yet released) is, as far as I know, C++, so is likely to join Palo Server as being highly efficient and well engineered but perhaps beyond the technical skills of most.</p>
<p>The other elements to the BI Suite are the web-based OLAP-centric ETL Server (now, I see, with Groovy and Javascript scripting support) and the Supervision Server (only in paid Enterprise version) which offers fine-tuned access control and monitoring, plus drill-through functionality from Palo cells, back to the ETL fact tables. The Enterprise Edition also offers a multi-core version of the Palo server along with SAP and ODBO/MDX connectivity.</p>
<p>If multi-dimensional analysis and budgeting could benefit your business and spreadsheets are your preferred method of communicating and working with such analysis, you need to check <a href="http://www.jedox.com/en/products/Overview.html">this out</a>.  Palo is a well kept secret (at least outside of Germany), hardly ever mentioned by the mainstream BI community, but don’t let that put you off; this is one of the best solutions out there, it&#8217;s open source but also comes with the backup of a professional company that can offer not just technical support but also implementation know-how (Jedox eats its own dog-food, being both a BI consultancy and development house).</p>
<p><strong>Update July 4th 2009:</strong></p>
<p>Beta Community Edition<a href="http://www.jedox.com/en/products/palo_olap_server/download.html"> is now available</a>.   I downloaded and installed WWS V3 and gave it a quick test-drive; looks good, Palo interface has the look&#8217;n'feel of the Excel Add-in and the general spreadsheet functionality is very Excel-like, incluing CTRL-Shift-Enter to assign array formulae.  Overall, the Palo BI suite offers a intuitive end-user-friendly interface; from download to effective use in less than 60 minutes, how many BI tools could you say that about?</p>
<p>Also,<a href="http://www.paloinsider.com/?p=72"> in two weeks time </a>a pivot-table friendly <a href="http://en.wikipedia.org/wiki/OLE_DB_for_OLAP">ODBO driver</a> will be included for free with the Palo Excel Add-in (previously only available to those with a Jedox support contract).</p>
<p style="text-align:right;"><em>Why not join me on Twitter at </em><a href="http://www.twitter.com/gobansaor"><em>gobansaor</em></a><em>?</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/709/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=709&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2009/06/12/palo-bi-suite-community-edition/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>SQLite as the MP3 of data</title>
		<link>http://blog.gobansaor.com/2009/03/14/sqlite-as-the-mp3-of-data/</link>
		<comments>http://blog.gobansaor.com/2009/03/14/sqlite-as-the-mp3-of-data/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 19:13:25 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[microETL]]></category>
		<category><![CDATA[olap]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[MP3]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=622</guid>
		<description><![CDATA[&#8230; and Excel as its &#8220;mixing desk&#8221;. When I tell people that I use SQLite in combination with Excel (via microETL and now via my latest offering The Datasmith&#8217;s HAMMER) as my datasmithing platform, many ask why SQLite? (Many others ask why Excel? &#8230; <a href="http://blog.gobansaor.com/2009/03/14/sqlite-as-the-mp3-of-data/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=622&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; and Excel as its &#8220;mixing desk&#8221;.</p>
<p>When I tell people that I use SQLite in combination with Excel (via <a href="http://blog.gobansaor.com/category/powerpivot/">microETL</a> and now via my latest offering The Datasmith&#8217;s <a href="http://blog.gobansaor.com/category/hammer/">HAMMER</a><strong>)</strong> as my datasmithing platform, many ask why SQLite? (Many others ask why Excel?  but &#8220;sin scéal eile&#8221;, that&#8217;s <a href="http://blog.gobansaor.com/2009/10/25/excel-as-the-ipod-of-downloaded-data/">another discussion &#8211; Excel as the iPod of Downloaded Data</a>.) Those that question my use of SQLite tend to cluster into four camps:</p>
<ul>
<li>Pure Excel jocks.</li>
<li>MS Access fans.</li>
<li>The client server database brigade (SQL Server,Oracle; or if FOSS fans; MySQL, PostrgeSQL).</li>
<li>The MOLAP folks (Essbase, TM1, Palo).</li>
</ul>
<p>Now while I have used and will continue to use/encounter all four &#8216;approaches&#8217;, I&#8217;ve come to believe over the last couple of years that SQLite brings something special to the datasmithing game. When I look back over nearly 30 years in the data handling business I keep thinking &#8211; &#8220;If only I had SQLite then, how much easier/quicker/cheaper that task would have been!&#8221;.</p>
<p>Just as &#8220;fractional horsepower&#8221; electrical motors revolutionised manufacturing and eventually all our lives (car starter-motors, fridge motors, washing machines etc.), &#8220;fractional horsepower&#8221; databases can do the same for data. Distributing data to where it is needed.</p>
<p>As operational local caches, this use of SQLite is already far advanced. SQLite is embedded in lots of <a href="http://www.sqlite.org/famous.html">every day software tools</a>, everything from McAfee anti-virus to <a href="http://www.tweetdeck.com/beta/">TweetDeck</a> Twitter clients (best one IMHO). But my interest is more in SQLite&#8217;s potential as a micro-BI (or maybe more correctly a distributed-BI) platform. A sort of MP3 format for distributed structured data, if you like.</p>
<p>But why SQLite (and in particular SQLite in combination with Excel) as my datasmithing tool rather than the four other approaches?  First, what&#8217;s a datasmith?</p>
<p>Managing and manipulating datasets has become an integral part of many people’s job, not just accountants (the original of the species) but marketing executives, sales staff, pricing analysts, process engineers; different job titles, different roles but using a skill that they’ve likely never been formally trained in, a skill without a name; a skill I call datasmithing. I like to think of  myself as a master datasmith, or a datamith&#8217;s datasmith.</p>
<p>If you consider yourself a datasmith then most likely the tool you use to manage your datasets is Excel. And before you apologise, don’t. Excel is by far the best and most flexible end-user data manipulation tool out there. Everything from the current financial crisis downwards has at some stage being blamed on Excel, but you know and I know that many tasks would remain undone or under-done were it not for end-user generated spreadsheets.</p>
<p>Spreadsheets are not however optimal for some tasks, linked spreadsheets in particular are data disasters in waiting. While fantastic for data transformations and presentations, as books-of-record they’re rarely suitable. Other tools such as SQL based relational databases and in-memory OLAP offer much better and potentially much more cost-effective data modelling functionality, but also at a cost of extra complexity and ongoing technical support.</p>
<p>MS Access (which like SQLite, is a document-centric, non-client-server database; but unlike it, is also a forms/reporting development environment) would appear to be the natural local store database. My problem with MS Access has been its tendency to try to be all things to all men, ending up not fully satisfying anybody. Professional developers think it&#8217;s too limiting, non-techs find it too intimidating, even reporting, where it once showed promise left a big enough opening for Crystal Reports to evolve. It is also limited to Windows which might not seem to be a problem if combining with Excel, but, as it&#8217;s often necessary, due to scale or complexity of the data,  to use &#8216;proper&#8217; ETL tools such as Talend, having an OS agnostic database format than can act as a distribution media (think MP3s again) between &#8220;mixing desks&#8221; can be very useful.</p>
<p>The big difference to MS Access for me is SQLite&#8217;s open source code; code that&#8217;s a pleasure to browse and with an approachable API that even I, with my very rusty C skills, can manipulate. Having access to that code allows me to tightly integrate it with Excel, so much so, that I can use Excel functions (built-in functions, VBA user-defined functions and 3rd party add-in functions) directly from SQLite&#8217;s SQL; and vice-versa, access SQL functionality via Excel &#8220;formula&#8221; calls. It is  also possible to  load most datasets into memory using SQLite&#8217;s in-memory mode enabling very fast processing  and near zero-latency when passing data to and from Excel/VBA. In the near future, cheap, large <a href="http://en.wikipedia.org/wiki/Solid-state_drive">SSDs </a>will enable non-memory databases to offer similar speed but also handle extremely large datasets (<a href="http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds">see this for a glimpse of that future</a>).</p>
<p>What about the big beasts of the data world, the client-server databases? Having spent most of my professional life working with such tools I&#8217;m aware of the power of a well designed relational database. If SQLite is the MP3, then these are the master tapes, the DDD recordings. Most of the data that eventual ends up in SQLite for analysis and/or transformation will have originated in data-warehouses or be directly sourced  from OLTP systems built using relational technology. But for close-up analysis and transformation, the pure simplicity and convenience of SQLite is hard to beat. That simplicity is primarily due to its Excel-like &#8216;document&#8217; nature, all code and data can be housed in a single folder (or <a href="http://www.truecrypt.org/">true-crypt container</a> for added security), ensuring that the &#8216;problem domain&#8217; can be easily archived and/or shared with others without the need for professional IT resources.</p>
<blockquote><p>And yes, I hear you, isn&#8217;t that the basis of Excel-hell? Yes it is, but over the years I&#8217;ve found that this is rarely a problem for datasmiths, they deal day-in day-out with document work-flows, they understand the risks and the benefits (mainly the simplicity) of the approach. Where the nightmare truly happens is when this approach is used as an alternative to an OLTP system i.e. using Excel and other document-like datastores as books-of-record in large multi-user environments &#8211; &#8220;there be monsters for sure&#8221;.</p></blockquote>
<p>How about MOLAP? Wasn&#8217;t Essbase&#8217;s name derived from &#8220;extended spreadsheet database&#8221; and doesn&#8217;t Palo offer a truly excel-friendly multi-user database back-end? Again, having worked with Essbase for many years and now being a big fan of the open source <a href="http://www.palo.net">Palo</a> MOLAP tool, I fully appreciate the power that such tools brings to analysis and multi-user planning tasks. But for many situations, an Excel Pivot Table is &#8220;good enough&#8221; and even when it&#8217;s not, it is possible by utilising what I call a tOLAP cube (essentially, a fact table indexed via tags enabled by Google&#8217;s great addition to SQLite, the <a href="http://dotnetperls.com/Content/SQLite-FTS3.aspx">FTS3</a> virtual table) to build and access  powerful, yet simple, cube-like data structures  [update: Oct 2010] there&#8217;s now the option of using Excel 2010&#8242;s <a href="http://blog.gobansaor.com/category/powerpivot/">magnificent PowerPivot add-in</a>.</p>
<p>By integrating SQLite with Excel, datasmiths can have the best of both worlds, familiar <a href="http://www.gobansaor.com/xlite">spreadsheet front-end combined with a fast and powerful SQL engine and datastore</a>, in fact, everything that MS Access should have been.</p>
<p style="text-align:right;"><em>Why not join me on Twitter at </em><a href="http://www.twitter.com/gobansaor"><em>gobansaor</em></a><em>?</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/622/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/622/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/622/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=622&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2009/03/14/sqlite-as-the-mp3-of-data/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>Spending time on Excel-SQLite, C, VBA Callbacks &amp; Twitter</title>
		<link>http://blog.gobansaor.com/2008/11/20/spending-time-on-excel-sqlite-c-vba-callbacks-twitter/</link>
		<comments>http://blog.gobansaor.com/2008/11/20/spending-time-on-excel-sqlite-c-vba-callbacks-twitter/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 12:44:52 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[xLite]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=573</guid>
		<description><![CDATA[Haven&#8217;t posted here in a while as my spare time has been soaked up programing, well actually refactoring would be more exact.  My xLite &#8220;SQLite empowered Excel&#8221; codebase has grown over the years and required a serious makeover to get &#8230; <a href="http://blog.gobansaor.com/2008/11/20/spending-time-on-excel-sqlite-c-vba-callbacks-twitter/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=573&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Haven&#8217;t posted here in a while as my spare time has been soaked up programing, well actually <a href="http://en.wikipedia.org/wiki/Refactoring">refactoring</a> would be more exact.  My xLite &#8220;SQLite empowered Excel&#8221; codebase has grown over the years and required a serious makeover to get rid of stuff I no longer use and to generally make it more robust.  I also decided to add some extra functionality to my VBA friendly C wrapper for SQLite (based on Pivotal Solutions&#8217; pssqlite.dll) which meant I had to re-acquaint myself with my long lost C skills, so doing reminded me how much I like C. Close to the metal programing if not exactly super-productive is nevertheless super-powerful.</p>
<p>The new improved xLiteSQLite.dll now has a built-in CSV loader (both file based and string based &#8211; handy for loading <a href="http://en.wikipedia.org/wiki/Palo_(OLAP_database)">Palo</a> HTTP API responses into a table). It also returns a one columned variant array of CSV values for quick rendering via &#8220;text-to-columns&#8221; code (by far the quickest way of handling large dataset pasting into Excel).</p>
<p>I&#8217;ve also added the ability to create SQlite UDFs (user defined functions) in VBA (thanks to <a href="http://stackoverflow.com/users/4007/rpetrich">http://stackoverflow.com/users/4007/rpetrich)</a>.  This is a very powerful feature as it allows SQLite selects to act as a &#8220;loop controller&#8221; calling back to  Excel/VBA functions to process each row, really useful for ETL tasks. And not just <a href="http://www.sqlite.org/c3ref/create_function.html">scalar UDFs but aggregating (aka group-by) functions too</a>, allowing the use of Excel&#8217;s powerful array functions in SQLite statements.</p>
<p>All in all, the changes to the xLite VBA code and the C wrapper makes Excel backed by SQLite a seriously good micro-ETL tool. Combined with <a href="http://www.palo.net">Palo</a>, the result in a truly wonderful micro-BI platform; a cost-effective toolset for these recessionary times.</p>
<p>Of course I&#8217;d be lying if I said code was the only reason I&#8217;ve been neglecting my blogging duties, I&#8217;m afraid I&#8217;ve a confession to make, Twitter has hooked yet another sucker, <a href="http://twitter.com/gobansaor">me!</a> </p>
<p>I&#8217;ve found I&#8217;ve settled in to the whole micro-blogging thing with ease, and have managed to make contact with people I would not have encountered otherwise, as well as reconnecting with others that I&#8217;d lost contact with.  So if you too are all-a-twitter then do please follow <a href="http://twitter.com/gobansaor">gobansaor-on-twitter</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/573/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=573&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/11/20/spending-time-on-excel-sqlite-c-vba-callbacks-twitter/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>I’ll give up Excel Pivot Tables when you take &#8216;em from my cold, dead hands</title>
		<link>http://blog.gobansaor.com/2008/10/10/i%e2%80%99ll-give-up-excel-pivot-tables-when-you-take-em-from-my-cold-dead-hands/</link>
		<comments>http://blog.gobansaor.com/2008/10/10/i%e2%80%99ll-give-up-excel-pivot-tables-when-you-take-em-from-my-cold-dead-hands/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 17:40:39 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[olap]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[essbase]]></category>
		<category><![CDATA[MDX]]></category>
		<category><![CDATA[Mondrian]]></category>
		<category><![CDATA[ODBO]]></category>
		<category><![CDATA[XMLA]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=539</guid>
		<description><![CDATA[Jedox, the company behind the open source MOLAP server Palo, has just announced an MDX driver. This means that it&#8217;s now possible to access Palo cubes using Excel Pivot Tables or indeed any tool that supports ODBO.  This is excellent news, &#8230; <a href="http://blog.gobansaor.com/2008/10/10/i%e2%80%99ll-give-up-excel-pivot-tables-when-you-take-em-from-my-cold-dead-hands/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=539&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jedox.com">Jedox,</a> the company behind the open source <a href="http://en.wikipedia.org/wiki/MOLAP">MOLAP</a> server Palo, <a href="http://www.jedox.com/en/news/News/Palo_Open_Source_OLAP_Server_now_supports_MDX_and_Excel_Pivot_Tables.html">has just announced</a> an <a href="http://en.wikipedia.org/wiki/Multidimensional_Expressions">MDX</a> driver. This means that it&#8217;s now possible to access Palo cubes using Excel Pivot Tables or indeed any tool that supports <a href="http://en.wikipedia.org/wiki/OLE_DB_for_OLAP_(ODBO)">ODBO</a>.  This is excellent news, as MOLAP to most Excel users IS a Pivot Table, and somewhat like the NRA, the NPTA&#8217;s (National Pivot Table Association&#8217;s) motto is “I’ll give up Excel Pivot Tables when you take &#8216;em from my <em>cold</em>, dead <em>hands</em>”.</p>
<p>MDX/XMLA is now a de facto standard for OLAP servers, supported not just by MS SQLServer but by SAP BW, Hyperion/ESSBase and by <a href="http://mondrian.pentaho.org/">Pentaho&#8217;s Mondrian</a>. The new driver is not open source, nor is it for sale but instead comes free to those with Jedox support contracts. I&#8217;m sure lots of organisations will be more than willing to enter a support contract (starting at <strong>€3000</strong> per server) to get their hands on this; think of the savings in training alone!</p>
<p><strong>UPDATE: 2nd July 2009</strong></p>
<p>Kristian Raue <a href="http://www.paloinsider.com/?p=72">has announced on his blog</a> that the ODBO/MDX driver will now come free with latest Palo BI Suite (both community and enterprise versions). Excellent news!</p>
<p><a href="http://www.jedox.com/assets/images/news/pressekit/jedox_presseinfo_pivot_engl.jpg"><img class="aligncenter size-large wp-image-546" title="palopivot1" src="http://gobansaor.files.wordpress.com/2008/10/palopivot1.jpg?w=500&#038;h=374" alt="" width="500" height="374" /></a></p>
<p><span style="color:#0000ee;text-decoration:underline;"><br />
</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/539/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/539/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=539&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/10/10/i%e2%80%99ll-give-up-excel-pivot-tables-when-you-take-em-from-my-cold-dead-hands/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2008/10/palopivot1.jpg?w=500" medium="image">
			<media:title type="html">palopivot1</media:title>
		</media:content>
	</item>
	</channel>
</rss>
