<?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>Hugos OLAP / Business Intelligence Blog</title>
	<atom:link href="http://hugoworld.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hugoworld.wordpress.com</link>
	<description>OLAP and Business Intelligence</description>
	<lastBuildDate>Tue, 24 Nov 2009 22:10:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hugoworld.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hugos OLAP / Business Intelligence Blog</title>
		<link>http://hugoworld.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hugoworld.wordpress.com/osd.xml" title="Hugos OLAP / Business Intelligence Blog" />
	<atom:link rel='hub' href='http://hugoworld.wordpress.com/?pushpress=hub'/>
		<item>
		<title>ETL Validation of Securities in Informatica, PDI (Kettle) and Talend</title>
		<link>http://hugoworld.wordpress.com/2009/05/29/etl-validation-of-securities-in-informatica-pdi-kettle-and-talend/</link>
		<comments>http://hugoworld.wordpress.com/2009/05/29/etl-validation-of-securities-in-informatica-pdi-kettle-and-talend/#comments</comments>
		<pubDate>Fri, 29 May 2009 20:46:30 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[investment banking]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[kettle]]></category>
		<category><![CDATA[pentaho]]></category>
		<category><![CDATA[Talend]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=197</guid>
		<description><![CDATA[I have used ETL tools for a variety of purposes in the past including loading data into different systems, ranging from traditional data warehouses to operational systems. One of the things I have noticed over the years is how the designers of some mappings fail to take into consideration sources of errors which can manifest [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=197&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have used ETL tools for a variety of purposes in the past including loading data into different systems, ranging from traditional data warehouses to operational systems.</p>
<p>One of the things I have noticed over the years is how the designers of some mappings fail to take into consideration sources of errors which can manifest themselves in different ways ranging from the failure of the routine through to data loss.<br />
In many ways these things are inexcusable, if you are loading into a system which contains not null constraints on certain field then check your incoming row to see if it will violate these constraints. If you have taken this step and managed to avoid having a mapping fail though a violation then please don&#8217;t simply filter the row. Use a router transformation to send the offending details to a file / table so that someone can investigate the issue.<br />
The same logic should apply to things such as lookups. If you are looking up data in a table and the record you are attempting to match does not exist and so returns a null many developers then include a filter to check for a null and effectively remove this row. It&#8217;s really not that much extra effort to add a router and you can then request a business person to investigate / rectify the problem in the source system.</p>
<p>In addition to adding error handling logic to things such as lookups, in many circumstances it is possible to validate the data. Certain accounting systems may for example have customer accounts which lie within a specified range (eg 100000 &lt;= x &lt;= 10000000). Where possible you should endeavor to find out about such things from the business users and then try to create reusable routines to validate the data which can be shared across your transformations.</p>
<p>I have created some routines which will hopefully benefit anyone working in the finance industry and dealing in fixed income or equity securities. Effectively these securities have identifiers which serve as the primary means of identification, the prominent standards are:</p>
<p>cusip &#8211; A North American Standard. This is 9 digits, the last digit of which is a check digit.<br />
isin &#8211; This is the international standard and is 12 digits, the last of which is a check digit.<br />
sedol &#8211; A European standard which is 7 characters long, the last of which is a check digit.</p>
<p>The check digit helps to identify invalid codes, which you may receive for any number of reasons including invalid keying by an end user.</p>
<p>Originally I created 3 routines in informatica to validate these types. The first batch used a reusable expression and a few user defined functions. I have to hand it to informatica that this was possible using entirely their DSL and a single transformation, all be it one which was calling out to a user defined function (UDF) again written using the informatica DSL (expression language).<br />
Whilst these routines worked fine my curiosity got the better of me and I decided to see if it would be possible to create the same routines using the new java transformation which was introduced in version 8. Partly since I considered it might be possible to create a more efficient routine.<br />
I wrote a piece of code in eclipse and then tried to port it to informatica. Oh dear the validator did not like the syntax &#8211; after cursing for a while I realised that it was necessary to convert the code to java 1.4 syntax so I had to make a few changed to remove some of the foreach loops and other java 1.5 features.<br />
I ran a test load to see which performed best, the informatica expressions or the java transformation. My initial results seem to suggest that for a small volume the expression is quickest but for a larger volume the java expression is quicker. </p>
<p>The informatica expressions take as an input the security as a string and outputs the security, an integer indicating the error code and an error string.</p>
<p>Having created the informatica routines I decided I would also recreate them in the two main open source ETL tools,  mainly Pentaho Data Integration and Talend.</p>
<p>For Talend I implemented the logic as functions or as Talend refer to them routines, which can be called from components such as tMap. Although this works satisfactorily, it is also not ideal, since you may need to make two calls to the routine. In itself this isn&#8217;t really an issue, but it does mean someone my try and call the getErrorString method before they called the relevant validate security method. The reason for this is that I don&#39;t know how it is possible to modify the schema in Talend to add extra ports.<br />
Ideally this would have been implemented as a components which accepted a string (the security) and returned a boolean or int to indicate if the entry was valid and also a string which would contain an error message where applicable. Either way the functions work satisfactorily and had the added benefit of enabling everything to be implemented in java. When I wrote a previous talend component I found the JET templates to be a bit of a pain.</p>
<p>In contrast the PDI object most closely resembles the informatica transformations in that they add additional rows to the output. This is of course more intuitive.</p>
<p>I have show a screen shot showing the transformations in use in PDI. I would have shown a sample in Talend, however the tMap component is broken in OSX and has been since 2007, so I can&#39;t show a real world example whereby you route/map/switch the error to a different object. </p>
<div id="attachment_204" class="wp-caption alignnone" style="width: 510px"><a href="http://hugoworld.wordpress.com/2009/05/29/etl-validation-of-securities-in-informatica-pdi-kettle-and-talend/pdi/" rel="attachment wp-att-204"><img src="http://hugoworld.files.wordpress.com/2009/05/pdi.jpg?w=500&#038;h=312" alt="Validating Securities In Pentaho Data Integration" title="PDI" width="500" height="312" class="size-full wp-image-204" /></a><p class="wp-caption-text">Validating Securities In Pentaho Data Integration</p></div>
<p>Those of you who are interested in using these transformations can download them from the places listed below:</p>
<p><a href="http://hugosfiles.appspot.com/">Link to download Informatica Routines</a><br />
<a href="http://www.talendforge.org/exchange/tos/extension_view.php?eid=161">Link to download Talend Routines</a><br />
PDI Routines<br />
PDI / Kettle Routines (Until I figure out how to contribute these please email me for a copy)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=197&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2009/05/29/etl-validation-of-securities-in-informatica-pdi-kettle-and-talend/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>

		<media:content url="http://hugoworld.files.wordpress.com/2009/05/pdi.jpg" medium="image">
			<media:title type="html">PDI</media:title>
		</media:content>
	</item>
		<item>
		<title>GPU Utilisation and Palo</title>
		<link>http://hugoworld.wordpress.com/2009/02/14/gpu-utilisation-and-palo/</link>
		<comments>http://hugoworld.wordpress.com/2009/02/14/gpu-utilisation-and-palo/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 14:04:46 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[MOLAP]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=173</guid>
		<description><![CDATA[I&#8217;ve just come across an article on how Jedox will utilise the Graphics Processing Unit of computers to accelerate performance by upto 40 times. Interesting stuff. However how many servers out there have high end graphics cards which are normally reserved for games machines and graphics units. Most servers I encounter don&#8217;t even have windowing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=173&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just come across an <a href="http://au.sys-con.com/node/829090">article</a> on how Jedox will utilise the Graphics Processing Unit of computers to accelerate performance by upto 40 times. </p>
<p>Interesting stuff. However how many servers out there have high end graphics cards which are normally reserved for games machines and graphics units. Most servers I encounter don&#8217;t even have windowing software installed. You simply SSH onto them. Although this might be the case with *nix servers, microsoft have also announced <a href="http://msdn.microsoft.com/en-us/library/ms723891(VS.85).aspx">server core</a> a slimmed down MS Server version. This is a good thing, the lighter the core the less programs installed which could offer an attack vector to malicious sources. However this might also mean more servers shipping with simpler graphics cards. </p>
<p>In which case I ponder what would be the best kind of server for palo ? Well I think it could possibly be a mac. Perhaps not an xserve but something like a mac pro since they have high end graphics card by default. Regardless of machine it&#8217;s good to see how Jedox are focussing on harnessing the power of the GPU.</p>
<p>It&#8217;s interesting to note how Apple have included technology to simply the use of the GPU for general purpose programming in their soon to be announced release of OS X (<a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.apple.com/macosx/snowleopard/">Snow Leopard</a>). One thing is for sure, if you want optimal performance from future versions of Palo you best stay clear of a low end machine with integrated graphics, such as your run of the mill Dell. Something tells me that there are going to some happy accountants out there soon, with a shiny new desktop computer sporting a blazingly fast graphics card. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=173&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2009/02/14/gpu-utilisation-and-palo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>
	</item>
		<item>
		<title>Taking the Pain out of Excel Reporting with a useful Talend Extension</title>
		<link>http://hugoworld.wordpress.com/2009/02/08/taking-the-pain-out-of-excel-reporting/</link>
		<comments>http://hugoworld.wordpress.com/2009/02/08/taking-the-pain-out-of-excel-reporting/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 20:21:31 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Talend]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=67</guid>
		<description><![CDATA[Creating Excel Reports just got a whole lot easier. You can read more about the tool in the embedded PDF titled Creating Excel Reports Made Easy or download it from here. The source code is located on the talendForge site. (http://talendforge.org/exchange/tos/?cid=6). If you search by Author Hugo in the java category you can download the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=67&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong> </strong></p>
<p><strong>Creating Excel Reports just got a whole lot easier.</strong></p>
<div id="attachment_158" class="wp-caption alignnone" style="width: 510px"><strong><a rel="attachment wp-att-158" href="http://hugoworld.wordpress.com/?attachment_id=158"><img class="size-full wp-image-158" title="Excel Reports Dashboard" src="http://hugoworld.files.wordpress.com/2009/02/dashboard3.jpg?w=500&#038;h=218" alt="Creating Excel Reports is Easy" width="500" height="218" /></a></strong><p class="wp-caption-text">Creating Excel Reports is Easy</p></div>
<p>You can read more about the tool in the embedded PDF  titled <a href="http://www.adcdata.co.uk/ExcelReportMan.html" target="_blank">Creating Excel Reports Made Easy</a> or download it from <a href="http://www.adcdata.co.uk/ExcelReportMan_files/ExcelReport.pdf" target="_blank">here</a>.</p>
<p>The source code is located on the talendForge site. (http://talendforge.org/exchange/tos/?cid=6). If you search by Author Hugo in the java category you can download the addin.</p>
<p><strong>Love it or loath it the spreadsheet is a ubiquitous business application which empowers the end user. Whilst data can be conveyed in many formats, most business users are happiest with data in Excel.</strong></p>
<p><strong> </strong> I think every IT professional and business user alike will agree with the above statement. While spreadsheets can be a complete nightmare and are frequently abused, for many purposes including reporting and analysis the business find them to be the ideal medium.</p>
<p>Having spent the majority of my IT career working in data related fields I have produced more than my fair share of ETL routines and reports. However until recently something was missing; creating Excel reports was a pain.</p>
<p>Whilst you could create a report in a tool such as Business Objects, Crystal Reports, JasperReports, JFreeReports or any other dedicated reporting tool then export the report to Excel, I have always found these tools to be inflexible when exporting to Excel. They lack the ability to have features such as split panes, drop down filters (eg autofilters), multiple worksheets and lack control over the layout of the data.</p>
<p>Therefore I have created an open source extension for Talend in java which I hope can ease this pain. Traditionally you could create Excel reports in java by using a library such as POI or JXL and writing plenty of code. Alternatively you could write the program in VB/A or .NET but all of these approaches require large amounts of code and can be inflexible, with many lines dedicated to trivial issues such as formatting and data placement. If you wanted to change the report layout or format you needed to change the code and then undergo regression testing to ensure that you hadn&#8217;t inadvertently broken something else.</p>
<p>By using this extension and a template based approach the whole process is greatly simplified, but certainly doesn&#8217;t lack in power or flexibility. Indeed if you discover there are features which you can&#8217;t accomplish with the tool and templates you can include a piece of VBA in the template which will run when the workbook is open to complete the tasks!</p>
<p>I believe that the tool is straightforward and it should be possible for a business user or someone without extensive IT training to quickly get up to speed and create great looking reports without the need for a single line of bespoke code. More adventurous users will appreciate the power offered by the Tags and ability to loop on collections and access underlying features such as renaming worksheets based on object field values.  You can read more about the tool in the attached PDF  titled <a href="http://www.adcdata.co.uk/ExcelReportMan_files/ExcelReport.pdf" target="_blank">Creating Excel Reports Made Easy</a>, infact you should use that as your guide to get up and running with the tool, since it contains numerous useful examples.</p>
<p>Whilst I have endeavored to test the extension and make it as flexible as possible I am of course limited to my own imagination and tests. I would therefore be greatful if others would download the tool provide feedback that will help to improve the tool and benefit us all.</p>
<p>In a nutshell the report is creating by using Talend and mapping the incoming data to objects. The Image below shows a template where all data has been mapped to a single employee object &#8211; hence the tags such as ${employee.name}</p>
<div id="attachment_107" class="wp-caption alignnone" style="width: 510px"><a rel="attachment wp-att-107" href="http://hugoworld.wordpress.com/2009/02/08/taking-the-pain-out-of-excel-reporting/basictagssquare/"><img class="size-full wp-image-107" title="basictagssquare" src="http://hugoworld.files.wordpress.com/2009/02/basictagssquare.jpg?w=500&#038;h=334" alt="See how easy it can be" width="500" height="334" /></a><p class="wp-caption-text">See how easy it can be</p></div>
<p>By using the expressions $[b2 + c2] and $[sum(e2)] in the above report we actually retain one of the many advantages of excel, notably the ability to change fields and see the effects, since at run time these values will become formulas such as =sum(e2:e10). Therefore the business might choose to flex the created spreadsheet to see what the effect would be of changing some variables. In a more traditional report generated by a tool like Crystal these fields would be pre-calculated and we loose one of the advantages which excel offers.</p>
<p>It is possible to nest these objects as well eg you might have an incoming row which has joined two relational tables together eg Emp and Dept. In this situation you would map some fields to the Employee Object and some fields to the Department Object, in addition you would tell the tool on which fields it can join the Employee and Department objects.</p>
<p>By allowing for the nesting of objects it is possible to create nested / banded reports eg see below: &#8211; Note if the pictures looks funny please trust me this is Excel, however I use a mac &#8211; so it should be noted that these spreadsheets have been produced on a unix machine, although being java based the reports can also be created on windows and linux.</p>
<div id="attachment_75" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-75" title="An Excel Report With Banding and Outlines" src="http://hugoworld.files.wordpress.com/2009/02/groupingoutline.jpg?w=500&#038;h=338" alt="A Report with Grouping And Outlines" width="500" height="338" /><p class="wp-caption-text">A Report with Grouping And Outlines</p></div>
<p>The actual Excel Template looks like the one below &#8211; note this is one of the more complex spreadsheets you could hope to create since it has a variety of features. The Tags use JEXL syntax and should therefore be familiar to anyone with a knowledge of JSP &#8211; and are simple to pick up by business users. If the Tags scare you then believe me, you would need to write a lot more code in VBA or a similar language to import the data from the source system and create a report such as this.</p>
<div id="attachment_82" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-82" title="groupingoutlinetemplate" src="http://hugoworld.files.wordpress.com/2009/02/groupingoutlinetemplate.jpg?w=500&#038;h=283" alt="The Template use to create the Banded Report" width="500" height="283" /><p class="wp-caption-text">The Template use to create the Banded Report</p></div>
<p>The main piece of the work is done by the Talend Extension &#8211; however fear not this is very simple to use. It comprises of very few fields.</p>
<div id="attachment_101" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-101" title="Talend Mapping" src="http://hugoworld.files.wordpress.com/2009/02/talend.jpg?w=500&#038;h=312" alt="Mapping the Elements" width="500" height="312" /><p class="wp-caption-text">Mapping the Elements</p></div>
<p>Please don&#8217;t let the images showing tags scare you, they really are quite simple when you get the hand of them.</p>
<p>In addition it is possible to create charts, filter the data, add outlines to the data, group the data and use a whole host of formulas.</p>
<p>The source code is located on the talendForge site. (http://talendforge.org/exchange/tos/?cid=6). If you search by Author Hugo in the java category you can download the addin.</p>
<p>Enjoy</p>
<p>Hugo</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=67&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2009/02/08/taking-the-pain-out-of-excel-reporting/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>

		<media:content url="http://hugoworld.files.wordpress.com/2009/02/dashboard3.jpg" medium="image">
			<media:title type="html">Excel Reports Dashboard</media:title>
		</media:content>

		<media:content url="http://hugoworld.files.wordpress.com/2009/02/basictagssquare.jpg" medium="image">
			<media:title type="html">basictagssquare</media:title>
		</media:content>

		<media:content url="http://hugoworld.files.wordpress.com/2009/02/groupingoutline.jpg" medium="image">
			<media:title type="html">An Excel Report With Banding and Outlines</media:title>
		</media:content>

		<media:content url="http://hugoworld.files.wordpress.com/2009/02/groupingoutlinetemplate.jpg" medium="image">
			<media:title type="html">groupingoutlinetemplate</media:title>
		</media:content>

		<media:content url="http://hugoworld.files.wordpress.com/2009/02/talend.jpg" medium="image">
			<media:title type="html">Talend Mapping</media:title>
		</media:content>
	</item>
		<item>
		<title>Talend Extensions</title>
		<link>http://hugoworld.wordpress.com/2009/02/01/talend-extensions/</link>
		<comments>http://hugoworld.wordpress.com/2009/02/01/talend-extensions/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 11:43:48 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Talend]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=61</guid>
		<description><![CDATA[On and Off I&#8217;ve been writing an extension to Talend for best part of a few months. I say on and off since, since so much has come in the way that I haven&#8217;t had a great deal of time to dedicate to this task. Some of you may be wondering why I am writing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=61&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On and Off I&#8217;ve been writing an extension to Talend for best part of a few months. I say on and off since, since so much has come in the way that I haven&#8217;t had a great deal of time to dedicate to this task.</p>
<p>Some of you may be wondering why I am writing the extension for Talend and not PDI. Well I guess it&#8217;s because when I first embarked on this project I decided that the program would need to dynamically create java classes. The program wouldn&#8217;t know in advance what the classes were or what they looked like. When I first embarked on this endevour the only way I could think about tackling this problem was to write a piece of code which would create a .java file, compile it and add it to a jar before invoking the java classloader and loading the class using reflection. I decided that since PDI is a meta data driven tool and I had effectively resorted to generating code, that this didn&#8217;t fit with the PDI model.</p>
<p>Ironically after I had written the code to achieve the above objective I discovered the dynabeans project within apache commons, which achieved everything I had been attempting to and was also a lot simpler. I wouldn&#8217;t have the same objection about using dynabeans with PDI since it isn&#8217;t generating code and compiling it.</p>
<p>Anyhow I would like to express a few opinions of Talend Extensions. By logging this information here if I decide to create any further extensions for Talend I should at least know which files to check to see why the code isn&#8217;t compiling etc..</p>
<p>1) The GUI elements &#8211; These are defined in an XML file which offers the ability to quickly add common fields such as text fields etc.. Whilst this is perhaps fine to get you going I also found it limiting. I can&#8217;t see how you can create dynamic GUI&#8217;s. How can you have fields which are loaded based on the data in a table or some other source? With PDI you are writing SWT so although it might be more lines of code to create the GUI anything would be possible. What I would really like to do is some sort of validaiton on the user input. If anyone can tell me how to do this then I would be greatful.</p>
<p>2) Code Generation &#8211; There are effectively 3 mains Java Emitter Templates. A begin file which is executed once in the pipeline, a main file which is exectued for every row in the pipeline and an end file, which is executed at the end of the pipeline.</p>
<p>The generation model can be a real pain. For a start you don&#8217;t have any of the advanced feature of an IDE such as code complete, however then most annoying feature is when you have an error in the source code. You can essentially have two different kinds of errors.</p>
<ul>
<li>Startup Generation Errors &#8211; These are primarily due to syntax errors or similar in your JET scripts. I&#8217;ve been writing my code in a text editor, which doesn&#8217;t give me syntax highlighting or anything else which would help to spot such errors.</li>
<li>Compile time Errors &#8211; These occur when you have a problem in your injected code which prevents the generated code from compiling or even generating.</li>
</ul>
<p>I have found the best way to address such issues is it open the begin, main and end files located in workspace/.JETEmitters/src/org/talend/designer/codegen/translators/{YOUR FOLDER HERE}</p>
<p>So if you xml file defined that your component would appear in the Misc section then you would find the files that telend uses in :</p>
<p>workspace/.JETEmitters/src/org/talend/designer/codegen/translators/misc</p>
<p>You can then look at the java stack trace, find the lines in the above files and then move back the your original JET templates and rectify the problem.</p>
<p>The Templates can be messy. I couldn&#8217;t find any way to added methods within the templates to reuse elements of the code. I have found that I have duplicated code in both the begin and main template since I couldn&#8217;t find any way to share this code amongst the template.</p>
<p>Due to the fact I couldn&#8217;t see how to use methods within the templates, some of the code is quite heavily nested and is therefore not so easy to read. In fact since I was writing the code on and off I would find it difficult to come back to the code and amend it.</p>
<p>My other concern is testing the code. I can&#8217;t see any way to effectively unit test the component. This of course is a concern. Could any bugs end up  being compared to &#8220;whack a mole&#8221;. I&#8217;m sure you have seen the game where you whack one mole and two more pop up. So how can you ensure that in fixing one bug you don&#8217;t create two more? Particularly if you can&#8217;t have automated test suites which could be used to regression test after any change ?</p>
<p>However on a more positive note I actually found that the generation model conferred some real advantages. It was possible to move the vast majority of the logic to the template and ensure that the generate code would be simple. Basically since you effectively writing two pieces of code you can ensure that the generated code doesn&#8217;t have to do a great deal or work and should therefore be fast and use less resources.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=61&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2009/02/01/talend-extensions/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>
	</item>
		<item>
		<title>PALO ETL Client &#8211; Web Gui</title>
		<link>http://hugoworld.wordpress.com/2008/08/26/palo-etl-client-web-gui/</link>
		<comments>http://hugoworld.wordpress.com/2008/08/26/palo-etl-client-web-gui/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 16:39:13 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[OLAP]]></category>
		<category><![CDATA[Palo]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=56</guid>
		<description><![CDATA[Great news. The Palo ETL Client now has a GUI. Developed by Tensegrity it uses GWT and runs in your browser. Things are looking up on the palo front. I don&#8217;t know if they have updated the old web client allowing for the creation of subsets in the browser but either way this is good [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=56&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Great news. The Palo ETL Client now has a GUI. Developed by Tensegrity it uses GWT and runs in your browser. </p>
<p>Things are looking up on the palo front. I don&#8217;t know if they have updated the old web client allowing for the creation of subsets in the browser but either way this is good news.</p>
<p><a href="http://www.jpalo.com/en/products/palo_etl_client.html#Features">Check it out</a></p>
<p>Update &#8211; I&#8217;ve just started the demo and realised that this isn&#8217;t complete and is at the moment a demo. Still it will be cool to be able to ETL routines in a browser and them executed on a backend server.<br />
In that respect it&#8217;s a big like <a href="http://www.snaplogic.org">snaplogic</a>. Except snaplogic uses flash for it&#8217;s GUI and python as the ETL engine.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hugoworld.wordpress.com/56/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hugoworld.wordpress.com/56/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=56&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2008/08/26/palo-etl-client-web-gui/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>
	</item>
		<item>
		<title>Hurray &#8211; The tool is complete</title>
		<link>http://hugoworld.wordpress.com/2008/08/04/hurray-the-tool-is-complete/</link>
		<comments>http://hugoworld.wordpress.com/2008/08/04/hurray-the-tool-is-complete/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:50:29 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[mindmap]]></category>
		<category><![CDATA[MOLAP]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[Palo]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=36</guid>
		<description><![CDATA[I have basically finished the OLAP prototyping tool. I need to upload the code to somewhere. I will probably do this when I&#8217;m back in the UK. So mostly likely at the weekend. The tool allows you not only create the model but also add rules (which are done by attaching notes to the nodes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=36&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have basically finished the OLAP prototyping tool. I need to upload the code to somewhere. I will probably do this when I&#8217;m back in the UK. So mostly likely at the weekend.</p>
<p>The tool allows you not only create the model but also add rules (which are done by attaching notes to the nodes and set weights. By default the weight of an element will be one. However by using the 1 icon it will be given a weight of minus one.</p>
<p>I have uploaded a few more presentations to screencast. Unfortunately the screen recording tool will only allow for short 5 minute recordings. The first recording is basically talking about BI and setting the scene. The last two recordings are creating cubes and slicing and dicing the data with JPalo.</p>
<p><a href="http://www.screencast.com/users/hugopendlebury/folders/Default/media/d84bad1c-2da6-4e0a-a8bb-8fdd59bbca94">mindmap1</a><br />
<a href="http://www.screencast.com/users/hugopendlebury/folders/Default/media/24cf4aaf-9b9d-452c-9d75-a9171e493a0a"><br />
mindmap2</a></p>
<p><a href="http://www.screencast.com/users/hugopendlebury/folders/Default/media/31a3a21f-65d7-449e-a314-a4152cb7f43b">mindmap3</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hugoworld.wordpress.com/36/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hugoworld.wordpress.com/36/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=36&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2008/08/04/hurray-the-tool-is-complete/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>
	</item>
		<item>
		<title>JPalo OSX</title>
		<link>http://hugoworld.wordpress.com/2008/07/30/jpalo-osx/</link>
		<comments>http://hugoworld.wordpress.com/2008/07/30/jpalo-osx/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 18:21:18 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[mindmap]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Palo]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=33</guid>
		<description><![CDATA[I&#8217;ve noticed that this blog has been getting numerous hits pertaining to palo and mac related searches. Indeed many of these are related to searches such as &#8220;Jpalo Mac&#8221; I can only assume that there are people out there eager to use JPalo on the mac. Well the good news is that this is possible [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=33&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve noticed that this blog has been getting numerous hits pertaining to palo and mac related searches. Indeed many of these are related to searches such as &#8220;Jpalo Mac&#8221;</p>
<p>I can only assume that there are people out there eager to use JPalo on the mac. Well the good news is that this is possible and you have all the same functionality as anyone else. Unfortunatley Tensegrity Haven&#8217;t got a download on their website for an eclipse RCP. I can only assume this is because they don&#8217;t a mac in their office and that since SWT uses native GUI controls they couldn&#8217;t test a package and so weren&#8217;t willing to publish something which might not work.</p>
<p>However fear not it&#8217;s no big deal to get the eclipse addin working all youneed to do is visit eclipse.org and download a copy eclipse. This will give you a full blown eclipse development environment, but more importantly the application will contain the native SWT jars for the mac. Next goto the tensegriy site and download either a windows or linux version of the eclipse client. Within there you need to copy the folders within the plugin sections to the plugins folder of the version of eclipse you downloaded.</p>
<p>When you start eclipse you need to change the perspective to Palo Client or Palo admin and your good to go. Slicing and dicing cubes, adding users and groups and many other such tasks are now easily accomplished.</p>
<p>In fact I hope to produce a screencast in the next few days which shows a palo server running on the mac, a model creating using a mindmap and then an iterative agile development cycle using the JPalo RCP and the mindmap to rapidly revise the model.</p>
<p>If anyone has questions on eclipse and jpalo give me a shout.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hugoworld.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hugoworld.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=33&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2008/07/30/jpalo-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>
	</item>
		<item>
		<title>Consolidation Weights</title>
		<link>http://hugoworld.wordpress.com/2008/07/30/consolidation-weights/</link>
		<comments>http://hugoworld.wordpress.com/2008/07/30/consolidation-weights/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 17:52:17 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[mindmap]]></category>
		<category><![CDATA[MOLAP]]></category>
		<category><![CDATA[Palo]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=28</guid>
		<description><![CDATA[I&#8217;ve extended the palo mindmap export tool this morning, so that you now have the ability to set element weights within a consolidation. By default the element will have a weight of one, i.e. it will add up within a rollup. However by adding an icon to the mapping you can change the element to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=28&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve extended the palo mindmap export tool this morning, so that you now have the ability to set element weights within a consolidation. By default the element will have a weight of one, i.e. it will add up within a rollup. However by adding an icon to the mapping you can change the element to have a negative weighting within a rollup.</p>
<p>This should be useful if you are creating a rollups such as:</p>
<p>Gross Profit</p>
<p>Revenue</p>
<p>Cost of Sales</p>
<p>As you are probably aware the accounting formula for the above is</p>
<p>Gross Profit = Revenue &#8211; Cost of Sales</p>
<p>Therefore if we wanted to model this using a palo cube we would give the element Cost Of Sales a negative weighting with the weight of minus one. Alternatively this could be done with a rule such as ['Gross Profit'] = Revenue &#8211; Cost of Sales. What are the advantages of using a consolidation / rollup ? Well for a start you don&#8217;t have to worry about the concept of accelerators. In tools such as palo an accelerator / feeder is used to tell the rules engine that the rule should only operate when a value is populated with data.</p>
<p>Perhaps the best way to explain this concept is to think of something such as Revenue = Price * Volume</p>
<p>In the case of the above calculation you would only want the rules engine to perform this calculation if the volume was &gt; 0 i.e. not null (since anything multiplied by zero is zero) and in a sparse cube this would result in potentially millions of unneccesary calculations. From prior experience accelation is something which people find difficult to understand (and to get correct) so it&#8217;s generally best to use a strategy such as weights if possible. If you use rules make sure you accelerate them otherwise you will find the performance of your model to be poor, and for this you only have yourself to blame. If you pull values from other cubes then you really should be thinking out how to tell the engine to deal with this sparsity so it can operate as efficiently as possible.</p>
<p>Shown below is a diagram of how this would be represented in a mindmap.</p>
<p><a href="http://hugoworld.files.wordpress.com/2008/07/weighting.jpg"><img class="alignnone size-medium wp-image-29" src="http://hugoworld.files.wordpress.com/2008/07/weighting.jpg?w=300&#038;h=199" alt="" width="300" height="199" /></a></p>
<p>Whilst I&#8217;m at it I thought I might use either the notes or link feature within freemind to allow for the creation of rules within the model.</p>
<p>If anyone has any other ideas about what else could be incorporated then feel free to post a comment. I would particularly be interested to know if anyone has any suggestions for how I could incorporate attributes within the diagram.  I feel that the current representation of the cube with it&#8217;s hierarchies and levels is pretty effectual and the population of random data allows the user to quickly slice and dice the model and determine what else they would like. The ability to spread data using one of the many front ends is also great. But being able to add attributes would in my opinion be the icing on top of the cake.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hugoworld.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hugoworld.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=28&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2008/07/30/consolidation-weights/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>

		<media:content url="http://hugoworld.files.wordpress.com/2008/07/weighting.jpg?w=300" medium="image" />
	</item>
		<item>
		<title>OLAP Mindmaps</title>
		<link>http://hugoworld.wordpress.com/2008/07/29/olap-mindmaps/</link>
		<comments>http://hugoworld.wordpress.com/2008/07/29/olap-mindmaps/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 16:34:53 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[mindmap]]></category>
		<category><![CDATA[MOLAP]]></category>
		<category><![CDATA[Palo]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=20</guid>
		<description><![CDATA[Making progress on the molap export plugin. I&#8217;m in California at the moment on business, I was so jet lagged after flying over on sunday that I haven&#8217;t had much time or energy to do a great deal. Woke up this morning just after 6 so I guess I&#8217;m getting used to the time difference. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=20&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Making progress on the molap export plugin. I&#8217;m in California at the moment on business, I was so jet lagged after flying over on sunday that I haven&#8217;t had much time or energy to do a great deal.</p>
<p>Woke up this morning just after 6 so I guess I&#8217;m getting used to the time difference. Unable to get back to sleep I decided I would see if I could make any progress before breakfast. Fortunately I had a stoke of luck and was able to make a few changes to a class used by the Freemind Jabber collaboration tool. So now I have a few GUI components to allow the end user to select things such as the server and database. I still need to add a little bit of error handling eg throwing an error and letting the use know if the server isn&#8217;t running etc..</p>
<p>Hope to have the tool uploaded and ready for use by the weekend. Now I&#8217;ve overcome the tierdness I should be able to do a little here and there in the evenings. I don&#8217;t have a lot of plans whilst I&#8217;m over here, thought I might hire a bike and ride over the golden gate bridge and maybe see about trying to take in a baseball game or something which evokes visions of America.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hugoworld.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hugoworld.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=20&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2008/07/29/olap-mindmaps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>
	</item>
		<item>
		<title>Rapid Cube Prototyping</title>
		<link>http://hugoworld.wordpress.com/2008/07/26/rapid-cube-prototyping/</link>
		<comments>http://hugoworld.wordpress.com/2008/07/26/rapid-cube-prototyping/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 08:47:38 +0000</pubDate>
		<dc:creator>hugoworld</dc:creator>
				<category><![CDATA[MOLAP]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[Palo]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://hugoworld.wordpress.com/?p=12</guid>
		<description><![CDATA[It&#8217;s been many months since my last post. My Perl API for PALO has seriously stagnated. What do I have to say for this and am I sorry? Well I guess it&#8217;s a mixed bag I wrote a fair amout of perl and become frustrated after conducting a performance test against palo. I actually lost [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=12&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been many months since my last post. My Perl API for PALO has seriously stagnated. What do I have to say for this and am I sorry?</p>
<p>Well I guess it&#8217;s a mixed bag I wrote a fair amout of perl and become frustrated after conducting a performance test against palo.</p>
<p>I actually lost interest in my API when I conducted some performance tests using the Palo HTTP API when creating and deleting elements in a dimension. I don&#8217;t remember the exact scenario, I think I was testing against Palo 2.0 and creating 10,000 elements in a dimension. From what I can recall the performance decreased in a exponential fashion the more elements were added / deleted from the dimension. Maybe this wasn&#8217;t a fair test, how often do you want to delete a large amount of elements.</p>
<p>So what has changed ? Well for a time I actually abandoned the perl API and lost interest in palo! Since then I&#8217;ve changed company and lots of water has passed under the bridge. Having a new place of work and a more friendly energizing working environment has given me a renewed sense of purpose and vigor.</p>
<p>Palo 2.5 has been released and I&#8217;ve spent the last few days writing a piece of java to allow the rapid prototyping of cubes. As a former consultant I frequently found situations where clients didn&#8217;t fully comprehend the principles of dimensionality. They didn&#8217;t necessarily understand hierarchies or didn&#8217;t actually know quite what data they want to be able to analyze. Generally after you had developed the ETL routines and they had used the system their level of knowledge would increase and they would soon come up with a whole host of change requests.</p>
<p>From my perspective this was frequently annoying, extra routines would need to be created and decisions made as to if the data for the missing levels should be back filled or defaulted to &#8220;not defined&#8221; type elements.</p>
<p>With this new tool I hope to be able to hit the ground running so to speak and be able to educate the end users from day one. The real beauty is that it will be possible to create a visual model representing their problem domain. They can freely change the model to add extra dimensions, levels, measures or cubes and then the tool will create the cube for them and populate it random sample data. This offers the ability to play with data and determine if this will meet requirements and also the fact it&#8217;s possible to do all of this in less than 5 minutes.</p>
<p>I hope to release the tool within the next week, it&#8217;s essentially complete but needs to have a few extra GUI components added allow you to chose which server and database the structures will be created on. Watch this space for more details. Adding the final elements shouldn&#8217;t be too much effort, creating a screen cast showing the tool in use will be much more effort. I&#8217;ve used a great free tool called WINK (http://www.debugmode.com/wink/) in the past for this. Wink can capture your screen, you can then add comments and render the whole thing to a flash file. Its great for creating demonstrations and tutorials. There are also versions for linux and windows. This time I&#8217;m doing the recording on the mac and have used another free tool called Jing. I haven&#8217;t figured out how to add captions, so you will have to listen to the audio instead. I&#8217;m sure this quick recording with give you an idea of the tool, yes it would be more impressive if I included slicing and dicing in excel or using the jpalo web client.</p>
<p>Check out the video <a href="http://www.screencast.com/users/hugopendlebury/folders/Default/media/8e4a09cd-bf43-4d82-897e-c1e9b1b12903">here</a>.<br />
Some more astute readers may also be wondering what I&#8217;m going to do with the perl API. Well I intent to complete it and make it available to all. After using Eclipse for my java development I&#8217;m become a fan of this environment and have installed the perl EPIC plugin. This has proved to be a real revelation, I now have advanced features such as debugging using breakpoints and code complete. WOW Life seems so much easier now, no more text editors and print statements for me. I hope this will increase my productivity so I can finally finish this project. Will I ever use it in real life ? I don&#8217;t know I really like jpalo and think Tengegrity have done a great job on creating such an intuitive model also I don&#8217;t actually work with cubes any more and have focused much more on ETL. Buts it always good to have the option.</p>
<p>Watch this space</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hugoworld.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hugoworld.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hugoworld.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hugoworld.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hugoworld.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hugoworld.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hugoworld.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hugoworld.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hugoworld.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hugoworld.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hugoworld.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hugoworld.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hugoworld.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hugoworld.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hugoworld.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hugoworld.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hugoworld.wordpress.com&amp;blog=1457104&amp;post=12&amp;subd=hugoworld&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hugoworld.wordpress.com/2008/07/26/rapid-cube-prototyping/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4485adc7cb07a381393ef728c9566e94?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">hugoworld</media:title>
		</media:content>
	</item>
	</channel>
</rss>
