<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6644329693530300467</id><updated>2012-01-27T12:59:54.232Z</updated><category term='mobile'/><category term='kettle'/><category term='cdf'/><category term='pentaho'/><category term='dashboards'/><category term='mdx'/><category term='saiku'/><category term='elasticsearch'/><category term='community'/><category term='pdi'/><category term='mozilla'/><category term='bsh'/><category term='ccc'/><category term='ctools'/><category term='general'/><category term='book'/><category term='olap'/><category term='cda'/><category term='cde'/><category term='cst'/><category term='reporting'/><title type='text'>Pedro Alves on Business Intelligence</title><subtitle type='html'>Eyes on the Pentaho planet, feet on the ground</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4877145848166237890</id><published>2012-01-27T10:42:00.002Z</published><updated>2012-01-27T10:42:47.692Z</updated><title type='text'>CDA release - 12.01.26</title><content type='html'>Aaaand, since there's been a lot of time without a release, CAD 12.01.26 is here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Solved Redmine Bug #104: CDA Cache Manager -&amp;gt; UI didn't update after delete a query&lt;/li&gt;&lt;li&gt;Implemented Redmine Feature #105: CDA Cache Manager -&amp;gt; Delete all queries belonging to a cda file&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;F&lt;/span&gt;ix a bug where html output would duplicate output in some cases&lt;/li&gt;&lt;li&gt;C&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;ache refactor; cache monitor: +removeAll, require admin permissions&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;cachemanager: user feedback for server requests&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;Support for cache plugin bean. Serialization changed&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;/span&gt;Added version info to cachemanager and SelfTest Page&lt;/li&gt;&lt;li&gt;Sorted out some images on SelfTest Page&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ctools installer with -b stable will get this version &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4877145848166237890?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4877145848166237890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/cda-release-120126.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4877145848166237890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4877145848166237890'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/cda-release-120126.html' title='CDA release - 12.01.26'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1493453055758263164</id><published>2012-01-26T10:49:00.001Z</published><updated>2012-01-26T10:49:26.365Z</updated><title type='text'>CCC release - 12.01.25</title><content type='html'>New CCC release 12.01.25 (standalone version, soon to be included in the next stable CDF release) and already available if you're using ctools installer with -b dev&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Changelog:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Implemented Redmine Feature #107 - Control number of labels on the linear Axis for categorical charts (show "MinorTicks" option, including 2nd axis)&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;Implemented Redmine Feature #108 - Control number of ticks on the linear Axis for categorical charts ("DesiredTickCount", including 2nd axis with independent scale)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Implemented Redmine Feature #109 - Rounded maximum for linear axis in categorical charts ("DomainRoundMode" option, including 2nd axis with independent scale)&lt;/li&gt;&lt;li&gt;Solved Redmine Issue #78 - Fix the vertical order in which series are drawn, so that when applicable, they show from top to bottom.&lt;/li&gt;&lt;li&gt;Solved Redmine Issue #121 - Tooltips in barcharts do not appear if bars overflow.&lt;/li&gt;&lt;li&gt;Solved Redmine Issue #103 - Ordinal axis grids not being drawn&lt;/li&gt;&lt;li&gt;MultiValueTranslator: issue when no categories&lt;/li&gt;&lt;li&gt;Solved valueFormat receives numeric value, doesn't parse&lt;/li&gt;&lt;li&gt;Fixed typo of property name in LegendPanel&amp;nbsp;&lt;/li&gt;&lt;li&gt;Add multi-series barline support&lt;/li&gt;&lt;li&gt;useCompositeAxis compatible with flat arrays&lt;/li&gt;&lt;li&gt;vml namespace conflict: revert sparkline, declaration in protovis-msie no longer lazy&lt;/li&gt;&lt;li&gt;align horizontal text in composite vertical axis towards the chart; revert convention breaks in multiline conditional expressions&lt;/li&gt;&lt;li&gt;workaround issue in 16th decimal position in IE9 64bit&lt;/li&gt;&lt;li&gt;Fixed regression with bulletcharts being translated in 10px down&lt;/li&gt;&lt;li&gt;Added new (and some of the missing) documentation to the testZZZ.html files&lt;/li&gt;&lt;li&gt;Fixed the drawing of bars and grid lines on the ordinal scale: they were not centered with the tick and label&amp;nbsp;&lt;/li&gt;&lt;li&gt;In linear axis, made minorTicks "extend" (major)ticks, so that visibility (through .visible or .strokeStyle) of the later affects the former.&amp;nbsp;&lt;/li&gt;&lt;li&gt;testZZZ.html files documentation mencioned '{x,y}AxisFullGrid_' instead of the correct value'{x,y}AxisGrid_'.&lt;/li&gt;&lt;li&gt;Fixed linear axis grid to show a line on the last tick (as opposed to the ordinal axis, that does not show the last line). When EndLine is active, it is drawn above the last grid line.&lt;/li&gt;&lt;li&gt;Fixed bug in the positioning of linear scale labels that revealed it self (don't know why) only on time series charts * Fixed bug in time series scale range calculation when with a second axis * Fixed bug in the drawing of minor ticks on time series scales (date arithmetic issues)&lt;/li&gt;&lt;li&gt;Fixed regression bug in ScatterCharts (DotChart, LineChart, StackedLineChart and StackedAreaChart) that caused null values to break line drawing.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Fixed the visibility of the first grid line of a time series axis - it did not show because, in this case, the first tick is not on the origin.&lt;/li&gt;&lt;li&gt;Fixed compatibility issue between jQuery.sparkline and protovis-msie when in IE8.&lt;/li&gt;&lt;li&gt;heatgrid: +scalingType:'discrete' (interval-based, no color interpolation)&lt;/li&gt;&lt;li&gt;tipsy w/ followMouse: don't fall out of window&lt;/li&gt;&lt;li&gt;Heatgrid: ignore null values in min/max calculations; nullShape not taking correct index into account;&lt;/li&gt;&lt;li&gt;solved dangling variable reference&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Great stuff! :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1493453055758263164?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1493453055758263164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/ccc-release-120125.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1493453055758263164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1493453055758263164'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/ccc-release-120125.html' title='CCC release - 12.01.25'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6040626120918337147</id><published>2012-01-24T17:37:00.000Z</published><updated>2012-01-24T17:37:36.581Z</updated><title type='text'>Firefox Telemetry - From adhoc R analysis to CDE Dashboards</title><content type='html'>Time to put on my analyst hat. No matter what dashboard we're trying to build, it will all fail if the underlying analysis isn't good.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;A dashboard is a great way to allow users to get information on a specific subject, considering we know what we're going to show. On this case I had absolutely no idea. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;When we're sitting on a bunch of data, we need to go through a discovery phase where we'll actually decide what information can be valuable to the user.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Telemetry Analysis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.mozilla.com/tglek/2011/09/20/firefox-7-telemetry-faster-startup/" target="_blank"&gt;Telemetry&lt;/a&gt; is a project from Mozilla that aims to make the products better - &lt;a href="http://www.mozilla.org/en-US/firefox/fx/" target="_blank"&gt;Firefox&lt;/a&gt;, &lt;a href="http://www.mozilla.org/en-US/thunderbird/" target="_blank"&gt;Thunderbird&lt;/a&gt; and &lt;a href="http://www.mozilla.org/en-US/mobile/" target="_blank"&gt;Fennec&lt;/a&gt; (codename for Firefox Mobile) by analyzing performance data sent by users while doing their real-world activity and the impact that developer changes had on that performance. The goal is simple - make better, happier, more productive.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;As one can imagine, we have a bunch of data. All the submissions are primarily stored in &lt;a href="http://hbase.apache.org/" target="_blank"&gt;HBase &lt;/a&gt;and later aggregated into &lt;a href="http://www.elasticsearch.com/" target="_blank"&gt;ElasticSearch&lt;/a&gt;, allowing more versatile / real time analysis. We were then able to get a dynamic view over the data that summed up all the contributions from the users:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-QRv0Ved2mIU/Tx6K2yH8TvI/AAAAAAAAAUw/XPywmIIC3Jg/s1600/telemetry-ev1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://1.bp.blogspot.com/-QRv0Ved2mIU/Tx6K2yH8TvI/AAAAAAAAAUw/XPywmIIC3Jg/s320/telemetry-ev1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I &lt;a href="http://pedroalves-bi.blogspot.com/2011/07/elasticsearch-kettle-and-ctools.html" target="_blank"&gt;previously blogged&lt;/a&gt; about the techniques that allow us to get data from/to elasticsearch, and once again it proved invaluable method. On this case, due to the huge amount of data, we had to use kettle's &lt;a href="http://type-exit.org/adventures-with-open-source-bi/2010/10/the-user-defined-java-class-step/" target="_blank"&gt;UDJC&lt;/a&gt; step, initially developed by Mozilla Metrics' chief engineer &lt;a href="http://daniele.livejournal.com/" target="_blank"&gt;Daniel Einspanjer&lt;/a&gt; along with &lt;a href="http://jackson.codehaus.org/" target="_blank"&gt;Jackson JSON&lt;/a&gt; processor to achieve high performance while processing the huge dataset of information and &lt;a href="http://jira.pentaho.com/browse/PDI-6924" target="_blank"&gt;submitting some kettle improvements&lt;/a&gt; along the way.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;New questions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This allowed developers to be able to view the impact of their changes and had the best effect a data tool can have while answering some questions - raise other questions.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;Most of the following questions were related to time-based analysis, and be able to track, over time, the impact of the changes on a specific probe over a period of time. This would have the immediate effect of giving people data to decide if a specific release channel would be ready to pass to the next channel on the &lt;a href="http://blog.lizardwrangler.com/2011/08/25/rapid-release-process/" target="_blank"&gt;rapid release cycle&lt;/a&gt; and answer some of the new questions that the new process brings:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;- Is &lt;a href="http://www.mozilla.org/en-US/firefox/aurora/" target="_blank"&gt;Aurora&lt;/a&gt; ready to move to &lt;a href="http://www.mozilla.org/en-US/firefox/beta/" target="_blank"&gt;Beta&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;- Are we getting the expected performance improvement in &lt;a href="http://nightly.mozilla.org/" target="_blank"&gt;Nightly&lt;/a&gt;?&lt;/blockquote&gt;&lt;br /&gt;As a stretch goal, my personal objective was to implement any kind of system that allowed us to quickly identify regressions on the code without having to manually go through all the probes.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;span style="font-size: large;"&gt;Back to basics - Kimball's DataWarehouse&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;This required a new approach on the data. Or rather, an old approach. In Business Intelligence, we live in exciting times where we have tons of available technologies that allow us to choose the best tool for the job (I recently did a &lt;a href="http://pedroalves-bi.blogspot.com/2011/08/kimball-is-getting-old.html" target="_blank"&gt;blog post&lt;/a&gt; on the subject). But&amp;nbsp; let's not forget 20 years of knowledge. This specific set of questions required building a standard, Kimball style data warehouse. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Telemetry Evolution &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The goal is to have a way to track the improvements on the project's code by tracking, over time, the evolution of some key metrics we chose. Currently, the ones that are being tracked are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Mean&lt;/li&gt;&lt;li&gt; Standard Dev.&lt;/li&gt;&lt;li&gt; Median&lt;/li&gt;&lt;li&gt; Percentiles (25,50,75)&lt;/li&gt;&lt;/ul&gt;Since telemetry data is stored in buckets on the client side, this values are not statistically accurate; they are not the mean and stddev of a particular probe, eg CYCLE_COLLECTOR, they are, instead, the mean of the bucketed values after submission. Same for all the others. However, if not an absolutely accurate representation of the end user's scenario, proved to be very effective in quantifying and measuring changes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Concepts &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We'll consider platform builds for a specific application, version and OS as having the same codebase. So our key is platformBuildID-appName-appVersion-OS, and we consider that to be our "primary key", and all submissions with similar keys are aggregated together and considered to be generated from the same code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On a daily basis we'll query telemetry and we'll query for the builds made on the last 7 days (configurable value). In this there's the assumption that after 7 days is enough for sampling and changes to the main kpis after that period would be due to environmental changes and not due to code reasons. This number is currently being studied to find out the best value to use.&lt;br /&gt;&lt;br /&gt;We're also discarding, for this datawarehouse, all submission with less than 500 counts, in order to have a good enough sample size.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;R Analysis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Spent about two weeks building this datawarehouse. With no guarantees that the results would yield anything decent. So once I had a resultset I could work with, took the opportunity to use &lt;a href="http://www.r-project.org/" target="_blank"&gt;R&lt;/a&gt; to analyze the data. This has been, for ages, an item on my to-do list.&lt;br /&gt;&lt;br /&gt;R is an insanely powerful statistical analysis tool with tons of packages that will guarantee that the bottleneck&amp;nbsp; will be your own mathematical knowledge (or lack of), making it one of the analysts' favorite tool.&lt;br /&gt;&lt;br /&gt;R does wonders when we have the data in a tabular format and want to do ad-hoc analysis, so I picked a resultset and started playing with the data. I used CYCLE_COLLECTOR probe evolution on windows platform and Nightly channel. &lt;br /&gt;&lt;br /&gt;The first thing I did was trying to get a feeling of the shape of the data (this, obviously, after a couple of days trying to find my way around R). After a while, it was looking like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VOpcjM-wEBo/Tx6dfnFizVI/AAAAAAAAAU4/0SvbM40J0cs/s1600/telemetry-ev2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="205" src="http://3.bp.blogspot.com/-VOpcjM-wEBo/Tx6dfnFizVI/AAAAAAAAAU4/0SvbM40J0cs/s320/telemetry-ev2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The initial analysis led to a relation between the submission counts and mean / std dev. The higher the count, the lower the mean and standard deviation. This is coherent with something the metrics team already knew - the initial submissions are not representative of the general population, so on this case size really matters.&lt;br /&gt;&lt;br /&gt;Also tried for a while to find a statistical model to this data, mostly around fitting a &lt;a href="http://en.wikipedia.org/wiki/Normal_distribution" target="_blank"&gt;normal distribution&lt;/a&gt; and thus trying to get more analysis from the parameters, like the &lt;a href="http://en.wikipedia.org/wiki/Cumulative_distribution_function" target="_blank"&gt;CDF&lt;/a&gt; and other density functions. This proved to be a frustrating task, as no decent fit came from it.&lt;br /&gt;&lt;br /&gt;Due to the all the distinct types of probes in the code, we decided only take in consideration means and standard deviation, and looking at the evolution on time. This is the view we decided to use:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-vDZ7HBbPsRQ/Tx6ojI3gBBI/AAAAAAAAAVA/lTxJHyWTAew/s1600/telemetry-ev3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="205" src="http://2.bp.blogspot.com/-vDZ7HBbPsRQ/Tx6ojI3gBBI/AAAAAAAAAVA/lTxJHyWTAew/s320/telemetry-ev3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In a single chart we could be able to tell the evolution of the CYCLE_COLLECTOR with point position represents the mean, size of the points represent standard deviation (not the accurate value, but according to the scale) and color coded representing the size of the sample.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;From R to CDE Dashboard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The next step, after knowing the kind of analysis we need to give to developers, is to build a dashboard that allows users to get this data from the BI system automatically, up to date and with the ability to quickly parametrize it. And obviously skip the need for the consumers of the data to have knowledge on R.&lt;br /&gt;&lt;br /&gt;All the &lt;a href="http://ctools.webdetails.org/" target="_blank"&gt;Ctools&lt;/a&gt; were made having in mind the capability to be able to virtually build *anything*, and replicate a R analysis is a very good challenge. Here's the end result after.... 2 days&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xIHqjj9VFPM/Tx7E_zlD5GI/AAAAAAAAAVI/ByJsKpqeS6A/s1600/telemetry-ev4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://1.bp.blogspot.com/-xIHqjj9VFPM/Tx7E_zlD5GI/AAAAAAAAAVI/ByJsKpqeS6A/s320/telemetry-ev4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;With all the live connections to the data users can freely play with the data and change the parameters to be able to quickly see the impacts of the code&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Discovery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the biggest advantages of a datawarehouse is that it comes with an astonishing query language, &lt;a href="http://msdn.microsoft.com/en-us/library/ms145970.aspx" target="_blank"&gt;MDX&lt;/a&gt;. In our case (and for anyone using &lt;a href="http://www.pentaho.com/" target="_blank"&gt;pentaho&lt;/a&gt; as a BI server) we're using &lt;a href="http://mondrian.pentaho.com/" target="_blank"&gt;Mondrian&lt;/a&gt; as the &lt;a href="http://en.wikipedia.org/wiki/ROLAP" target="_blank"&gt;Rolap&lt;/a&gt; engine that allows those queries to run.&lt;br /&gt;&lt;br /&gt;MDX is very well suited for answering business questions, behaving particularly well on time-based analysis. So the next step was building a table that could compare the last 7 day average with the prior 28 days average. Big shifts would indicate either improvements or regressions. Here's the resulting table, ordered&amp;nbsp; by default on regressions:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fDMp7U4Hu5s/Tx7OE0vlEgI/AAAAAAAAAVQ/AgF2fb1bOjc/s1600/telemetry-ev5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="164" src="http://4.bp.blogspot.com/-fDMp7U4Hu5s/Tx7OE0vlEgI/AAAAAAAAAVQ/AgF2fb1bOjc/s320/telemetry-ev5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A regression of 1590% was immediately noticed. Clicking on that row allowed to inspect the actual histogram distribution:&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-FRpZgHGFuEE/Tx7bv6H6B1I/AAAAAAAAAVY/aH4XNRP4WVk/s1600/telemetry-ev6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://2.bp.blogspot.com/-FRpZgHGFuEE/Tx7bv6H6B1I/AAAAAAAAAVY/aH4XNRP4WVk/s320/telemetry-ev6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I immediately checked with one of the firefox developers that mentioned that there was an error in that specific build that caused the counters of this probe to be totally skewed up. Success!&lt;br /&gt;&lt;br /&gt;It's instantly rewarding to find out that the number of improvements absolutely outnumber the amount of regressions. One of my favorite ones that show all the improvements that developers have been putting in the code is IMAGE_DECODE_ON_DRAW_LATENCY&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EQw4tV806gs/Tx7bwHwBRoI/AAAAAAAAAVc/PtZHfm7IB6Y/s1600/telemetry-ev7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://2.bp.blogspot.com/-EQw4tV806gs/Tx7bwHwBRoI/AAAAAAAAAVc/PtZHfm7IB6Y/s320/telemetry-ev7.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This is currently being used by the internal product developers to give them metrics over their code and the metrics team is working on allowing contributors outside the company to be able to take advantage of this tools.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Help Mozilla helping you&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is only possible to do with the help of users that are willing to submit their performance data back to mozilla. This is what we do with your data. There's absolutely nothing that can be traced back to you, as privacy is always the number one concern at mozilla. And here's how you can help:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-CLnvmVMvZ_U/Tx7nhxp8PxI/AAAAAAAAAVo/HknuEVGYk0U/s1600/telemetry-ev8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-CLnvmVMvZ_U/Tx7nhxp8PxI/AAAAAAAAAVo/HknuEVGYk0U/s320/telemetry-ev8.png" width="314" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6040626120918337147?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6040626120918337147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/firefox-telemetry-from-adhoc-r-analysis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6040626120918337147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6040626120918337147'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/firefox-telemetry-from-adhoc-r-analysis.html' title='Firefox Telemetry - From adhoc R analysis to CDE Dashboards'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-QRv0Ved2mIU/Tx6K2yH8TvI/AAAAAAAAAUw/XPywmIIC3Jg/s72-c/telemetry-ev1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1773655811533304489</id><published>2012-01-18T10:52:00.002Z</published><updated>2012-01-18T10:52:43.992Z</updated><title type='text'>Multiple parameters in CDF / CDE</title><content type='html'>This tech tip shows how to configure multiple parameters to work in CDE / CDF.&lt;br /&gt;&lt;br /&gt;We can use any query, but on this case we'll start with the parameter wizard, located in the datasources panel.&lt;br /&gt;&lt;br /&gt;Create a new dashboard and go to the datasources panel. Under the "Wizards" select parameter wizard. Select a cube / dimension and drag it to the rows.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-9119GzXGkgg/TxajPzaEOPI/AAAAAAAAAUQ/784brXq3p-0/s1600/blogParams-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="188" src="http://3.bp.blogspot.com/-9119GzXGkgg/TxajPzaEOPI/AAAAAAAAAUQ/784brXq3p-0/s320/blogParams-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;I selected the multiplebutton but any of the other multiple selection component would work too. The multiple button component supports both single selection (default) or multiple selection. We need to activate it in the component that was generated by the wizard&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rMD6zjsDOkU/TxajRINwdaI/AAAAAAAAAUY/KDoxMsS8UlU/s1600/blogParams-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/-rMD6zjsDOkU/TxajRINwdaI/AAAAAAAAAUY/KDoxMsS8UlU/s320/blogParams-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The generated code works, but we may want to define a set of defaults be preselected. In order to do that, we need to delete our simple parameter and&amp;nbsp; add a custom parameter with the following code:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;["[Markets].[EMEA]","[Markets].[NA]"]&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-oZjs2DBhoSs/TxajR2ugprI/AAAAAAAAAUg/26yY3T-gnAU/s1600/blogParams-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://3.bp.blogspot.com/-oZjs2DBhoSs/TxajR2ugprI/AAAAAAAAAUg/26yY3T-gnAU/s320/blogParams-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This array has to match the id's we use in the parameter. That way, when we preview the dashboard we get those parameters selected by default as we wanted&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DMP_tIfXVL0/TxajS0a1_KI/AAAAAAAAAUo/xNb1WCCWa8I/s1600/blogParams-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://4.bp.blogspot.com/-DMP_tIfXVL0/TxajS0a1_KI/AAAAAAAAAUo/xNb1WCCWa8I/s320/blogParams-4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Have fun!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-pedro&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1773655811533304489?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1773655811533304489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/multiple-parameters-in-cdf-cde.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1773655811533304489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1773655811533304489'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/multiple-parameters-in-cdf-cde.html' title='Multiple parameters in CDF / CDE'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-9119GzXGkgg/TxajPzaEOPI/AAAAAAAAAUQ/784brXq3p-0/s72-c/blogParams-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-9098553546453680857</id><published>2012-01-11T13:08:00.000Z</published><updated>2012-01-11T13:08:19.712Z</updated><title type='text'>[RFC] CDC - Community Distributed Cache</title><content type='html'>Time to discuss a new member for the CTools:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;CDC - Community Distributed Cache&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt;Objective&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="internal-source-marker_0.6904311164665761" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;CDC is a new plugin to allow usage of a distributed cache engine implemented using &lt;a href="http://www.hazelcast.com/" target="_blank"&gt;Hazelcast&lt;/a&gt; in two distinct scenarios:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;1. Mondrian Cache&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;2. CDA Cache&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="internal-source-marker_0.6904311164665761" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Regarding the Mondrian Cache, the plugin should allow toggling between Hazelcast and the default Mondrian cache. This is achieved by changing the properties file for mondrian &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="internal-source-marker_0.6904311164665761" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="internal-source-marker_0.6904311164665761" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;As for the CDA cache, the plugin should also allow changing from Hazelcast to the existing cache provider and vice versa.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Plugin should provide an easy to use way to install an Hazelcast node in a standalone machine, enabling it to join the cache cluster. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Besides the backend functionality, the plugin must have an user interface (can be a cde dashboard, for instance) that allows:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;1.Toggling between cache providers both for &amp;nbsp;Mondrian and for CDA&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;2. Checking cache status (Running or not running / How many elements are cached)&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;3. Change cache strategy and parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;4. Graphically view cluster composition (how many hazelcast nodes and where they are) and related information (percentage memory used, number of cached elements in each node - we need to check what is exposed by Hazelcast)&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;5. Cache cleaning operation.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;6. View cached information - Ability to see cached key/values and ability to search by key (again, check what Hazelcast provides for this kind of operations).&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;A way to clean individual cache blocks in Mondrian is also needed. By this we mean that we should be able to easily clean the cache entries related to a given cube or query. This should also be supported by a gui that enables drilling down on the cubes metadata.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;This funcionality can either be developed as part of the Community Distributed Cache or as a standalone plugin.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;---------&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;This is what we have in plan - Any comments, features, requests?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-9098553546453680857?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/9098553546453680857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/rfc-cdc-community-distributed-cache.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/9098553546453680857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/9098553546453680857'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2012/01/rfc-cdc-community-distributed-cache.html' title='[RFC] CDC - Community Distributed Cache'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7402484370938272651</id><published>2011-12-15T00:41:00.000Z</published><updated>2011-12-15T01:15:15.904Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='saiku'/><category scheme='http://www.blogger.com/atom/ns#' term='pentaho'/><category scheme='http://www.blogger.com/atom/ns#' term='ctools'/><title type='text'>Back to basics: Step by step Pentaho + Ctools installation</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vHJuivN-DqM/TulJs4U84zI/AAAAAAAAAUA/4c0knxVkklc/s1600/backtobasics.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="94" width="320" src="http://3.bp.blogspot.com/-vHJuivN-DqM/TulJs4U84zI/AAAAAAAAAUA/4c0knxVkklc/s320/backtobasics.png" /&gt;&lt;/a&gt;&lt;/div&gt;Let's get back to the basics. This entry is a step by step tutorial on how to install http://www.pentaho.com/, the &lt;a href="http://ctools.webdetails.org/"&gt;Ctools&lt;/a&gt; and &lt;a href="http://analytical-labs.com/"&gt;Saiku&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pentaho:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download Pentaho Server from &lt;a href="http://sourceforge.net/projects/pentaho/files/Business%20Intelligence%20Server/3.10.0-stable/" target="_blank"&gt;sourceforge&lt;/a&gt;. Choose zip or tar.gz according to preferences&lt;/li&gt;&lt;li&gt;Create a folder "pentahoServer" and decompress the downloaded package&lt;br /&gt;inside it&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Ctools and Saiku:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download &lt;a href="https://github.com/pmalves/ctools-installer" target="_blank"&gt;CTools installer&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Run 'ctools-installer.sh. It will display the usage, but you'll probably want to do something like: &lt;i&gt;./ctools-installer.sh -s pentahoServer/biserver-ce/pentaho-solutions -w pentahoServer/biserver-ce/tomcat/webapps/pentaho&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Choose the packages you want to install. Try them all for some kick ass software ;)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Start it:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run 'start-pentaho.sh',under biserver-ce. Pentaho's up and running&lt;/li&gt;&lt;li&gt;Go to &lt;i&gt;http://127.0.0.1:8080/pentaho&lt;/i&gt; (or whatever server you installed it in) and login with almighty joe/password&lt;/li&gt;&lt;li&gt;Have fun!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;Note&lt;/i&gt;: Ctools-installer is a bash script that work on *nix/mac out of the box. &lt;a href="http://codeissue.com/articles/a04e87158bb8552/pentaho-bi-ctools-cdf-cda-cde-saiku-analytics-etc-using-cygwin" target="_blank"&gt;This tutorial&lt;/a&gt; teaches you how to run it on windows through &lt;a href="http://www.cygwin.com/" target="_blank"&gt;cygwin &lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7402484370938272651?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7402484370938272651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/12/back-to-basics-step-by-step-pentaho.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7402484370938272651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7402484370938272651'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/12/back-to-basics-step-by-step-pentaho.html' title='Back to basics: Step by step Pentaho + Ctools installation'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-vHJuivN-DqM/TulJs4U84zI/AAAAAAAAAUA/4c0knxVkklc/s72-c/backtobasics.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8124772110332573715</id><published>2011-12-12T16:05:00.000Z</published><updated>2011-12-12T16:05:35.060Z</updated><title type='text'>Substance AND Style</title><content type='html'>Just read the title of an interview from &lt;a href="http://blog.pentaho.com/tag/quentin-gallivan/" target="_blank"&gt;Quentin Gallivan &lt;/a&gt;titled &lt;a href="http://bi.cbronline.com/news/bi-visualisation-is-just-eye-candy-pentaho-121211" target="_blank"&gt;&lt;i&gt;BI visualization is just eye-candy&lt;/i&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No need to say I couldn't disagree more. After reading the actual interview I understand that the statement has to be read in the context of previous declarations by Christian Chabot, CEO and co-founder of Tableau Software when he said that visualization is key when &lt;a href="http://bi.cbronline.com/news/tableau-software-optimises-its-free-data-visualisation-software-for-ipad-020811"&gt;presenting data to an end-user&lt;/a&gt;. But it's still a very very wrong headline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While reading this two articles, there are some situations where I could almost directly quote Tableau or QlikTech's words. But I work only with Pentaho, so what's the catch? A few things, actually. &lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;Self Service BI is a Myth&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;No matter what vendors try to tell you, this is a myth. For the simple reason that BI is a very vague word. You can definitely have "self service analysis" on a well defined datawarehouse, "self service reporting" on a predefined metadata model, even go a bit further ahead on a vertical market scenario but jumping to the generic terms is wrong.&amp;nbsp; And this is pretty obvious to anyone that actually worked on implementing a real BI project.&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;You can't streamline good Visualization&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;Both Tableau and QlikView have great features in terms of usability. It's easy to work with, and you can do some interesting things with it. But on it's own it does nothing, and you can't just give users a bunch of dials, bullet charts, maps, 3d charts and call the result "good visualization".&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;It's all about the consumer&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;This is the million dollar question. Who's gonna use it? I divide BI "consumers" in two categories:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Analysts &lt;/li&gt;&lt;li&gt;End users (CEOs, CFOs, operational users, everyone else except the first bullet)&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;In my opinion and experience, most BI tools focus on the first bullet, and it's the second part that needs more love and attention. It's extremely hard to make sure users &lt;b&gt;understand&lt;/b&gt; what they are seeing, and sometimes more options than one simple dropdown and one single table is too much. Because everything depends on the scenario and on the users that will consume the information. Those users never heard of Kimball, of dimensions, members, etc, and they don't have to. They need to know their business. Period. Analysts are pretty experienced users. In this cases visualization comes second to liberty to analyze the data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;It's all about the implementation&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;No tool does anything without a full blown implementation. This is what makes a BI project expensive. And in order to do a good implementation (substance and style) we need &lt;b&gt;flexibility&lt;/b&gt; to do what the customer asks - and he'll ask for *a lot*. And this is why we're working with Pentaho over anything else. It's&amp;nbsp; an amazing &lt;b&gt;platform&lt;/b&gt;- great to see Quentin's not changing that strategy - on top of what we were able to develop the Ctools and, so far, we've been able to fulfill nearly all the requirements customers asked us. And in terms of final product and visualization, when you compare one implementation done with &lt;i&gt;insert BI tool here&lt;/i&gt;, well.... see for yourself ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="05c7ed61-96e7-3949-cf2a-94a9bc0bf981" style="height: 263px; width: 420px;"&gt;&lt;param name="movie" value="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf?mode=mini&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111103213425-ab7bf9ed7d7a437aa70ddf4b135d4807" /&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="menu" value="false"/&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" wmode="transparent" style="width:420px;height:263px" flashvars="mode=mini&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111103213425-ab7bf9ed7d7a437aa70ddf4b135d4807" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="text-align: left; width: 420px;"&gt;&lt;a href="http://issuu.com/webdetails/docs/wd_work?mode=window&amp;amp;backgroundColor=%23222222" target="_blank"&gt;Open publication&lt;/a&gt; - Free &lt;a href="http://issuu.com/" target="_blank"&gt;publishing&lt;/a&gt; - &lt;a href="http://issuu.com/search?q=ctools" target="_blank"&gt;More ctools&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8124772110332573715?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8124772110332573715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/12/substance-and-style.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8124772110332573715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8124772110332573715'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/12/substance-and-style.html' title='Substance AND Style'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5172344580607397014</id><published>2011-12-07T11:17:00.001Z</published><updated>2011-12-13T16:45:52.319Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cdf'/><category scheme='http://www.blogger.com/atom/ns#' term='cde'/><category scheme='http://www.blogger.com/atom/ns#' term='pentaho'/><category scheme='http://www.blogger.com/atom/ns#' term='ctools'/><title type='text'>Introducing Add-Ins in CTools</title><content type='html'>We just added Add-Ins support in CDF / CDE. This will have a great impact in both the development of the ctools but also in the usage&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="WDheader clearfix " id="Title"&gt;&lt;b&gt;&lt;span style="font-size: 18px;"&gt;AddIns reference&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="WDheader clearfix " id="Title"&gt;&lt;span style="font-size: 18px;"&gt;&amp;nbsp;&lt;/span&gt;    &lt;/div&gt;AddIns are CDF's extension points. Can be used in any component to be able to fine-controlthat component and extend it in a very simple way&lt;br /&gt;The use case for this concept is TableComponent's colType. Tables are a fundamental piece of dashboards / visualizations and there needs to be simple ways to extend the ways they are rendered&lt;br /&gt;&lt;div class="WDh2"&gt;AddIn Implementation&lt;/div&gt;In order to implement an AddIn, you need to create an object like the following:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;  var sparkline = {&lt;br /&gt;    name: "sparkline",&lt;br /&gt;    label: "Sparkline",&lt;br /&gt;    defaults: {&lt;br /&gt;      type: 'line'&lt;br /&gt;    },&lt;br /&gt;    init: function(){&lt;br /&gt;&lt;br /&gt;      // Register this for datatables sort&lt;br /&gt;      var myself = this;&lt;br /&gt;      $.fn.dataTableExt.oSort[this.name+'-asc'] = function(a,b){&lt;br /&gt;        return myself.sort(a,b)&lt;br /&gt;      };&lt;br /&gt;      $.fn.dataTableExt.oSort[this.name+'-desc'] = function(a,b){&lt;br /&gt;        return myself.sort(b,a)&lt;br /&gt;      };&lt;br /&gt;        &lt;br /&gt;    },&lt;br /&gt;    &lt;br /&gt;    sort: function(a,b){&lt;br /&gt;      return this.sumStrArray(a) - this.sumStrArray(b);&lt;br /&gt;    },&lt;br /&gt;    &lt;br /&gt;    sumStrArray: function(arr){&lt;br /&gt;      return arr.split(',').reduce(function(prev, curr, index, array){  &lt;br /&gt;        console.log("Current " + curr +"; prev " +  prev); &lt;br /&gt;        return parseFloat(curr) + (typeof(prev)==='number'?prev:parseFloat(prev));&lt;br /&gt;      });&lt;br /&gt;    },&lt;br /&gt;    implementation: function (tgt, st, opt) {&lt;br /&gt;      var t = $(tgt);&lt;br /&gt;      t.sparkline(st.value.split(/,/),opt);&lt;br /&gt;      t.removeClass("sparkline");&lt;br /&gt;    }&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;Dashboards.registerAddIn("Table", "colType", new AddIn(sparkline));&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;i&gt;name&lt;/i&gt;, &lt;i&gt;label&lt;/i&gt;, &lt;i&gt;defaults&lt;/i&gt;, &lt;i&gt;init&lt;/i&gt; and &lt;i&gt;implementation&lt;/i&gt; are the important bitshere. This specific code is an implementation of a sparkline using the jquery plugin.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="WDh2"&gt;&lt;b&gt;Setting options&lt;/b&gt;&lt;/div&gt;&lt;div class="WDh2"&gt;&lt;/div&gt;Options are passed on a per component basis, usually in the component's preExecution function.It can either be a static list of options that will be merged with the defaults or a functionwhere the options change according to the state&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;function f(){&lt;br /&gt; &lt;br /&gt;    // Option 1 :Static list&lt;br /&gt;&lt;br /&gt;    this.setAddInOptions("colType","sparkline",{barColor: "red"});&lt;br /&gt; &lt;br /&gt;    // option 2: function&lt;br /&gt;    this.setAddInOptions("colType","sparkline",function(state){&lt;br /&gt;        // Let's turn the second sparkline into a bar&lt;br /&gt;        if(state.colIdx == "2"){&lt;br /&gt;            return { type:'bar'};&lt;br /&gt;        }&lt;br /&gt;    });&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="WDh2"&gt;&lt;/div&gt;&lt;div class="WDh2"&gt;&lt;b&gt;Setting defaults&lt;/b&gt;&lt;/div&gt;&lt;div class="WDh2"&gt;&lt;/div&gt;It's also possible to ser a site-wide / dashboard wide defaults, and like the previousoption, can either be a static list or a function&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Dashboards.setAddInDefaults("Table","colType","sparkline",{fillColor:"#aaa"});&lt;br /&gt;&lt;br /&gt;Dashboards.setAddInDefaults("Table","colType","sparkline",function(state){ &lt;br /&gt;    return state.rowIdx%2?{fillColor:"#aaa"}:{fillColor:"#fff"};&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="WDh2"&gt;&lt;b&gt;Implementation arguments&lt;/b&gt;&lt;/div&gt;&lt;div class="WDh2"&gt;&lt;/div&gt;&lt;i&gt;implementation&lt;/i&gt; function has the following arguments:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;    implementation: function (tgt, st, opt) {}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;dl&gt;&lt;dt&gt;tgt&lt;/dt&gt;&lt;dd&gt;target - Target for the action. eg: On a cellType, it will be the td cell         &lt;/dd&gt;&lt;dt&gt;state&lt;/dt&gt;&lt;dd&gt;state - Information about the specific addin call. On a cellType will be an object    with: &lt;i&gt;{rawData, tableData, colIdx, rowIdx, series, category, value, colFormat}&lt;/i&gt;     &lt;/dd&gt;&lt;dt&gt;opt&lt;/dt&gt;&lt;dd&gt;options passed to this addIn    &lt;/dd&gt;&lt;/dl&gt;&lt;div class="WDh2"&gt;&lt;/div&gt;&lt;div class="WDh2"&gt;&lt;b&gt;Calling AddIns from components&lt;/b&gt;&lt;/div&gt;&lt;div class="WDh2"&gt;&lt;/div&gt;When developing a component, it's very easy to define a new AddIn type. Here's the examplethat TableComponent uses:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;    var addIn = myself.getAddIn("colType",colType);&lt;br /&gt;    addIn.call(td,state,myself.getAddInOptions("colType",addIn.getName()));&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;From this point on, there will be a new &lt;i&gt;colType&lt;/i&gt; available to register.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;b&gt;Implemented AddIns:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sparkline&lt;/li&gt;&lt;li&gt; pvSparkline&lt;/li&gt;&lt;li&gt;dataBar&lt;/li&gt;&lt;li&gt;trendArrow&lt;/li&gt;&lt;li&gt;hyperlink&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Here's some screenshots for the implemented addins. More details under cde_samples in the solution repository after installing ctools:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Okz-6Y3o2Ko/TuI4P_CHCbI/AAAAAAAAAT0/IHP-jq9oF_w/s1600/addins.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://2.bp.blogspot.com/-Okz-6Y3o2Ko/TuI4P_CHCbI/AAAAAAAAAT0/IHP-jq9oF_w/s400/addins.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; All credits to &lt;a href="http://twitter.com/#%21/usbrandon" target="_blank"&gt;Brandon Jackson&lt;/a&gt; for sponsoring this huge develpment!&amp;nbsp; /bow!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5172344580607397014?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5172344580607397014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/12/introducing-add-ins-in-ctools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5172344580607397014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5172344580607397014'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/12/introducing-add-ins-in-ctools.html' title='Introducing Add-Ins in CTools'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Okz-6Y3o2Ko/TuI4P_CHCbI/AAAAAAAAAT0/IHP-jq9oF_w/s72-c/addins.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7693565979912729128</id><published>2011-11-29T00:16:00.001Z</published><updated>2011-11-29T00:23:02.468Z</updated><title type='text'>CDA v11.11.23 available</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-KJ0LHlCYPJ4/TtQkkZrWHQI/AAAAAAAAATs/0qos3sERunQ/s1600/cda-installer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-KJ0LHlCYPJ4/TtQkkZrWHQI/AAAAAAAAATs/0qos3sERunQ/s320/cda-installer.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Huge milestone. As promised, CDA v11.11.23 was released. You can download it from &lt;a href="http://cda.webdetails.org/"&gt;http://cda.webdetails.org/&lt;/a&gt;. The first of many, features an easy to use installer that will work on any operating system.&lt;br /&gt;&lt;br /&gt;Works with any version of pentaho, form 3.6 to 4.1.&lt;br /&gt;&lt;br /&gt;On a related note, the &lt;a href="http://pedroalves-bi.blogspot.com/2011/06/ctools-installer-making-things-fast.html" target="_blank"&gt;ctools-installer&lt;/a&gt; script was also updated. Version 1.9 now adds the support for a flag (-b) that allows selecting the branch you want to install, either &lt;i&gt;dev&lt;/i&gt; or &lt;i&gt;stable&lt;/i&gt;. Currently, choosing stable will only affect CDA, where this latest version will be installed, but as new versions of the other plugins are released you can switch from bleeding edge to a more stable / tested version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun, this is the first of the rapid release cycle of the CTools!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7693565979912729128?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7693565979912729128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/cda-v111123-available.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7693565979912729128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7693565979912729128'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/cda-v111123-available.html' title='CDA v11.11.23 available'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-KJ0LHlCYPJ4/TtQkkZrWHQI/AAAAAAAAATs/0qos3sERunQ/s72-c/cda-installer.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8546512707264042818</id><published>2011-11-21T19:04:00.001Z</published><updated>2011-11-21T19:37:36.488Z</updated><title type='text'>CTools - Rapid release cycle</title><content type='html'>The &lt;a href="http://ctools.webdetails.org/" target="_blank"&gt;Ctools&lt;/a&gt; are great. There's no doubt about it. But our release handling has been... hum... "lacking", to be very polite about it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's absolutely unacceptable to have the latest released version of CDE to be 1.0RC3 for over 6 months now, CDA on 1.0 and having everyone relying on &lt;a href="http://ci.analytical-labs.com/view/Webdetails/" target="_blank"&gt;CI builds&lt;/a&gt; and tools like the &lt;a href="http://pedroalves-bi.blogspot.com/2011/06/ctools-installer-making-things-fast.html" target="_blank"&gt;ctools-installer&lt;/a&gt; running trunk. We know that, and I apologize.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webdetails.pt/" target="_blank"&gt;Webdetails&lt;/a&gt; is a services company, so all the work we do into productizing ctools mostly comes out of our own sweat and blood, thus ending in the situation where we are now. But we're way past the time where this is manageable and all the tools grew into such proportion, both in quality and user base, that we need to drastically change this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We're now moving into a rapid release cycle. Our goal is to start with releases every 3 weeks&amp;nbsp; and adjust that with time if necessary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And we'll start one step at a time. Scheduled to this Wednesday is a stable release of &lt;a href="http://cda.webdetails.org/" target="_blank"&gt;CDA&lt;/a&gt;. As the release cycle moves on we'll add the other plugins.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We'll also change the way we handle version numbering. Since they're mostly useless anyway (and our marketing team said they didn't&amp;nbsp; particularly care about them ;)&amp;nbsp; ) we'll now move to a different style. Let's just say the next version will be &lt;i&gt;CDA v11.11.23&lt;/i&gt; . And&amp;nbsp; I'll let you guess the pattern ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cheers&lt;br /&gt;&lt;br /&gt;-pedro&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8546512707264042818?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8546512707264042818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/ctools-rapid-release-cycle.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8546512707264042818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8546512707264042818'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/ctools-rapid-release-cycle.html' title='CTools - Rapid release cycle'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1646686847064750136</id><published>2011-11-18T06:03:00.001Z</published><updated>2011-11-18T06:06:28.901Z</updated><title type='text'>CTools moved to GitHub</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-edqWuC_M-ow/TsX1UKufWaI/AAAAAAAAATg/w6rjJsDIw_o/s1600/github.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://2.bp.blogspot.com/-edqWuC_M-ow/TsX1UKufWaI/AAAAAAAAATg/w6rjJsDIw_o/s400/github.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;We're cleaning out the place. All the Ctools can now be found at &lt;a href="https://github.com/webdetails" target="_blank"&gt;github, webdetails organization&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some moved from googlecode (CDF, CDA) while most of them moved from different owners, but if you got an error pulling from the source, don't worry, we didn't run away, just moved to a new home&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1646686847064750136?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1646686847064750136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/ctools-moved-to-github.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1646686847064750136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1646686847064750136'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/ctools-moved-to-github.html' title='CTools moved to GitHub'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-edqWuC_M-ow/TsX1UKufWaI/AAAAAAAAATg/w6rjJsDIw_o/s72-c/github.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5720366219759587917</id><published>2011-11-07T11:14:00.003Z</published><updated>2011-11-07T12:50:52.339Z</updated><title type='text'>CTools Training: Brasil</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="308" src="http://1.bp.blogspot.com/-WgqkY1M9FU8/TrezwuG4RaI/AAAAAAAAATU/6ThkqjplgL4/s320/brSticker.png" width="320" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;There's no typo in the title. Brazil, in Portuguese, is spelled 'Brasil'. And December's training session will be in &lt;b&gt;Brasília, Brasil, 13-15 de Dezembro&lt;/b&gt; (which means 13-15 December, but if you didn't figure that yet it won't probably matter, as this one will be in Portuguese).&lt;br /&gt;&lt;br /&gt;You can check the training headlines &lt;a href="http://issuu.com/webdetails/docs/ctoolsbrasilia?mode=window&amp;amp;viewMode=doublePage" target="_blank"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This will be organized by our friends at &lt;a href="http://www.it4biz.com.br/" target="_blank"&gt;it4biz&lt;/a&gt;, and for more informations check &lt;a href="http://blog.professorcoruja.com/2011/10/pre-inscricao-curso-c-tools-com-pedro.html" target="_blank"&gt;Caio Souza's blog entry &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Até breve&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5720366219759587917?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5720366219759587917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/ctools-training-brasil.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5720366219759587917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5720366219759587917'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/11/ctools-training-brasil.html' title='CTools Training: Brasil'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-WgqkY1M9FU8/TrezwuG4RaI/AAAAAAAAATU/6ThkqjplgL4/s72-c/brSticker.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6285541732579798597</id><published>2011-10-20T01:45:00.002+01:00</published><updated>2011-10-20T23:09:10.814+01:00</updated><title type='text'>CTools training: Australia</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-w8NDfjOK0EQ/Tp9uOMlRAeI/AAAAAAAAASk/_80r7LY7uTc/s1600/visit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-w8NDfjOK0EQ/Tp9uOMlRAeI/AAAAAAAAASk/_80r7LY7uTc/s320/visit.png" width="190" /&gt;&lt;/a&gt;&lt;/div&gt;Next in the Ctools world tour: &lt;b&gt;Sydney, Australia, 16-18 November&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Our friends at &lt;a href="http://www.bizcubed.com.au/"&gt;Bizcubed&lt;/a&gt; invited us for some amazing steaks, and we're obviously going. In exchange, we just need to give a Ctools training!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.regonline.com.au/builder/site/Default.aspx?EventID=1018637"&gt;Register here&lt;/a&gt; and C you there!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6285541732579798597?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6285541732579798597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/10/ctools-training-australia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6285541732579798597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6285541732579798597'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/10/ctools-training-australia.html' title='CTools training: Australia'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-w8NDfjOK0EQ/Tp9uOMlRAeI/AAAAAAAAASk/_80r7LY7uTc/s72-c/visit.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1366607149028434054</id><published>2011-10-14T02:58:00.000+01:00</published><updated>2011-10-14T17:09:21.463+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ccc'/><category scheme='http://www.blogger.com/atom/ns#' term='ctools'/><title type='text'>Multidimensional support in CCC</title><content type='html'>It's time to improve &lt;a href="http://ccc.webdetails.org/"&gt;CCC&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Currently, CCC data engine uses a resultset composed of an array of series, one array of categories and an array of values. Internally, in the &lt;a href="https://github.com/pmalves/ccc/blob/master/src/pvc/pvcData.js"&gt;DataTranslator  class&lt;/a&gt; we store one array where the first line has the series, the first column has the categories and the content is the values:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sE_BNagepoo/TpeMECu_5RI/AAAAAAAAAR0/BsEL6CjcBPU/s1600/ccc-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://2.bp.blogspot.com/-sE_BNagepoo/TpeMECu_5RI/AAAAAAAAAR0/BsEL6CjcBPU/s320/ccc-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;One of the biggest advantages of CCC is the way it automagically integrates with the other &lt;a href="http://ctools.webdetails.org/"&gt;Ctools&lt;/a&gt;&lt;a href="http://cde.webdetails.org/"&gt;&lt;/a&gt;. A user defines his datasource, connects it to a chart, and &lt;i&gt;voilá&lt;/i&gt;, he has a chart. In order to achieve that, &lt;a href="http://www.webdetails.pt/"&gt;we&lt;/a&gt; had to implement specific translators that can map the specific datasources to this inner structure. We need 2: a relational translator, for sql queries, and a crosstabl translator, for mdx-style format.&lt;br /&gt;&lt;br /&gt;This is how the data from a relational datasource is mapped to the internal CCC structure, when we do a query like:&lt;br /&gt;&lt;blockquote&gt;select series, category, sum(value) from foo group by series, category&lt;/blockquote&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-pniSQs2d8rY/TpeMEpVs05I/AAAAAAAAAR8/VaZ5MinIsQI/s1600/ccc-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/-pniSQs2d8rY/TpeMEpVs05I/AAAAAAAAAR8/VaZ5MinIsQI/s320/ccc-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This directly applies to SQL queries. They're all like this. The other distinct format of inputting data is through a CrosstabTranslator. This is mostly used with mondrian queries or other pivot-like structures. Example query:&lt;br /&gt;&lt;blockquote&gt;select {[Series].children} on COLUMNS,&amp;nbsp; {[Categories].children} on ROWS where [Measures].[Values]&lt;/blockquote&gt;This will be mapped to our internal structure almost directly: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-aAENPtF1S_M/TpeMFeIitLI/AAAAAAAAASE/0wyy0S9HnN0/s1600/ccc-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://3.bp.blogspot.com/-aAENPtF1S_M/TpeMFeIitLI/AAAAAAAAASE/0wyy0S9HnN0/s320/ccc-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;This is what we currently support. It's enough for almost all the charts we support in CCC. Bar, line, pie, etc. For other, this isn't exactly applicable but we found a way to reuse this structure (eg: bullet charts)&lt;br /&gt;&lt;br /&gt;But this is not enough for more complex visualization. Imagine you want to have a heatgrid but instead of having only different cell colors you also want different box sizes. Or imagine that instead of having only one category (eg: countries) we have 2, countries and years.&lt;br /&gt;&lt;br /&gt;The following is our "RFI" to fix this: We'll implement a &lt;b&gt;multiVal&lt;/b&gt; mode that will maintain the same tabular approach to the internal CCC structure but instead of supporting single values, on each cell an array of values will be supported&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wlgfKTVAnMU/TpeMGE1q-QI/AAAAAAAAASM/KCSVU_w09zA/s1600/ccc-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-wlgfKTVAnMU/TpeMGE1q-QI/AAAAAAAAASM/KCSVU_w09zA/s320/ccc-4.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The regular cases will contain arrays of dimention one, and backward compatibility will be ensured by having the old values array to be a flatten representation of this new structure but holding only one value - the last index for the categories and series and the first for the values.&lt;br /&gt;&lt;br /&gt;How does this work on a real scenario? Our sql query will be a bit different:&lt;br /&gt;&lt;blockquote&gt;select s1, .., sN, c1.. cM, sum(v1) .. sum(vK) from X group by s1.. sN, c1.. cM&lt;/blockquote&gt;This is the mapping that will be done:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-hvMbepqDDtY/TpeMG2nbInI/AAAAAAAAASU/y2D-8vHS6bs/s1600/ccc-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://1.bp.blogspot.com/-hvMbepqDDtY/TpeMG2nbInI/AAAAAAAAASU/y2D-8vHS6bs/s320/ccc-5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;On the crosstab translator, the query will be different too, a very standard operation in analyzer:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;select {C1} * {C2} * {M} on COLUMNS,&amp;nbsp; {S1} * {S2} on ROWS where [Measures].[Values]&lt;/blockquote&gt;(we have to decide where we want the measures to appear. Either we stick them on the rows or allow them to be on the cols too, really haven't thought about that long enough)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8AGTPMXtdKY/TpeMJCNQcLI/AAAAAAAAASc/xUidikJ4yhY/s1600/ccc-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-8AGTPMXtdKY/TpeMJCNQcLI/AAAAAAAAASc/xUidikJ4yhY/s320/ccc-6.png" width="270" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Once this support is implemented in the backend, 50% of the problem is fixed: The data is there, available to use.&lt;br /&gt;&lt;br /&gt;Now new charts can (and should) be implemented using the new multiVar mode when it makes sense. Having 1 series / category / value ends up being only a particular case of the generic support.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;New methods will have to be implemented on the DataEngine too. We now have getSeries() and getCategories() (and all it's variants) , that were enough till now. We'll need to new methods here: getMultiSeries() and getMultiCategories(), both returning arrays, and specific methods for when passing&amp;nbsp; a levelIndex, eg:&amp;nbsp; getMultiSeriesForLevel(levelIdx)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Feedback is welcomed. This will impact the way scales and labels are generated, along with other things that I'm not yet able to foresee, but one thing at a time &lt;br /&gt;&lt;br /&gt;&amp;nbsp;This should really extend CCC's ability to generate new visualizations never losing one of the main goals - it has to be dead easy (and fast) to integrate with our data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1366607149028434054?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1366607149028434054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/10/multidimensional-support-in-ccc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1366607149028434054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1366607149028434054'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/10/multidimensional-support-in-ccc.html' title='Multidimensional support in CCC'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-sE_BNagepoo/TpeMECu_5RI/AAAAAAAAAR0/BsEL6CjcBPU/s72-c/ccc-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3976332889340361200</id><published>2011-10-10T13:11:00.008+01:00</published><updated>2011-10-10T16:26:11.509+01:00</updated><title type='text'>Pentaho Ctools versioning with GIT</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-lDoVUG3Xaec/TpMMcsKNr8I/AAAAAAAAARw/_FBgymg_zjw/s1600/columbus_egg.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 264px;" src="http://1.bp.blogspot.com/-lDoVUG3Xaec/TpMMcsKNr8I/AAAAAAAAARw/_FBgymg_zjw/s320/columbus_egg.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5661882843564715970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webdetails.pt"&gt;We&lt;/a&gt; have a few pentaho projects where we are involved all the way from data to UI. &lt;a href="http://www.mozilla.org"&gt;Mozilla&lt;/a&gt; is one of those cases. Controlling all aspects of the projects makes it easier to manage different version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But we also have a lot of projects where we work in collaboration with our customers, us developing all the UX and dashboard layer and them converting the data access layer (the &lt;a href="http://cda.webdetails.org/"&gt;CDA&lt;/a&gt; part). On this cases, it gets a bit more complicated to manage the changes we do on the dummy data scenario with the real data implementation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cees van Kemenade, from &lt;a href="http://www.vinzi.nl/"&gt;Vinzi&lt;/a&gt;,  is &lt;a href="http://kjube.blogspot.com/2011/09/pentaho-community-gathering-live.html"&gt;working on a tool&lt;/a&gt; to tightly integrate version management and some other amazing features that will put this issue to history, but in the meanwhile we'll try to solve this using a standard tool: GIT &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-gnRN4c3-Yak/TpMHYWAIZYI/AAAAAAAAARo/GWOqVz8Qsnw/s1600/git-structure.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 72px;" src="http://3.bp.blogspot.com/-gnRN4c3-Yak/TpMHYWAIZYI/AAAAAAAAARo/GWOqVz8Qsnw/s320/git-structure.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5661877271339230594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The idea is to create a GIT repository for the project. While we work on the master branch, all client's commits will go to the  "real" branch. From that point on, we'll keep working on the master and the client works on the real, merging all the subsequent versions from that point on. Any specific bugs the client fixes, we can cherry-pick back to the master branch.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While this is nothing groundbreaking, can really save days / weeks of development just by using technologies that we already use on other contexts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3976332889340361200?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3976332889340361200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/10/we-have-few-pentaho-projects-where-we.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3976332889340361200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3976332889340361200'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/10/we-have-few-pentaho-projects-where-we.html' title='Pentaho Ctools versioning with GIT'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-lDoVUG3Xaec/TpMMcsKNr8I/AAAAAAAAARw/_FBgymg_zjw/s72-c/columbus_egg.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2119185872251111667</id><published>2011-09-20T22:48:00.009+01:00</published><updated>2011-09-20T23:34:43.090+01:00</updated><title type='text'>Dashboardland - new Ctools sample</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-SsBtQ8Y4A_w/TnkSyj9RlbI/AAAAAAAAARg/FSl-7pY05xQ/s1600/dashboardland.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://3.bp.blogspot.com/-SsBtQ8Y4A_w/TnkSyj9RlbI/AAAAAAAAARg/FSl-7pY05xQ/s320/dashboardland.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5654571466995373490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the result of the recent Orlando training. It's one of the most advanced dashboards we built for training sessions, tons of customizations from tables, selectors, nested parameters, etc, in a very serious tone *not*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I particularly don't trust this survey. But I'm a Goofy fan!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once again, all dashboards done using the Ctools and pentaho. Check the sample &lt;a href="http://www.webdetails.pt/pentaho/content/pentaho-cdf-dd/Render?solution=PublicDemo&amp;path=%2FDashboardland&amp;file=Dashboardland.wcdf"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See you in a few days in Rome for the &lt;a href="http://wiki.pentaho.com/display/COM/Pentaho+Community+Gathering+-+Rome+%28Frascati%29+2011"&gt;Pentaho Community Meeting&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2119185872251111667?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2119185872251111667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/09/dashboardland-new-ctools-sample.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2119185872251111667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2119185872251111667'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/09/dashboardland-new-ctools-sample.html' title='Dashboardland - new Ctools sample'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-SsBtQ8Y4A_w/TnkSyj9RlbI/AAAAAAAAARg/FSl-7pY05xQ/s72-c/dashboardland.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4041209371658239426</id><published>2011-08-26T22:23:00.002+01:00</published><updated>2011-08-26T22:28:16.981+01:00</updated><title type='text'>Kimball is getting old</title><content type='html'>For a long time, BI almost appeared to stay immune to changes. Applications got better, breakthroughs here and there, but roughly same players, same strategy, same approach.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2 visionaries were on the foundation of what I call now "Classical BI" - Kimball and Inmon. They taught us what a datawarehouse is. And damn, they were right about it. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've been working with BI for a few years now. A couple of years back, I'd probably have written that I was working with "opensource BI". It was, by itself, a differentiating factor. It still makes a difference to me: means I'll be able to hack around it, I won't be trapped in a code I can't access to, and will ultimately allow me to do my job better.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But I don't say that anymore. It's irrelevant. Fortunately the market is starting to realize that the fact that opensource isn't a benefit by itself. It will have a more affordable entry point but in the end the only thing that matters is if what's implemented allow users to make correct decisions based on the information taken from the BI system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My passion is the visualization layer of BI. Usually known as dashboards, I think of them as much more than that, as the main interface between users and *their* data, and more than numbers they need to transmit an emotion, create a bond. It's not enough if the numbers are right, there has to be more than that. The user must feel comfortable using it, has to enjoy it. It's all about User eXperience. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The immediate conclusion is that users couldn't care less about where the data comes from. We don't need datawarehouses anymore. We need *whatever* allows us to provide that rich experience. And sometimes the classic datawarehouses are not the best approach.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Exciting times for IT. Lot of buzzwords. Lots of new technology. New ways of accessing information. All the hype about SQL vs noSQL and the bigdata movement. For me there's one clear winner: All of us. We now have more tools available to choose the right one for the job.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Don't just settle for getting the numbers right. Also try to get a smile from your user.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4041209371658239426?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4041209371658239426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/08/kimball-is-getting-old.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4041209371658239426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4041209371658239426'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/08/kimball-is-getting-old.html' title='Kimball is getting old'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3131868944106185194</id><published>2011-08-02T10:28:00.005+01:00</published><updated>2011-08-02T10:56:49.511+01:00</updated><title type='text'>5 days, 5 dashboards, 5 websites - 5/5</title><content type='html'>Day 5, mission accomplished!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dashboard 5: Product Demo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-3YG76YGjY3g/TjfJrM5YK2I/AAAAAAAAARI/EmI9sPB-3nE/s1600/product.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://2.bp.blogspot.com/-3YG76YGjY3g/TjfJrM5YK2I/AAAAAAAAARI/EmI9sPB-3nE/s320/product.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5636195202710907746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is an older proof of concept that we developed a while back. It's not feature complete - you'll notice only the last selector works and it doesn't render properly in older IEs - but it's by far one of the most advanced ones in terms of showcasing all the customization capabilities of the Ctools. And, by the way, we got the project :)&lt;br /&gt;&lt;br /&gt;Try it &lt;a href="http://www.webdetails.pt/pentaho/content/pentaho-cdf-dd/Render?solution=PublicDemo&amp;path=%2FProductDemo&amp;file=ProductDemo.wcdf"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Site 5: &lt;a href="http://cst.webdetails.org"&gt;cst.webdetails.org&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-w6wAxWWbsAY/TjfFMQpgG3I/AAAAAAAAARA/1ExtEyk_dZs/s1600/cst.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 232px;" src="http://3.bp.blogspot.com/-w6wAxWWbsAY/TjfFMQpgG3I/AAAAAAAAARA/1ExtEyk_dZs/s320/cst.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5636190273095605106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CST, Community Startup Tabs, is a great example how community projects should be created. &lt;a href="http://www.antoniusziekenhuis.nl/"&gt;St. Antonius Ziekenhuis&lt;/a&gt; requested us to develop the ability to define and customize the tabs that are visible to users that log in to Pentaho User Console (PUC) and in the end allowed to release that to the community. Bravo!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;And that's it for now. In time, the list of samples will grow, but it's a great start in my opinion and should give everyone a better notion of what can be achieved using the Ctools.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun! (quoting Thomas)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3131868944106185194?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3131868944106185194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/08/5-days-5-dashboards-5-websites-55.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3131868944106185194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3131868944106185194'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/08/5-days-5-dashboards-5-websites-55.html' title='5 days, 5 dashboards, 5 websites - 5/5'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-3YG76YGjY3g/TjfJrM5YK2I/AAAAAAAAARI/EmI9sPB-3nE/s72-c/product.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7375268997665884698</id><published>2011-08-01T10:35:00.004+01:00</published><updated>2011-08-01T11:10:24.423+01:00</updated><title type='text'>5 days, 5 dashboards, 5 websites - 4/5</title><content type='html'>Day 4. You really didn't expect me to work on a weekend, right?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dashboard 4: CDE Demo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-1SaqJtvc5Go/TjZ4egU1n-I/AAAAAAAAAQw/Uw6UkwWmOQs/s1600/cdedemo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 277px;" src="http://4.bp.blogspot.com/-1SaqJtvc5Go/TjZ4egU1n-I/AAAAAAAAAQw/Uw6UkwWmOQs/s320/cdedemo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5635824449169498082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This one is probably familiar if you installed CDE before, as it's included in the main distribution. A very simple example of what can be done in about one hour with the tool. This is not a standard Dashboard, with lots of KPI's, but more of a documentation-oriented approach, which can be very useful. Even though CDE can hardly be placed on the same league as a wiki or any of it's relatives, the truth is that since it's remotely accessible to edition it can definitely be used like that.&lt;br /&gt;&lt;br /&gt;Try it &lt;a href="http://www.webdetails.pt/pentaho/content/pentaho-cdf-dd/Render?solution=PublicDemo&amp;path=%2FCDEDemo&amp;file=CdeDemo.wcdf"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Site 4: &lt;a href="http://cde.webdetails.org"&gt;cde.webdetails.org&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-YC1IXHMWKBI/TjZ6KavivHI/AAAAAAAAAQ4/RXH9HRK5gHk/s1600/cde.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 274px;" src="http://4.bp.blogspot.com/-YC1IXHMWKBI/TjZ6KavivHI/AAAAAAAAAQ4/RXH9HRK5gHk/s320/cde.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5635826303096765554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The crown jewel, CDE was initially started (like most of the others) for the Mozilla project. Starting as a proof of concept, quickly proved to be a boost of productivity. With almost 2 years since it's initial version, is now a mature project with tons of optimizations for both editing and rendering dashboards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7375268997665884698?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7375268997665884698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/08/5-days-5-dashboards-5-websites-45.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7375268997665884698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7375268997665884698'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/08/5-days-5-dashboards-5-websites-45.html' title='5 days, 5 dashboards, 5 websites - 4/5'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-1SaqJtvc5Go/TjZ4egU1n-I/AAAAAAAAAQw/Uw6UkwWmOQs/s72-c/cdedemo.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5171984652824982082</id><published>2011-07-29T12:48:00.004+01:00</published><updated>2011-07-29T13:09:19.018+01:00</updated><title type='text'>5 days, 5 dashboards, 5 websites - 3/5</title><content type='html'>Day 3. Let's get geek!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dashboard 3: Star Wars!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-Muij70ukRgk/TjKeah_QRdI/AAAAAAAAAQg/5vAmo6O_wVw/s1600/tie.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 290px;" src="http://3.bp.blogspot.com/-Muij70ukRgk/TjKeah_QRdI/AAAAAAAAAQg/5vAmo6O_wVw/s320/tie.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5634740262431376850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first time I showed it to the team internally most of them said "There's no such Jedi!" in a very offended way! Bottom line, we did it cause we wanted to! It really shows that BI doesn't always have to be extremely serious and still pass data effectively and with a smile. Try it &lt;a href="http://www.webdetails.pt/pentaho/content/pentaho-cdf-dd/Render?solution=PublicDemo&amp;path=%2FTieDemo&amp;file=TieDemo.wcdf"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Site 3: &lt;a href="http://cbf.webdetails.org"&gt;cbf.webdetails.org&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-1uZw_qG5qus/TjKf2BvdnkI/AAAAAAAAAQo/urSltkrxRv4/s1600/cbf.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 274px;" src="http://2.bp.blogspot.com/-1uZw_qG5qus/TjKf2BvdnkI/AAAAAAAAAQo/urSltkrxRv4/s320/cbf.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5634741834323172930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This was our first project, born over &lt;a href="http://is.gd/6vJmkS"&gt;4 years ago&lt;/a&gt;. And it's still a everyday lifesaver, a must have for any collaborative environment. Like it's siblings &lt;a href="http://cbf.webdetails.org"&gt;it also has a new home&lt;/a&gt;. This project is also in the base of the &lt;a href="http://pentahomusings.blogspot.com/2011/06/quick-update-on-guided-cbf.html"&gt;Guided CBF&lt;/a&gt; project by &lt;a href="http://analytical-labs.com/"&gt;Analytical Labs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5171984652824982082?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5171984652824982082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/5-days-5-dashboards-5-websites-35.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5171984652824982082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5171984652824982082'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/5-days-5-dashboards-5-websites-35.html' title='5 days, 5 dashboards, 5 websites - 3/5'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Muij70ukRgk/TjKeah_QRdI/AAAAAAAAAQg/5vAmo6O_wVw/s72-c/tie.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4623224169938674180</id><published>2011-07-28T13:17:00.004+01:00</published><updated>2011-07-28T13:22:13.599+01:00</updated><title type='text'>5 days, 5 dashboards, 5 websites - 2/5</title><content type='html'>Day 2. Still looking good for the final goal&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dashboard 2: Sync Demo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-fAO8ePvx3iQ/TjFT1eY0kGI/AAAAAAAAAQQ/sWaWeVT3za4/s1600/sync.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 235px;" src="http://1.bp.blogspot.com/-fAO8ePvx3iQ/TjFT1eY0kGI/AAAAAAAAAQQ/sWaWeVT3za4/s320/sync.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5634376786972545122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was made by students of the Ctools training course in Holland. Try it &lt;a href="http://www.webdetails.pt/pentaho/content/pentaho-cdf-dd/Render?solution=PublicDemo&amp;path=%2FSyncDemo1&amp;file=SyncDemo1.wcdf"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Site 2: &lt;a href="http://cda.webdetails.org"&gt;cda.webdetails.org&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-nc2iLa6RKfo/TjFUNtzXr_I/AAAAAAAAAQY/gdJqrNJsvEU/s1600/cda.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 247px;" src="http://1.bp.blogspot.com/-nc2iLa6RKfo/TjFUNtzXr_I/AAAAAAAAAQY/gdJqrNJsvEU/s320/cda.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5634377203427291122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An amazing and very mature project that hardly needs introduction - but &lt;a href="http://cda.webdetails.org"&gt;definitely needed a home&lt;/a&gt;. CDA is The Way to extract data from Pentaho and can be used standalone. Tons of features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4623224169938674180?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4623224169938674180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/5-days-5-dashboards-5-websites-25.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4623224169938674180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4623224169938674180'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/5-days-5-dashboards-5-websites-25.html' title='5 days, 5 dashboards, 5 websites - 2/5'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-fAO8ePvx3iQ/TjFT1eY0kGI/AAAAAAAAAQQ/sWaWeVT3za4/s72-c/sync.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8850394071332579477</id><published>2011-07-27T18:48:00.006+01:00</published><updated>2011-07-28T13:09:57.480+01:00</updated><title type='text'>5 days, 5 dashboards, 5 websites - 1/5</title><content type='html'>Challenge: in 5 days, introduce 5 demo dashboards made with the CTools and introduce 5 websites for the projects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lets start!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Dashboard 1: Greatest Driver of all times&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-zubUx3jqcnk/TjBQ2Eo3d_I/AAAAAAAAAQA/PSKao7WOYvQ/s1600/senna.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 262px;" src="http://2.bp.blogspot.com/-zubUx3jqcnk/TjBQ2Eo3d_I/AAAAAAAAAQA/PSKao7WOYvQ/s320/senna.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5634092023728797682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This was made by the students of the CTools course in São Paulo. Try it &lt;a href="http://www.webdetails.pt/pentaho/content/pentaho-cdf-dd/Render?solution=PublicDemo&amp;path=%2FSenna&amp;file=Senna.wcdf"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Site 1: ccc.webdetails.org&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-JCEHwF25JK4/TjBRkMEnuHI/AAAAAAAAAQI/I8VkKLQkhlU/s1600/ccc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 211px;" src="http://2.bp.blogspot.com/-JCEHwF25JK4/TjBRkMEnuHI/AAAAAAAAAQI/I8VkKLQkhlU/s320/ccc.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5634092815998236786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CCC deserves a proper home. It's a great project that's been in production for a while. &lt;a href="http://ccc.webdetails.org"&gt;And now it has a home&lt;/a&gt;! Not only you can check a showcase of the supported charts but also test the changes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun, more on the following days!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8850394071332579477?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8850394071332579477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/5-days-5-dashboards-5-websites.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8850394071332579477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8850394071332579477'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/5-days-5-dashboards-5-websites.html' title='5 days, 5 dashboards, 5 websites - 1/5'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-zubUx3jqcnk/TjBQ2Eo3d_I/AAAAAAAAAQA/PSKao7WOYvQ/s72-c/senna.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4467570386514299559</id><published>2011-07-22T20:50:00.007+01:00</published><updated>2011-07-27T18:38:29.309+01:00</updated><title type='text'>Accented (international) characters in pentaho user console</title><content type='html'>The biggest disadvantage of a software made in USA is that they sometimes forget is that not everyone speaks English (and I'm the first one to admit that life would be simpler if we all did).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And most of the folks that *don't* sometimes need accented characters. And there's a few issues with PUC when trying, for instance, to create directories with accented characters (see picture)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-N8CYjRdJcI4/TinWhReZdXI/AAAAAAAAAPo/Q7kg7jazV40/s1600/accentedChars.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 211px; height: 320px;" src="http://2.bp.blogspot.com/-N8CYjRdJcI4/TinWhReZdXI/AAAAAAAAAPo/Q7kg7jazV40/s320/accentedChars.png" alt="" id="BLOGGER_PHOTO_ID_5632268676118443378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are 2 things you need to do to fix. The basic idea is: &lt;span style="font-weight:bold;"&gt;always work with utf-8 everywere&lt;/span&gt;: file encodings, database connections, browser encoding. It will save years of your life.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Modify your start-pentaho.bat/start-pentaho.sh to add the option -Dfile.encoding=utf-8&lt;/li&gt;&lt;li&gt;Modify webapps/pentaho/mantle/Mantle.jsp to add the following snippet:&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Restart your server.  It will work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ps1: this was a request of one of the Ctools student in Brazil. Come meet us in one of the others to get your deepest questions answered&lt;br /&gt;&lt;br /&gt;ps2: Thanks for helping me out here, Nick B. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4467570386514299559?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4467570386514299559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/accented-international-characters-in.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4467570386514299559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4467570386514299559'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/accented-international-characters-in.html' title='Accented (international) characters in pentaho user console'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-N8CYjRdJcI4/TinWhReZdXI/AAAAAAAAAPo/Q7kg7jazV40/s72-c/accentedChars.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2319026139014000402</id><published>2011-07-12T14:37:00.011+01:00</published><updated>2011-07-12T16:22:28.596+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kettle'/><category scheme='http://www.blogger.com/atom/ns#' term='cda'/><category scheme='http://www.blogger.com/atom/ns#' term='dashboards'/><category scheme='http://www.blogger.com/atom/ns#' term='cde'/><category scheme='http://www.blogger.com/atom/ns#' term='elasticsearch'/><title type='text'>Elasticsearch, Kettle and the CTools</title><content type='html'>I'm not much into the &lt;a href="http://www.linuxjournal.com/article/10770"&gt;sql vs nosql&lt;/a&gt; discussion. I have enough years of BI to know that the important thing is to choose the right tool for the job. And that requires a lot of tools!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's one more for our set: &lt;a href="http://www.elasticsearch.org/"&gt;ElasticSearch&lt;/a&gt;. ElasticSearch is an Open Source (Apache 2),                 Distributed, RESTful, Search Engine built on top of &lt;a href="http://lucene.apache.org/"&gt;Lucene&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It may not be obvious, but there are tons of reasons why a search engine is a great choice as a BI data source - and far beyond the simple free-form text search.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Due to the intrinsic nature of nosql and it's schema-less approach, we can store virtually anything. Due to the clustering abilities of elasticsearch scalability is not even an issue. Using the query syntax we have a powerful way to get the data out. &lt;span style="font-weight:bold;"&gt;And it's blazing fast&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We initially used ElasticSearch for the twitter dashboard at &lt;a href="http://www.mozilla.com/"&gt;Mozilla&lt;/a&gt;, described in a previous &lt;a href="http://pedroalves-bi.blogspot.com/2011/03/firefox-4-twitter-and-nosql.html"&gt;blog post&lt;/a&gt;. Everyone was very happy with the results, and we're betting quite a lot in elasticsearch at Mountain View.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So we made an effort to put elasticsearch closer to the Ctools and Pentaho. The first thing we did was to add an &lt;span style="font-weight: bold;"&gt;ElasticSearch Bulk Loader&lt;/span&gt; to Kettle.&lt;br /&gt;&lt;br /&gt;In kettle 4.2 you'll be able to find this new step; Here's a sample of a transformation using it. As simple as it gets:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-BClsdzMsXLE/ThxZWfKYp3I/AAAAAAAAANs/rx7w5YtWDVA/s1600/es1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-BClsdzMsXLE/ThxZWfKYp3I/AAAAAAAAANs/rx7w5YtWDVA/s400/es1.png" alt="" id="BLOGGER_PHOTO_ID_5628471877163329394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are a few things I'd like to highlight:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It's simple - in 5 minutes you can get an elasticsearch engine with data on it&lt;/li&gt;&lt;li&gt;It's fast - 20krps on this sample docs (200k docs indexed in 9 seconds, for 60 Mbs of storage)&lt;/li&gt;&lt;li&gt;It's versatile - we can either index fields or full json documents&lt;/li&gt;&lt;/ul&gt;From this point on we can just query for documents in elasticsearch:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-b_LuPOWl47A/ThxcpCa1L8I/AAAAAAAAAN0/IA--IzlDu7Y/s1600/es2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 261px;" src="http://4.bp.blogspot.com/-b_LuPOWl47A/ThxcpCa1L8I/AAAAAAAAAN0/IA--IzlDu7Y/s400/es2.png" alt="" id="BLOGGER_PHOTO_ID_5628475494400077762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, what to do with this? What's really interesting is to be able to use this from with CDA. Doing that not only we'll be able to use ElasticSearch as a datasource to dashboards but also to reports. Using kettle to do the bridge between ES and our frontend tools guarantees a great degree of isolation and security. Here's a sample transformation:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-usf8wZMbqeI/Thxdy7QJHxI/AAAAAAAAAN8/rAlUTOVWrtU/s1600/es3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://3.bp.blogspot.com/-usf8wZMbqeI/Thxdy7QJHxI/AAAAAAAAAN8/rAlUTOVWrtU/s400/es3.png" alt="" id="BLOGGER_PHOTO_ID_5628476763786518290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we can tie this to CDA, and then use it with CDE for our dashboards. Here's the result:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-0Q1LVGcwyrU/ThxllcMdd9I/AAAAAAAAAOM/w3Jd3pd3jCY/s1600/es5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 176px;" src="http://1.bp.blogspot.com/-0Q1LVGcwyrU/ThxllcMdd9I/AAAAAAAAAOM/w3Jd3pd3jCY/s400/es5.png" alt="" id="BLOGGER_PHOTO_ID_5628485328204298194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-KB6QdbgjWWM/ThxllFXWsbI/AAAAAAAAAOE/svcoh9rpqBE/s1600/es4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 245px;" src="http://1.bp.blogspot.com/-KB6QdbgjWWM/ThxllFXWsbI/AAAAAAAAAOE/svcoh9rpqBE/s400/es4.png" alt="" id="BLOGGER_PHOTO_ID_5628485322075976114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note: in order to run this from pentaho bi, both jsonpath.jar and json_simple.jar have to be added to the lib dir of the application server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With all this we can quickly build any dashboard that uses all this resources. As a very rough demonstration I built this one:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-XMWAr28JT8o/ThxmZ5yGfJI/AAAAAAAAAOc/UyDNkxPUkyo/s1600/es6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 162px;" src="http://4.bp.blogspot.com/-XMWAr28JT8o/ThxmZ5yGfJI/AAAAAAAAAOc/UyDNkxPUkyo/s400/es6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5628486229500001426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2319026139014000402?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2319026139014000402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/elasticsearch-kettle-and-ctools.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2319026139014000402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2319026139014000402'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/elasticsearch-kettle-and-ctools.html' title='Elasticsearch, Kettle and the CTools'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-BClsdzMsXLE/ThxZWfKYp3I/AAAAAAAAANs/rx7w5YtWDVA/s72-c/es1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2213322045984005079</id><published>2011-07-07T10:48:00.007+01:00</published><updated>2011-07-07T12:27:30.060+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kettle'/><category scheme='http://www.blogger.com/atom/ns#' term='pdi'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Pentaho Data Integration 4 Cookbook available</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-39fEocvkXcA/ThWBi59FErI/AAAAAAAAAMU/F2yik4xUXg8/s1600/pdi-cookbook.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-39fEocvkXcA/ThWBi59FErI/AAAAAAAAAMU/F2yik4xUXg8/s400/pdi-cookbook.jpg" alt="" id="BLOGGER_PHOTO_ID_5626545746141844146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you're like me, you're lazy. And if you're lazy, you're probably from the opinion that the best way to learn is by example.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.packtpub.com/pentaho-data-integration-4-cookbook/book"&gt;&lt;br /&gt;Pentaho Data Integration 4 Cookbook&lt;/a&gt; is exactly that - a collection of over 70 (I counted 79, I think even &lt;a href="http://www.mariacarinaroldan.blogspot.com/"&gt;María Carina Roldan&lt;/a&gt; and Adrián Sergio Pulvirenti, the authors of the book,  stopped counting them at some time) real world examples of how to use kettle to do... well, almost everything. It even has a recipe for integrating kettle in a CDE dashboard \o/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This book is very "usage" oriented. You won't find details about using it's api's, or integrate kettle in a 3rd party java program. You'll find recipes for what 95% of the kettle users do: implement jobs and transformations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the list of chapters, will give a good idea of the contents of the book:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chapter 1: Working with Databases&lt;/li&gt;&lt;li&gt;Chapter 2: Reading and Writing Files&lt;/li&gt;&lt;li&gt;Chapter 3: Manipulating XML Structures&lt;/li&gt;&lt;li&gt;Chapter 4: File Management&lt;/li&gt;&lt;li&gt;Chapter 5: Looking for Data&lt;/li&gt;&lt;li&gt;Chapter 6: Understanding Data Flows&lt;/li&gt;&lt;li&gt;Chapter 7: Executing and Reusing Jobs and Transformations&lt;/li&gt;&lt;li&gt;Chapter 8: Integrating Kettle and the Pentaho Suite&lt;/li&gt;&lt;li&gt;Chapter 9: Getting the Most Out of Kettle&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The best thing about this? It's the 5th pentaho - related book:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470484322.html"&gt;&lt;span style="font-size:100%;"&gt;Pentaho Solutions: Business Intelligence and Data Warehousing with Pentaho and MySQL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.packtpub.com/pentaho-3-2-data-integration-beginners-guide/book"&gt;Pentaho 3.2 Data Integration: Beginner's Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.packtpub.com/pentaho-reporting-3-5-for-java-developers/book"&gt;Pentaho Reporting 3.5 for Java Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470635177.html"&gt;Pentaho Kettle Solutions: Building Open Source ETL Solutions with Pentaho Data Integration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.packtpub.com/pentaho-data-integration-4-cookbook/book"&gt;Pentaho Data Integration 4 Cookbook&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;And this is great for the open source community! Keep them coming! What 's next? A ctools book? ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2213322045984005079?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2213322045984005079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/pentaho-data-integration-4-cookbook.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2213322045984005079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2213322045984005079'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/07/pentaho-data-integration-4-cookbook.html' title='Pentaho Data Integration 4 Cookbook available'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-39fEocvkXcA/ThWBi59FErI/AAAAAAAAAMU/F2yik4xUXg8/s72-c/pdi-cookbook.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8792642299456590124</id><published>2011-06-24T11:15:00.002+01:00</published><updated>2011-06-24T11:20:47.350+01:00</updated><title type='text'>CCC charts in CDF</title><content type='html'>&lt;span style="font-style:italic;"&gt;&lt;br /&gt;Stealing an email &lt;a href="http://twitter.com/#%21/pdpinheiro"&gt;Pedro Pinheiro&lt;/a&gt; sent to a customer, since this is useful information to anyone that wants to go hands down on this&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm afraid we don't explicitly support &lt;a href="http://www.webdetails.pt/ccc/pvcTest.html"&gt;CCC&lt;/a&gt; in &lt;a href="http://code.google.com/p/pentaho-cdf/"&gt;CDF&lt;/a&gt; as of right now. It is possible, but you'll have to hack it together yourself.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Disclaimer: The following instructions will get you on your way to getting CCC in CDF, but this is a hack, and I cannot guarantee that they'll work. Don't complain if it deletes your data, kills your dog or haunts your dreams every night.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;First you'll need the CDE bundle 1.0RC3 package from www.webdetails.pt&lt;/li&gt;&lt;li&gt;Inside, find system/pentaho-cdf-dd/resources/custom/CCC&lt;/li&gt;&lt;li&gt;Copy the contents to some location where you already have  some javascript files you're importing into your dashboards.&lt;/li&gt;&lt;li&gt;In your dashboards, include all the js files (that's svg.js jquery.tipsy.js, protovis.js, tipsy.js, pvc-d1.0.js, protovis-implementation.js and ccc-implementation.js) as you normally would.&lt;/li&gt;&lt;li&gt;In the &amp;lt;script&amp;gt; tag for svg.js, make sure to add a data-path attribute that points towards the folder where you copied the whole thing. You can find an example of this for reference in component.xml, lines 39-41.&lt;/li&gt;&lt;li&gt;You can add a CCC component to your dashboard now. There is no actual component reference available, so you'll have to use component.xml as reference for what components are available and what parameters they take.&lt;br /&gt;&lt;br /&gt;Regards,&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8792642299456590124?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8792642299456590124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ccc-charts-in-cdf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8792642299456590124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8792642299456590124'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ccc-charts-in-cdf.html' title='CCC charts in CDF'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6925655037929965051</id><published>2011-06-24T10:43:00.003+01:00</published><updated>2011-06-24T11:12:17.985+01:00</updated><title type='text'>CTools training in the US</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-mkxiY6HXwLs/TgRhj5DWAQI/AAAAAAAAAMM/HxOYz_JZuaM/s1600/ctools.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; " src="http://4.bp.blogspot.com/-mkxiY6HXwLs/TgRhj5DWAQI/AAAAAAAAAMM/HxOYz_JZuaM/s400/ctools.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5621725504103383298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After Netherlands and Brazil, US! &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;San Francisco, 17th August&lt;/span&gt; - &lt;a href="http://www.regonline.com/Register/Checkin.aspx?EventID=987830"&gt;Register here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Orlando, 22nd August&lt;/span&gt; - &lt;a href="http://www.regonline.com/Register/Checkin.aspx?EventID=987837"&gt;Register here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6925655037929965051?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6925655037929965051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ctools-training-in-us.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6925655037929965051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6925655037929965051'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ctools-training-in-us.html' title='CTools training in the US'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-mkxiY6HXwLs/TgRhj5DWAQI/AAAAAAAAAMM/HxOYz_JZuaM/s72-c/ctools.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5802884169442066982</id><published>2011-06-21T12:13:00.004+01:00</published><updated>2011-10-19T00:59:57.220+01:00</updated><title type='text'>CTools installer - Making things *fast*</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/--ZnuxdhShL0/TgCEcJXTYqI/AAAAAAAAAME/Y1D45unHSPQ/s1600/blog.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5620637954043241122" src="http://2.bp.blogspot.com/--ZnuxdhShL0/TgCEcJXTYqI/AAAAAAAAAME/Y1D45unHSPQ/s320/blog.png" style="cursor: hand; cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tholis.com/"&gt;Jos Van Dongen&lt;/a&gt; kept insisting that there should be an easier way to install the CTools. We work on a very fast pace, and the words "upgrade CDF|CDE|CDA|CCC" happen far to frequently.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And he's right. So I built a script that allows to install and upgrade all the plugins. Without further delay, you can get it here:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;a href="https://github.com/pmalves/ctools-installer"&gt;https://github.com/pmalves/ctools-installer&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;ctools-installer.sh is a shell script to install / update the different ctools into a pentaho installation. Currently supports CDF, CDA and CDE and pentaho 3.6 to 3.8&lt;br /&gt;&lt;br /&gt;Requirements: Linux, macintosh or windows with cygwin, wget, unzip, diff (if you're administrating any server and don't have this, you don't deserve ctools anyway ;) )&lt;br /&gt;&lt;br /&gt;Usage: ctools-installer.sh &lt;path-to-pentaho-solutions&gt;&lt;br /&gt;&lt;br /&gt;Please backup your solution, we're not resposible by any harm this does to your server. Also note that if you have a changes in the plugin directories (eg: cdf templates) you'll need to back them up.&lt;br /&gt;&lt;br /&gt;Thanks &lt;a href="http://analytical-labs.com/"&gt;Analytical Labs&lt;/a&gt; for hosting the continuous integration&lt;/path-to-pentaho-solutions&gt;&lt;br /&gt;&lt;br /&gt;&lt;path-to-pentaho-solutions&gt;UPDATE: &lt;/path-to-pentaho-solutions&gt;&lt;a href="http://codeissue.com/profile.php?u=2000" title="View Profile"&gt;Yogaraj Khanal&lt;/a&gt; &lt;path-to-pentaho-solutions&gt; made a blog post with detailed instructions of how to use the installer in windows. &lt;a href="http://codeissue.com/articles/a04e87158bb8552/pentaho-bi-ctools-cdf-cda-cde-saiku-analytics-etc-using-cygwin"&gt;Check it here&lt;/a&gt;, and thank you! &lt;/path-to-pentaho-solutions&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5802884169442066982?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5802884169442066982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ctools-installer-making-things-fast.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5802884169442066982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5802884169442066982'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ctools-installer-making-things-fast.html' title='CTools installer - Making things *fast*'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/--ZnuxdhShL0/TgCEcJXTYqI/AAAAAAAAAME/Y1D45unHSPQ/s72-c/blog.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-380525249158308534</id><published>2011-06-08T01:42:00.008+01:00</published><updated>2011-06-08T02:09:53.947+01:00</updated><title type='text'>CDE + Ace Editor</title><content type='html'>There's a lot of JavaScript and CSS involved in CDE dashboard creation. Who uses it will certainly be familiar with the text areas to edit embedded code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;However, sometimes it's useful for a set of dashboards to share a common logic or presentation layer. Maintaining a per-dashboard CSS stylesheet or JavaScript code is not a good approach.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What we usually do is create a &lt;span style="font-style:italic;"&gt;common.js&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;common.css&lt;/span&gt; files and include them in the dashboard. While this works very nicely, it has one obvious drawback - we can't edit them through CDE, losing the ability to do remote maintenance / development.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, not any more!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We recently integrated &lt;a href="http://ace.ajax.org/"&gt;Ace editor&lt;/a&gt; into CDE. Ace is a merge of 2 projects: Ace and &lt;a href="http://labs.mozilla.com"&gt;Mozilla&lt;/a&gt;'s Bespin (which was used as the CDA editor), lately known as Skywriter. You can take it for a quick test drive &lt;a href="http://ajaxorg.github.com/ace/build/editor.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It has a lot of interesting features:&lt;br /&gt;&lt;ul class="content-list"&gt;&lt;li&gt;&lt;a href="http://pcwalton.blogspot.com/2010/11/syntax-highlighting-specification.html"&gt;Syntax highlighting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Auto indentation and outdent&lt;/li&gt;&lt;li&gt;Work with huge documents (100,000 lines and more are no problem)&lt;/li&gt;&lt;li&gt;Fully customizable key bindings including VI and Emacs modes&lt;/li&gt;&lt;li&gt;Themes (TextMate themes can be imported)&lt;/li&gt;&lt;li&gt;Search and replace with regular expressions&lt;/li&gt;&lt;li&gt;Highlight matching parentheses&lt;/li&gt;&lt;li&gt;Toggle between soft tabs and real tabs&lt;/li&gt;&lt;li&gt;Displays hidden characters&lt;/li&gt;&lt;li&gt;Highlight selected word&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the context of CDE, we now have the ability to create and/or edit CSS and JavaScript files in the solution repository, which is a major plus. As usual, easier to show than to describe:&lt;br /&gt;&lt;br /&gt;Adding a resource:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-gQkDI82_YQo/Te7KjmZ-B6I/AAAAAAAAALk/PpSzw96RFtk/s1600/1_newResource.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 91px;" src="http://1.bp.blogspot.com/-gQkDI82_YQo/Te7KjmZ-B6I/AAAAAAAAALk/PpSzw96RFtk/s320/1_newResource.png" alt="" id="BLOGGER_PHOTO_ID_5615648498331289506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Choosing a folder:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-kphIok2NdjY/Te7LBzDfLAI/AAAAAAAAALs/sbrPBqbBeOQ/s1600/2_chooseFolder.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 146px;" src="http://3.bp.blogspot.com/-kphIok2NdjY/Te7LBzDfLAI/AAAAAAAAALs/sbrPBqbBeOQ/s320/2_chooseFolder.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5615649017122728962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Creating a new file:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-uiy34lw_nAU/Te7LLm6Hm5I/AAAAAAAAAL0/xI_YJ_afKYo/s1600/3_createFile.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 92px;" src="http://2.bp.blogspot.com/-uiy34lw_nAU/Te7LLm6Hm5I/AAAAAAAAAL0/xI_YJ_afKYo/s320/3_createFile.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5615649185660902290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Editing the code:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-_bbV2_O9g1k/Te7LTr2HJgI/AAAAAAAAAL8/cehyTDP8vKM/s1600/4_editCode.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 174px;" src="http://2.bp.blogspot.com/-_bbV2_O9g1k/Te7LTr2HJgI/AAAAAAAAAL8/cehyTDP8vKM/s320/4_editCode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5615649324425225730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-380525249158308534?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/380525249158308534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/cde-ace-editor.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/380525249158308534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/380525249158308534'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/cde-ace-editor.html' title='CDE + Ace Editor'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-gQkDI82_YQo/Te7KjmZ-B6I/AAAAAAAAALk/PpSzw96RFtk/s72-c/1_newResource.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-695035509025207531</id><published>2011-06-01T01:40:00.005+01:00</published><updated>2011-06-01T01:50:14.373+01:00</updated><title type='text'>CTools training in Brazil!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-u3xKKUY2erE/TeWLLCXtI-I/AAAAAAAAALY/CEe8UcYEdIc/s1600/C_TOOLS_br.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://1.bp.blogspot.com/-u3xKKUY2erE/TeWLLCXtI-I/AAAAAAAAALY/CEe8UcYEdIc/s320/C_TOOLS_br.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5613045532318311394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este post vai ser em português para anunciar mais uma ronda de treinamentos nas Ctools - CDE, CDF, CDA, CCC, CST, desta vez no Brasil, São Paulo, 20 a 22 de Julho. Organizado em conjunto com &lt;a href="http://blog.professorcoruja.com/"&gt;Caio Souza&lt;/a&gt;, inscrições limitadas. Para mais informações contactar &lt;a href="mailto:info@it4biz.com.br"&gt;info@it4biz.com.br&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Até breve!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-695035509025207531?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/695035509025207531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ctools-training-in-brazil.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/695035509025207531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/695035509025207531'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/06/ctools-training-in-brazil.html' title='CTools training in Brazil!'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-u3xKKUY2erE/TeWLLCXtI-I/AAAAAAAAALY/CEe8UcYEdIc/s72-c/C_TOOLS_br.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3902611557684004742</id><published>2011-05-18T14:06:00.004+01:00</published><updated>2011-05-18T14:16:17.298+01:00</updated><title type='text'>CDA - Export to HTML</title><content type='html'>Our partners at &lt;a href="http://www.stonegateseniorcare.com/"&gt;Stonegate Senior Care&lt;/a&gt; sponsored a great addition to CDA. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I admit it - I now call it a great addition, but initially was very skeptical about it. I mean - when we have csv, json, xml and xsl output, why on earth would we need html output??&lt;br /&gt;&lt;br /&gt;For the most stupid reason you can imagine: Excel requires it!&lt;br /&gt;&lt;br /&gt;Turns out that the only way for you to link to a external datasource in excel is to point to a html table. This means that now you'll be able to have your spreadsheet files with updated data - with no other plugins :)&lt;br /&gt;&lt;br /&gt;Check it out in action:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Gav7R4JZDOo/TdPGF5YJIeI/AAAAAAAAALI/xug6BVEsd3s/s1600/external_data.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://2.bp.blogspot.com/-Gav7R4JZDOo/TdPGF5YJIeI/AAAAAAAAALI/xug6BVEsd3s/s400/external_data.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608043765610127842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-S7qn3IQNCBY/TdPGPrQV5sI/AAAAAAAAALQ/RxZc8YO4FoM/s1600/external_data2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 252px;" src="http://1.bp.blogspot.com/-S7qn3IQNCBY/TdPGPrQV5sI/AAAAAAAAALQ/RxZc8YO4FoM/s400/external_data2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5608043933618005698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm sure this will be of great help to those that want to take advantage for their BI system but still be able to hack their own home-grown analysis.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See you soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3902611557684004742?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3902611557684004742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/05/cda-export-to-html.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3902611557684004742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3902611557684004742'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/05/cda-export-to-html.html' title='CDA - Export to HTML'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Gav7R4JZDOo/TdPGF5YJIeI/AAAAAAAAALI/xug6BVEsd3s/s72-c/external_data.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8342497470233136838</id><published>2011-04-21T21:19:00.003+01:00</published><updated>2011-04-21T21:31:42.726+01:00</updated><title type='text'>CDF / C** Training Session - Do you have what it takes?</title><content type='html'>Well, after &lt;a href="http://www.dikw-academy.nl/opleidingen/16"&gt;this training session&lt;/a&gt;, you will! Learn how to work with all the components of the C** tools and make great looking dashboards.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-RnAdTVJerzU/TbCSA0B307I/AAAAAAAAALA/lherRTqWf9Y/s1600/sinc_cartaz.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 294px; height: 400px;" src="http://1.bp.blogspot.com/-RnAdTVJerzU/TbCSA0B307I/AAAAAAAAALA/lherRTqWf9Y/s400/sinc_cartaz.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5598134879485678514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, see you 9th of May in Nieuwegein, Netherlands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8342497470233136838?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8342497470233136838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/04/cdf-c-training-session-do-you-have-what.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8342497470233136838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8342497470233136838'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/04/cdf-c-training-session-do-you-have-what.html' title='CDF / C** Training Session - Do you have what it takes?'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-RnAdTVJerzU/TbCSA0B307I/AAAAAAAAALA/lherRTqWf9Y/s72-c/sinc_cartaz.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6319798936335262028</id><published>2011-04-18T12:13:00.003+01:00</published><updated>2011-04-18T12:49:04.148+01:00</updated><title type='text'>Mozilla Community Metrics - Technical challenges</title><content type='html'>One of the goals for the &lt;a href="http://blog.mozilla.com/metrics/"&gt;Mozilla metrics team&lt;/a&gt; for ages has been to provide open data to the community. It never happened so far mainly due to lack of resources and different prioritization.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;However, that will change! During last quarter we worked on a tool to give users better insight on their contributions to the Mozilla project. &lt;a href="http://www.twitter.com/daeaves"&gt;David Eaves&lt;/a&gt; did a &lt;a href="http://eaves.ca/2011/04/07/developing-community-management-metrics-and-tools-for-mozilla/"&gt;great blog post&lt;/a&gt; describing the entire motivations behind the project&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://eaves.ca/wp-content/uploads/2011/04/main-board-everything1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px;" src="http://eaves.ca/wp-content/uploads/2011/04/main-board-everything1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Technically speaking, this was very challenging and insanely rewarding. We had to build something that expressed the data we wanted to share in a very clear and useful way - and still look good on the process. And I think we hit both of them! :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's a screencast, courtesy of &lt;a href="http://daniele.livejournal.com/"&gt;Daniel Einspanjer&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="425" height="349" src="http://www.youtube.com/embed/QRebjdMabao" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All this was done using our regular stuff: CDF, CDE, CCC and CDA over Pentaho. The challenge now is allowing the community to use this tool! I'm obviously scared sh*t about it - afaik, no one every opened a pentaho server - literally - to the world. But hey - if someone has to be the first, I want &lt;a href="http://www.webdetails.pt/"&gt;our team&lt;/a&gt; to do it!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All the plugins I named previously were built having this longer term goal in mind: CDF / CDE optimize all dependencies (automatic minification / concatenation of scripts, aggressive client side caching) and CDA does a great task of caching the resultsets server side, regardless of datasource.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Mozilla security team will now do an extensive audit on the system, making sure it's ready for exposure. Hopefully, my next blog post on this will not contain screenshots and screencasts, but the link for the dashboard itself :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6319798936335262028?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6319798936335262028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/04/mozilla-community-metrics-technical.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6319798936335262028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6319798936335262028'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/04/mozilla-community-metrics-technical.html' title='Mozilla Community Metrics - Technical challenges'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/QRebjdMabao/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-575678865446014241</id><published>2011-03-30T12:50:00.005+01:00</published><updated>2011-05-20T12:16:42.418+01:00</updated><title type='text'>CDA datasources in PRD</title><content type='html'>One word - FINALLY! I've been waiting for this for ages. &lt;a href="http://www.sherito.org/2010/12/santa-dropped-cda-datasources.html"&gt;Thomas Morgner blogged about this&lt;/a&gt; a while back, but it was all lies :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Until now, and here's the proof:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Fr5mWHtOX6U/TZMZmNSe4lI/AAAAAAAAAK4/0rcCQq6nadA/s1600/prd-cda.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 204px;" src="http://4.bp.blogspot.com/-Fr5mWHtOX6U/TZMZmNSe4lI/AAAAAAAAAK4/0rcCQq6nadA/s320/prd-cda.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5589839706689823314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This may look like a cyclic dependency... using a CDA datasource in PRD, while CDA itself uses PRD libs. Believe me, it's not, and it's incredibly handy to have a "dictionary of querys" on the server and just query them from your report. Caching comes for free, it's all executed in the server, it'll save hours of pain waiting for the hard queries to get executed. I know this is something that PRD 3.8 fixed, but having the cache on server is a huge bonus&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In order to use this, just &lt;a href="http://www.webdetails.pt/resources/prd-cda.tgz"&gt;drop this jars&lt;/a&gt; in PRD-3.8 lib dir and it'll just work!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun - I know we will!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-575678865446014241?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/575678865446014241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/cda-datasources-in-prd.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/575678865446014241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/575678865446014241'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/cda-datasources-in-prd.html' title='CDA datasources in PRD'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Fr5mWHtOX6U/TZMZmNSe4lI/AAAAAAAAAK4/0rcCQq6nadA/s72-c/prd-cda.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5896924153258643822</id><published>2011-03-22T17:13:00.007Z</published><updated>2011-03-22T18:26:04.927Z</updated><title type='text'>Firefox 4, Twitter and NoSQL Elasticsearch</title><content type='html'>Here's the main message of this blog post: &lt;span style="font-weight:bold;"&gt;Firefox 4 was released, get it &lt;a href="http://getfirefox.com/"&gt;now&lt;/a&gt;&lt;/span&gt;. It's an amazing piece of work, done by, and for the community.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://blog.mozilla.com/metrics/"&gt;Mozilla Metrics&lt;/a&gt; team members we prepared a dashboard to monitor this release using several sources of information, and one of them is twitter, basically, "what are people saying about us?"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This obviously requires a different approach compared to normal BI; We need almost realtime data, a blazing-fast response and search capabilities. Perfect opportunity to a NoSQL approach.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We already had a very good experience using &lt;a href="http://lucene.apache.org/solr/"&gt;solr&lt;/a&gt;, an enterprise search platform that runs on top of &lt;a href="http://lucene.apache.org/java/"&gt;Lucene&lt;/a&gt;. This time we decided to use &lt;a href="http://www.elasticsearch.org/"&gt;ElasticSearch&lt;/a&gt;, also an Open Source (Apache 2), Distributed, RESTful, Search Engine built on top of Lucene. While the principle is very much the same as Solr, the fact that ES thinks in JSON for both query DSL and indexing documents add more BI-like features to it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The result? Nothing less than astonishing! Using regular CDA to connect to elasticsearch, we were able to do our CDE dashboard development using the regular techniques. NoSQL datasource? SQL datasource? Excel? Don't care - it's all data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's the screenshot as of... well, now (5pm, Europe/Lisbon time):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-noXqM6ch2TQ/TYjfo887dcI/AAAAAAAAAKw/gJEUbUHEQjY/s1600/twitter.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://1.bp.blogspot.com/-noXqM6ch2TQ/TYjfo887dcI/AAAAAAAAAKw/gJEUbUHEQjY/s320/twitter.png" alt="" id="BLOGGER_PHOTO_ID_5586961232402544066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Important things to note:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;At 5pm, firefox 4 noise is bigger than IE9 related noise for it's release date&lt;/li&gt;&lt;li&gt;User feedback is great!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's a &lt;span style="font-weight:bold;"&gt;quick screencast&lt;/span&gt; of it working, courtesy of &lt;a href="http://daniele.livejournal.com/"&gt;Daniel Einspanjer&lt;/a&gt;, master of Metrics. Amazing stuff, thanks Daniel:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CNNWvnMM4mg&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed  src="http://www.youtube.com/v/CNNWvnMM4mg&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5896924153258643822?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5896924153258643822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/firefox-4-twitter-and-nosql.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5896924153258643822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5896924153258643822'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/firefox-4-twitter-and-nosql.html' title='Firefox 4, Twitter and NoSQL Elasticsearch'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-noXqM6ch2TQ/TYjfo887dcI/AAAAAAAAAKw/gJEUbUHEQjY/s72-c/twitter.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1852736282229146803</id><published>2011-03-17T10:02:00.003Z</published><updated>2011-03-17T10:17:10.676Z</updated><title type='text'>CCC Community Contributions: Heatmap</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/--K8OdI3Va1Y/TYHeJz2ZJ2I/AAAAAAAAAKo/2v5F9NJ0IPE/s1600/heatmap.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 182px;" src="http://4.bp.blogspot.com/--K8OdI3Va1Y/TYHeJz2ZJ2I/AAAAAAAAAKo/2v5F9NJ0IPE/s320/heatmap.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5584989273034663778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The best part about community projects is when you get adoption to the point where you start getting very valid community contributions. And that's happening with &lt;a href="https://github.com/pmalves/ccc"&gt;CCC&lt;/a&gt;, the best / most powerful / most extensible charting engine available (and not only for pentaho). All in all, god's gift to visualization *cof*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cees van Kemenade, from &lt;a href="http://vinzi.nl/"&gt;Vinzi&lt;/a&gt;, added heatmaps and fixed y axis with overlays. It's been merged to the main code and we're now working on giving those features from within CDE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Surely the first from many contributions!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1852736282229146803?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1852736282229146803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/ccc-community-contributions-heatmap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1852736282229146803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1852736282229146803'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/ccc-community-contributions-heatmap.html' title='CCC Community Contributions: Heatmap'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/--K8OdI3Va1Y/TYHeJz2ZJ2I/AAAAAAAAAKo/2v5F9NJ0IPE/s72-c/heatmap.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6475711526677753834</id><published>2011-03-07T12:15:00.008Z</published><updated>2011-03-14T19:51:10.694Z</updated><title type='text'>Sexy pentaho dashboards? Showbiz!</title><content type='html'>For ages &lt;a href="http://www.webdetails.pt/"&gt;we've&lt;/a&gt; been working on allowing us (and everyone else, by using an opensource model) the ability to develop Pentaho dashboards faster and better.&lt;br /&gt;&lt;br /&gt;That was the motivation behind CDF, CDE, CCC, CDA and all the other Cs. We are now able to present a service where our goal is to be the "developing hand" of dashboards to the pentaho user base.&lt;br /&gt;&lt;br /&gt;We present: &lt;span style="font-weight: bold;"&gt;ShowBiz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" quality="high" scale="noscale" salign="l" flashvars="mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true&amp;amp;documentId=110312215429-d87690a50a744457ad38ac5fc6175354&amp;amp;docName=wd_showbiz&amp;amp;username=webdetails&amp;amp;loadingInfoText=Showbiz&amp;amp;et=1299509005125&amp;amp;er=In a nutshell, here's how it works: 71" style="width:420px;height:221px" name="flashticker" align="middle"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In a nutshell, here's how it works:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You tell us what you think you want&lt;/li&gt;&lt;li&gt;We deliver what you didn't even dream was possible :)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:imagine@webdetails.pt"&gt;Contact us&lt;/a&gt; for more information&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6475711526677753834?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6475711526677753834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/sexy-pentaho-dashboards-showbiz.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6475711526677753834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6475711526677753834'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/03/sexy-pentaho-dashboards-showbiz.html' title='Sexy pentaho dashboards? Showbiz!'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1341380113722223287</id><published>2011-02-22T10:13:00.006Z</published><updated>2011-02-22T12:05:04.339Z</updated><title type='text'>Protovis component in CDE</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-fDyC9a3VRrg/TWOcuDxe5KI/AAAAAAAAAKY/CaVtz6JXyv4/s1600/cde.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 232px;" src="http://4.bp.blogspot.com/-fDyC9a3VRrg/TWOcuDxe5KI/AAAAAAAAAKY/CaVtz6JXyv4/s320/cde.png" alt="" id="BLOGGER_PHOTO_ID_5576473078715573410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Due to popular demand in &lt;a href="http://forums.pentaho.com/"&gt;pentaho forums&lt;/a&gt;, here's some guidelines on how to use the &lt;a href="http://vis.stanford.edu/protovis/"&gt;protovis&lt;/a&gt; component in &lt;a href="http://pedroalves-bi.blogspot.com/2010/12/cde-10-rc3-available.html"&gt;CDE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Even though CCC defines the charts that we're interested in using 90% of the time, the other 10% are fundamental. Even if it's "just because we can".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The protovis component in CDE allows the dashboard developer to take full use of protovis language but goes a bit further than that; Does all the necessary link with the dashboard layout, does the necessary initialization so that it runs in IE and even connects with the data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll show 2 samples: in one of them we'll supply an object to be used as the data, and in the second one we'll use the result of a query to build a chart.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Example 1: &lt;a href="http://vis.stanford.edu/protovis/ex/bubble.html"&gt;Bubble Charts&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create a new dashboard in CDE, and save it in some location (always start by doing this). Then in the layout panel, add one row and 2 columns with span 12, thus totaling 24, the full extent of the layout. Name the 2 columns as &lt;span style="font-style:italic;"&gt;chart1&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;chart2&lt;/span&gt; respectively.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Add a custom component called "flare" and define the contents as what's in this &lt;a href="view-source:http://vis.stanford.edu/protovis/ex/flare.js"&gt;flare.js&lt;/a&gt; file. This will be the data we'll use in the sample.&lt;br /&gt;&lt;br /&gt;Now add a protovis component, call it anything you like (I called it &lt;span style="font-style:italic;"&gt;protovisComp1&lt;/span&gt;). I used 400 for both width and height. In the htmlObject chose the first column.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now all that's left is the definition of the function. It has the form:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;function(vis,data){&lt;br /&gt;// vis - the container where protovis objects will be drawn&lt;br /&gt;// data - result of the query, if applicable&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;For this sample, I'll use the code in the &lt;a href="http://vis.stanford.edu/protovis/ex/bubble-full.html"&gt;bubble chart sample&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;pre&gt;&lt;br /&gt;function(vis,data){&lt;br /&gt;&lt;br /&gt;/* Produce a flat hierarchy of the Flare classes. */&lt;br /&gt;var classes = pv.nodes(pv.flatten(flare).leaf(Number).array());&lt;br /&gt;classes.slice(1).forEach(function(d) {&lt;br /&gt;d.nodeName = "flare." + d.nodeValue.keys.join(".");&lt;br /&gt;var i = d.nodeName.lastIndexOf(".");&lt;br /&gt;d.className = d.nodeName.substring(i + 1);&lt;br /&gt;d.packageName = d.nodeName.substring(0, i);&lt;br /&gt;d.nodeValue = d.nodeValue.value;&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;/* For pretty number formatting. */&lt;br /&gt;var format = pv.Format.number();&lt;br /&gt;&lt;br /&gt;vis.add(pv.Layout.Pack)&lt;br /&gt;  .top(-50)&lt;br /&gt;  .bottom(-50)&lt;br /&gt;  .nodes(classes)&lt;br /&gt;  .size(function(d) d.nodeValue)&lt;br /&gt;  .spacing(0)&lt;br /&gt;  .order(null)&lt;br /&gt;.node.add(pv.Dot)&lt;br /&gt;  .fillStyle(pv.Colors.category20().by(function(d) d.packageName))&lt;br /&gt;  .strokeStyle(function() this.fillStyle().darker())&lt;br /&gt;  .visible(function(d) d.parentNode)&lt;br /&gt;  .title(function(d) d.nodeName + ": " + format(d.nodeValue))&lt;br /&gt;.anchor("center").add(pv.Label)&lt;br /&gt;  .text(function(d) d.className.substring(0, Math.sqrt(d.nodeValue) &gt;&gt; 4));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If you save and preview, you should see the bubble chart:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-Q_3tLQbqXCc/TWObD3W4EaI/AAAAAAAAAKQ/bj75X9XIsfk/s1600/bubble.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 171px;" src="http://1.bp.blogspot.com/-Q_3tLQbqXCc/TWObD3W4EaI/AAAAAAAAAKQ/bj75X9XIsfk/s200/bubble.png" alt="" id="BLOGGER_PHOTO_ID_5576471254316618146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Example 2: &lt;a href="http://vis.stanford.edu/protovis/ex/pie.html"&gt;Pie &amp;amp; Donut Charts&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the first example I defined the data that rendered the bubble chart in a custom parameter. Here, I'll show how to use a CDA query to feed the data.&lt;br /&gt;&lt;br /&gt;Note: the pie chart I chose for example 2 is a rather uninteresting one. If you want a pie chart you'll better use CCC Pie Chart Component. I used this one of the sake of simplicity, but virtually any other protovis sample could be used here&lt;br /&gt;&lt;br /&gt;Create a sql input over jndi query named "myQuery", choose SampleData for the source and use the query:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;pre&gt;&lt;br /&gt;select c.TERRITORY, SUM(o.QUANTITYORDERED) as quantity&lt;br /&gt;from ORDERFACT o&lt;br /&gt;inner join CUSTOMER_W_TER c on (c.CUSTOMERNUMBER=o.CUSTOMERNUMBER)&lt;br /&gt;group by c.TERRITORY&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now create a second protovis component, repeat the same instructions as for the first one but this time select "myQuery" as the datasource. The difference is that our protovis function is&lt;br /&gt;called after the query runs, and the object "data" is the result of the query. Here's the function I used, slightly modified to take into account the format of the data cda returns.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;pre&gt;&lt;br /&gt;function(vis,queryResult){&lt;br /&gt;&lt;br /&gt;var data = queryResult.resultset;&lt;br /&gt;&lt;br /&gt;/* Sizing and scales. */&lt;br /&gt;var w = this.width,&lt;br /&gt;   h = this.height,&lt;br /&gt;   r = w / 2,&lt;br /&gt;   a = pv.Scale.linear(0, pv.sum(data.map(function(d){return d[1]}))).range(0, 2 * Math.PI);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* The wedge, with centered label. */&lt;br /&gt;vis.add(pv.Wedge)&lt;br /&gt;   .data(data)&lt;br /&gt;   .bottom(w / 2)&lt;br /&gt;   .left(w / 2)&lt;br /&gt;   .innerRadius(r - 40)&lt;br /&gt;   .outerRadius(r)&lt;br /&gt;   .angle(function(d){return a(d[1])})&lt;br /&gt;   .event("mouseover", function(){return this.innerRadius(0)})&lt;br /&gt;   .event("mouseout", function(){return this.innerRadius(r - 40)})&lt;br /&gt; .anchor("center").add(pv.Label)&lt;br /&gt;   .visible(function(d){return a(d[1]) &gt; .15})&lt;br /&gt;   .textAngle(0)&lt;br /&gt;   .text(function(d){return d[0]});&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If all went well, you should now have a protovis sample with both charts running, one of them with data from your query&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-1DciRByq0bA/TWOewzudrvI/AAAAAAAAAKg/6QwUpSIsC4c/s1600/protovis.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 155px;" src="http://2.bp.blogspot.com/-1DciRByq0bA/TWOewzudrvI/AAAAAAAAAKg/6QwUpSIsC4c/s320/protovis.png" alt="" id="BLOGGER_PHOTO_ID_5576475324970807026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Some important notes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Don't create the vis object (the protovis root panel) - cdf takes care of that for you. The size and placement comes out of the options you provide&lt;/li&gt;&lt;li&gt;Don't call the render() method. Let the cdf lifecycle take care of that for you&lt;/li&gt;&lt;li&gt;Don't use 1.8 syntax. You'll see a lot of functions defined like &lt;span style="font-style: italic;"&gt;function(d) d&lt;/span&gt; . While very practical, it will guarantee to break in internet explorer. Use the extended format of &lt;span style="font-style: italic;"&gt;function(d){return d}&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;CDF will make the necessary arrangements so that it will work on IE 8 or less, by converting it to flash. Flash 10 required and, as usual, make sure your javascript code is foul proof...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Hope that helps. By now, you should also be able to understand why we created CCC. It's a royal PITA to write pure protovis code for every basic chart we need :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1341380113722223287?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1341380113722223287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/02/protovis-component-in-cde.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1341380113722223287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1341380113722223287'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/02/protovis-component-in-cde.html' title='Protovis component in CDE'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fDyC9a3VRrg/TWOcuDxe5KI/AAAAAAAAAKY/CaVtz6JXyv4/s72-c/cde.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7869331929584718199</id><published>2011-02-01T11:23:00.003Z</published><updated>2011-02-01T11:50:15.336Z</updated><title type='text'>Revenues of open source contributions - Part II</title><content type='html'>Almost 2 years ago I wrote a blog post entitled "&lt;span style="font-style:italic;"&gt;&lt;a href="http://pedroalves-bi.blogspot.com/2009/04/revenues-of-open-source-contributions.html"&gt;Revenues of open source contributions&lt;/a&gt;&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The main reason that led me to permanently contribute back was the "just feels right" argument. What can I say? I have the &lt;a href="http://www.mozilla.org/about/manifesto.en.html"&gt;Mozilla values&lt;/a&gt; buried deep within.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After this 2 years I can clearly identify one major benefit: recognition. Not only on the open source world, where every new project we release is followed with interest and we have a thrilling community testing, helping fixing bugs and commiting new features, but also in the enterprise world, where we're seen by customers as a very specialized and serious company. In the &lt;a href="http://www.pentaho.com/events/20110119_global_partner_summit/"&gt;Pentaho Global Partner Summit&lt;/a&gt; our team got a recognition for all the hard work done recently, as we were awarded as the Best Community Contributor&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enough chat and back to work - we have a lot of releases coming soon, and that's what really matters. That's everyone for the support so far&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://pentahoadmin.files.wordpress.com/2011/01/pgps-025.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; " src="http://pentahoadmin.files.wordpress.com/2011/01/pgps-025.jpg?w=360&amp;h=300" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7869331929584718199?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7869331929584718199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/02/webdetails-awarded-as-best-community.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7869331929584718199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7869331929584718199'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2011/02/webdetails-awarded-as-best-community.html' title='Revenues of open source contributions - Part II'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8254121243398727108</id><published>2010-12-22T22:01:00.001Z</published><updated>2010-12-22T22:02:34.653Z</updated><title type='text'>Merry Christmas everyone</title><content type='html'>&lt;object width="348" height="221"&gt;&lt;param name="movie" value="http://www.youtube.com/v/u9e2gTaHM18?fs=1&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/u9e2gTaHM18?fs=1&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="348" height="221"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;webdetails team&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8254121243398727108?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8254121243398727108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/merry-christmas-everyone.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8254121243398727108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8254121243398727108'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/merry-christmas-everyone.html' title='Merry Christmas everyone'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5053112544895123224</id><published>2010-12-22T00:49:00.006Z</published><updated>2010-12-22T01:03:59.479Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Connected to Mozilla - 2010</title><content type='html'>Last week I was in Mountain View, California, for the &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;Mozilla&lt;/a&gt; All-Hands work week. &lt;a href="http://www.webdetails.pt/"&gt;We've&lt;/a&gt; been working with them on the &lt;a href="http://blog.mozilla.com/metrics/"&gt;metrics team&lt;/a&gt; for over 2 years now, and has been an amazing ride.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Working with such an amazing group of people from all over the world is truly inspiring, and we end up absorbing some of the Mozilla values to the way we run our own company. We prepared a presentation to show them, and in the truth spirit of openness, nothing better than to share it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" quality="high" scale="noscale" salign="l" flashvars="mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true&amp;amp;documentId=101216123048-3c37e998b9ef4c6e8c86458038f089b9&amp;amp;docName=connected&amp;amp;username=webdetails&amp;amp;loadingInfoText=connected&amp;amp;et=1292979572823&amp;amp;er=76" style="width:350px;height:203px" name="flashticker" align="middle"&gt;&lt;/embed&gt;&lt;div style="width:350px;text-align:left;"&gt;&lt;a href="http://issuu.com/webdetails/docs/connected?mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true" target="_blank"&gt;Open publication&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Thank you Mozilla, for an unforgettable 2010.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Webdetails team&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5053112544895123224?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5053112544895123224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/connected-to-mozilla-2010.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5053112544895123224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5053112544895123224'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/connected-to-mozilla-2010.html' title='Connected to Mozilla - 2010'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3750841009722230573</id><published>2010-12-06T20:41:00.003Z</published><updated>2010-12-06T21:29:00.821Z</updated><title type='text'>Saiku - the olap analytics tools everyone's waiting for</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/TP1PCv3z1II/AAAAAAAAAJw/ky4EVRTU65s/s1600/saiku.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 235px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/TP1PCv3z1II/AAAAAAAAAJw/ky4EVRTU65s/s320/saiku.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547677224619201666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You may not know what Saiku is. You may know it by the old name - PAT (or Pentaho Analysis Tool). And even if doesn't ring a bell, I can tell you it's going to be the 21st century replacement for JPivot as the &lt;span style="font-style:italic;"&gt;de facto&lt;/span&gt; Open Source OLAP navigator client.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://analytical-labs.com/"&gt;Saiku&lt;/a&gt; team recently did a &lt;a href="http://99designs.com/logo-design/contests/professional-looking-logo-web-based-data-analysis-tool-57854/poll/2ac6oi/done?utm_source=voting_app&amp;utm_medium=web&amp;utm_campaign=voting"&gt;contest&lt;/a&gt; to get a new logo designed to it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As self-nominated #1 dashboard experts of the entire solar system (including Pluto, that will always be a planet in my book!) we had to enter that contest. After 49345 entries and iterations, guess what? We won, with the logo you see in this post! (and by we, I don't mean me, I mean our UI expert, &lt;a href="http://twitter.com/#!/webdetails"&gt;Nuno Moreira&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the true open source spirit, &lt;a href="http://www.webdetails.pt"&gt;Webdetails&lt;/a&gt; decided to donate the prize to an opensource project. After a lot of investigation and discussion we chose to donate it to - drums roll - the Saiku project!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So now, Tom, Paul and all of you that work on the project, now that you are earning the big bucks, just give us version 1.0! Keep an eye on &lt;a href="http://pentahomusings.blogspot.com/"&gt;Tom Barber's blog&lt;/a&gt; for updates. In the meanwhile, all we have is the teaser:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/TP1Vhm-BWEI/AAAAAAAAAJ4/yPpPh4lxYC8/s1600/saiku-comingsoon.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/TP1Vhm-BWEI/AAAAAAAAAJ4/yPpPh4lxYC8/s320/saiku-comingsoon.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5547684351875045442" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3750841009722230573?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3750841009722230573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/saiku-olap-analytics-tools-everyones.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3750841009722230573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3750841009722230573'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/saiku-olap-analytics-tools-everyones.html' title='Saiku - the olap analytics tools everyone&apos;s waiting for'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/TP1PCv3z1II/AAAAAAAAAJw/ky4EVRTU65s/s72-c/saiku.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4296669778670394181</id><published>2010-12-02T02:29:00.005Z</published><updated>2010-12-03T20:11:07.258Z</updated><title type='text'>CDE 1.0-RC3 available</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/TPcHr2c-IeI/AAAAAAAAAJo/OyH1RUflK28/s1600/cde-sample.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/TPcHr2c-IeI/AAAAAAAAAJo/OyH1RUflK28/s400/cde-sample.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5545909916062851554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note:&lt;/span&gt; &lt;span style="font-style:italic;"&gt;There was a mistake on the package. If you downloaded before December 03 and when you try to create a new dashboard and see an error like "missing ] after element list", please download and install again&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What a quick turnaround. Turns out that RC2 didn't fix the main issue that prevented CDE to work on 3.7. With the help of some community members we were able to identify and fix it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There were also some bugfixes included, and we tested all the samples in the distribution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Admittedly there's a lack of documentation in CDE, so we included a sample that should clear the initial question of 'how to start'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download it from &lt;a href="http://www.webdetails.pt"&gt;our website&lt;/a&gt; or directly from &lt;a href="http://cdf-de.googlecode.com/files/CDE-bundle-1.0-RC3.tar.bz2"&gt;googlecode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apart form this, the same release notes still hold as from the RC2:&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;This is much more than a new build, as lots of bugs and improvements were made in all the projects contained in the bundle (CDF, CDE, CCC, CDA, CST). Yes, you heard right, CST is also included in the bundle. One of the most important issues includes support for dashboard rendering in IE (including CCC charts)&lt;br /&gt;&lt;br /&gt;Following the release notes:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;CHANGELOG:&lt;br /&gt;&lt;br /&gt;CDF: &lt;br /&gt;- Upgraded to jquery 1.4.4&lt;br /&gt;- Upgraded to jqueryui 1.8.6&lt;br /&gt;- 3.7 compatibility fix for prptComponent&lt;br /&gt;- Fixes to daterangeinput (no longer in chinese)&lt;br /&gt;- Bug fix on blueprint render in IE&lt;br /&gt;&lt;br /&gt;CCC: &lt;br /&gt;- Several bug fixes in barcharts and stacked charts&lt;br /&gt;- Implemented SVGWEB for IE rendering&lt;br /&gt;&lt;br /&gt;CDE:&lt;br /&gt;- Lots of internal changes in the way renderers work&lt;br /&gt;- Added shortcut keys to CDE (press ? to see them)&lt;br /&gt;- Fixed issue with order of execution&lt;br /&gt;- Fixed dateComponent and Added support for lastWeek and lastMonth&lt;br /&gt;- Added support for ${img:...} tags&lt;br /&gt;- Updated jquery&lt;br /&gt;- Added support for CCC in IE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INSTALLATION INSTRUCTIONS:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Copy the files in this bundle to the pentaho-solution directory. If you have any&lt;br /&gt;older versions of this files (and you'll have at least CDF) make sure you move&lt;br /&gt;them out of the way. A server restart is required.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SYSTEM REQUIREMENTS:&lt;br /&gt;&lt;br /&gt;- Pentaho 3.6 or 3.7&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4296669778670394181?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4296669778670394181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/cde-10-rc3-available.html#comment-form' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4296669778670394181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4296669778670394181'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/12/cde-10-rc3-available.html' title='CDE 1.0-RC3 available'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Yeslj5UWDbY/TPcHr2c-IeI/AAAAAAAAAJo/OyH1RUflK28/s72-c/cde-sample.png' height='72' width='72'/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1996300279695070154</id><published>2010-11-28T18:59:00.002Z</published><updated>2010-11-28T19:07:43.341Z</updated><title type='text'>CDE 1.0-RC2 ready for test</title><content type='html'>More C-Stuff! Following a few reported issues of incompatibility with 3.7, it's time to release 3.7.&lt;br /&gt;&lt;br /&gt;This is much more than a new build, as lots of bugs and improvements were made in all the projects contained in the bundle (CDF, CDE, CCC, CDA, CST). Yes, you heard right, CST is also included in the bundle. One of the most important issues includes support for dashboard rendering in IE (including CCC charts)&lt;br /&gt;&lt;br /&gt;Following the release notes:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;CHANGELOG:&lt;br /&gt;&lt;br /&gt;CDF: &lt;br /&gt;- Upgraded to jquery 1.4.4&lt;br /&gt;- Upgraded to jqueryui 1.8.6&lt;br /&gt;- 3.7 compatibility fix for prptComponent&lt;br /&gt;- Fixes to daterangeinput (no longer in chinese)&lt;br /&gt;- Bug fix on blueprint render in IE&lt;br /&gt;&lt;br /&gt;CCC: &lt;br /&gt;- Several bug fixes in barcharts and stacked charts&lt;br /&gt;- Implemented SVGWEB for IE rendering&lt;br /&gt;&lt;br /&gt;CDE:&lt;br /&gt;- Lots of internal changes in the way renderers work&lt;br /&gt;- Added shortcut keys to CDE (press ? to see them)&lt;br /&gt;- Fixed issue with order of execution&lt;br /&gt;- Fixed dateComponent and Added support for lastWeek and lastMonth&lt;br /&gt;- Added support for ${img:...} tags&lt;br /&gt;- Updated jquery&lt;br /&gt;- Added support for CCC in IE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INSTALLATION INSTRUCTIONS:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Copy the files in this bundle to the pentaho-solution directory. If you have any&lt;br /&gt;older versions of this files (and you'll have at least CDF) make sure you move&lt;br /&gt;them out of the way. A server restart is required.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SYSTEM REQUIREMENTS:&lt;br /&gt;&lt;br /&gt;- Pentaho 3.6 or 3.7&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download it from &lt;a href="http://www.webdetails.pt"&gt;our website&lt;/a&gt; or directly from &lt;a href="http://cdf-de.googlecode.com/files/CDE-bundle-1.0RC2.tar.bz2"&gt;googlecode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun, and don't forget to &lt;a href="imagine@webdetails.pt"&gt;email us&lt;/a&gt; if you need help in your projects, we need to buy Christmas gifts for the kids and my Xbox just died on me! ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1996300279695070154?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1996300279695070154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/11/cde-10-rc2-ready-for-test.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1996300279695070154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1996300279695070154'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/11/cde-10-rc2-ready-for-test.html' title='CDE 1.0-RC2 ready for test'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1284846308037796697</id><published>2010-11-17T11:24:00.006Z</published><updated>2010-11-17T12:22:28.062Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='cde'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Pentaho dashboards on android and iphone</title><content type='html'>Dashboards are cool. Mobile is cool. So, dashboards on mobile devices must be good, right? I usually blog a lot about very technical stuff like CDE, CDF, CCC, CDA and all the community projects webdetails as been working on for the past years. This blog post isn't technical, is just one picture showing the outcome of all the tech talk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We've been working with Mozilla for a while, and we've incorporated a lot of their values into our company - value opensource, contribute to community, adopt standards.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And being faithful to standards has its advantages. We tried to access one of our latest and greatest dashboards (like all others ;) ) with our mobiles and the result was awesome. An iphone on the left side, an android on the right (using opera, unfortunately the built-in browser doesn't support svg yet).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Powered by &lt;a href="http://www.pentaho.com/"&gt;Pentaho&lt;/a&gt;, generated with &lt;a href="http://pedroalves-bi.blogspot.com/2010/10/cde-10-rc1-available-for-download.html"&gt;CDE&lt;/a&gt; using &lt;a href="http://pedroalves-bi.blogspot.com/2010/01/cda-community-data-access.html"&gt;CDA&lt;/a&gt;, &lt;a href="http://pedroalves-bi.blogspot.com/2010/10/ccc-community-chart-components.html"&gt;CCC&lt;/a&gt;, &lt;a href="http://wiki.pentaho.com/display/COM/Community+Dashboard+Framework"&gt;CDF&lt;/a&gt; and all that jazz, made by &lt;a href="http://www.webdetails.pt/"&gt;webdetails&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/TOO70C7bLoI/AAAAAAAAAJg/Jh2x8FX4Crs/s1600/dashboards-mobile.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/TOO70C7bLoI/AAAAAAAAAJg/Jh2x8FX4Crs/s400/dashboards-mobile.jpg" alt="" id="BLOGGER_PHOTO_ID_5540478469409549954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1284846308037796697?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1284846308037796697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/11/pentaho-dashboards-on-android-and.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1284846308037796697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1284846308037796697'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/11/pentaho-dashboards-on-android-and.html' title='Pentaho dashboards on android and iphone'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/TOO70C7bLoI/AAAAAAAAAJg/Jh2x8FX4Crs/s72-c/dashboards-mobile.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3056883420542441578</id><published>2010-11-10T09:39:00.006Z</published><updated>2010-11-10T10:53:04.862Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cst'/><category scheme='http://www.blogger.com/atom/ns#' term='pentaho'/><title type='text'>CST - Community Startup Tabs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/TNppSPhjnLI/AAAAAAAAAJY/Xa8w85WCEo0/s1600/CST_wide.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/TNppSPhjnLI/AAAAAAAAAJY/Xa8w85WCEo0/s400/CST_wide.png" alt="" id="BLOGGER_PHOTO_ID_5537854453931285682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.antoniusziekenhuis.nl/"&gt;One of our customers&lt;/a&gt;, through a &lt;a href="http://www.tholis.com/"&gt;partner&lt;/a&gt;, asked us to develop a functionality extension to pentaho. We like that. In the true open source spirit, he allowed the work to be released to the Pentaho community. We love that. So here it is:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;CST - Community Startup Tabs&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;This project allows pentaho developers to define a set of rules to define which tabs will open when a user logs in to pentaho. Example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I want my financial users to open 3 tabs at start with pivot analysis, department managers to open 3 dashboards and everyone else to get the home screen&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This is possible by editing a very simple configuration file that even supports regular expressions. Try it out.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="http://sourceforge.net/projects/pentaho-cst/files/cst-1.0.tgz/download"&gt;Download&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="https://github.com/pmalves/cst"&gt;Source code&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="250"&gt;&lt;param name="movie" value="http://www.youtube.com/v/u6BEhzq67uc?fs=1&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/u6BEhzq67uc?fs=1&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="250"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3056883420542441578?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3056883420542441578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/11/cst-community-startup-tabs.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3056883420542441578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3056883420542441578'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/11/cst-community-startup-tabs.html' title='CST - Community Startup Tabs'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Yeslj5UWDbY/TNppSPhjnLI/AAAAAAAAAJY/Xa8w85WCEo0/s72-c/CST_wide.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-342372746550755973</id><published>2010-10-18T00:16:00.004+01:00</published><updated>2010-10-18T00:31:06.202+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cde'/><title type='text'>CDE 1.0-RC1 available for download!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/TLuD5WIf47I/AAAAAAAAAJE/iZACH_z6ppQ/s1600/cde-screenshot.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 249px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/TLuD5WIf47I/AAAAAAAAAJE/iZACH_z6ppQ/s400/cde-screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5529157988744422322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here it is, the news that everyone was waiting for! The 1.0-RC1 build of CDE is available for download in &lt;a href="http://www.webdetails.pt"&gt;webdetails website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The bundle consists of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Latest CDE version (inludes latest version of CCC)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Latest CDF version&lt;/li&gt;&lt;li&gt;Latest CDA version&lt;/li&gt;&lt;/ul&gt;Feel free to try it and give feedback. It's the result of over one year of development and collaborative work. And it's all opensource! Believe me when I say that you can make absolutely stunning dashboard in Pentaho with it. It has so much that I won't try to enumerate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C you soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-342372746550755973?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/342372746550755973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/10/cde-10-rc1-available-for-download.html#comment-form' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/342372746550755973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/342372746550755973'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/10/cde-10-rc1-available-for-download.html' title='CDE 1.0-RC1 available for download!'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Yeslj5UWDbY/TLuD5WIf47I/AAAAAAAAAJE/iZACH_z6ppQ/s72-c/cde-screenshot.png' height='72' width='72'/><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7086019676498658116</id><published>2010-10-07T22:03:00.004+01:00</published><updated>2010-10-07T22:10:32.646+01:00</updated><title type='text'>CCC - Community Chart Components</title><content type='html'>So many amazing stuff happened at the community meeting that we're still picking up the pieces. Lots of great presentations (if you haven't seen it yet, be sure to check Jan Aertsen's &lt;a href="http://kjube.blogspot.com/2010/09/pentaho-community-gathering-live.html"&gt;live coverage of the event&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll put some of the content we presented as we have time for it (lots of requests for a binary version of CDE, I'll take care of it asap), but I'll start with CCC&lt;br /&gt;&lt;br /&gt;Don't know what CCC is? Check the presentation:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object style="width:300px;height:225px"&gt;&lt;param name="movie" value="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf?mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true&amp;amp;documentId=100928092417-b0acce830f6c4d04aad07201780b0bd3&amp;amp;docName=pcg10_pedroalves&amp;amp;username=webdetails&amp;amp;loadingInfoText=Community%20Chart%20Components&amp;amp;et=1286485688767&amp;amp;er=41"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="menu" value="false"&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" style="width:300px;height:225px" flashvars="mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true&amp;amp;documentId=100928092417-b0acce830f6c4d04aad07201780b0bd3&amp;amp;docName=pcg10_pedroalves&amp;amp;username=webdetails&amp;amp;loadingInfoText=Community%20Chart%20Components&amp;amp;et=1286485688767&amp;amp;er=41"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="width:300px;text-align:left;"&gt;&lt;a href="http://issuu.com/webdetails/docs/pcg10_pedroalves?mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true" target="_blank"&gt;Open publication&lt;/a&gt; - Free &lt;a href="http://issuu.com/" target="_blank"&gt;publishing&lt;/a&gt; - &lt;a href="http://issuu.com/search?q=webdetails" target="_blank"&gt;More webdetails&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As usual, it's opensource, so you can check it at: http://github.com/pmalves/ccc&lt;br /&gt;&lt;br /&gt;The best way to take advantage of it is to use it with CDE, but I'll leave it for another post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cheers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7086019676498658116?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7086019676498658116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/10/ccc-community-chart-components.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7086019676498658116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7086019676498658116'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/10/ccc-community-chart-components.html' title='CCC - Community Chart Components'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1985820548732029031</id><published>2010-09-15T21:19:00.002+01:00</published><updated>2010-09-15T21:24:00.381+01:00</updated><title type='text'>Pentaho Community Gathering - Talks</title><content type='html'>Here's the presentation list for saturday -  What a great schedule&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;10h00: Doug Moran - Community update&lt;/li&gt;&lt;li&gt;10h30: Pedro Pinheiro - CDA (Community Data Access)&lt;/li&gt;&lt;li&gt;11h00: Julian Hyde - Mondrian stuff&lt;/li&gt;&lt;li&gt;11h30: Matt Casters - Dynamic Kettle&lt;/li&gt;&lt;li&gt;12h00: Aaron Phillips - Plugins and extension points&lt;/li&gt;&lt;li&gt;12h30: Nelson Sousa - CDE (Community Dashboard Editor)&lt;/li&gt;&lt;li&gt;13h00: &lt;em&gt;lunch time&lt;/em&gt;&lt;/li&gt;&lt;li&gt;14h00: Tom Barber and Paul Stoellberger - PAT&lt;/li&gt;&lt;li&gt;14h30: Jan Aertsen (with Matt) on the Kettle Franchise Framework (KFF) and much more&lt;/li&gt;&lt;li&gt;15h00: Nuno Moreira - Pentaho Dashboards. Breaking barriers&lt;/li&gt;&lt;li&gt;15h30: Jos Van Dongen - Data Mining&lt;/li&gt;&lt;li&gt;16h00: Dan (Codek) - Approaches to implementations and methodology&lt;/li&gt;&lt;li&gt;&lt;em&gt;coffee break&lt;/em&gt;&lt;/li&gt;&lt;li&gt;16h30: André Simões - PDI job/transformation framework to be used as a BI project template&lt;/li&gt;&lt;li&gt;17h00: Pedro Alves - CCC (Community Charting Components)&lt;/li&gt;&lt;li&gt;17h30: Roland Bouman - Kettle cookbook&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;We'll also have the chance of having some fun on Sunday... but I'll leave that to later&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1985820548732029031?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1985820548732029031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/09/pentaho-community-gathering-talks.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1985820548732029031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1985820548732029031'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/09/pentaho-community-gathering-talks.html' title='Pentaho Community Gathering - Talks'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1896638900331604329</id><published>2010-09-09T17:07:00.005+01:00</published><updated>2010-09-09T17:17:08.259+01:00</updated><title type='text'>Pentaho Community Gathering - Portugal. Sep 24</title><content type='html'>One image is worth a thousand words:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/TIkHOX3kPNI/AAAAAAAAAI8/NCEyWkV-wi0/s1600/Pentaho_community_tall.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 211px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/TIkHOX3kPNI/AAAAAAAAAI8/NCEyWkV-wi0/s400/Pentaho_community_tall.png" alt="" id="BLOGGER_PHOTO_ID_5514947162198523090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So here's the video  :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="272" width="448"&gt;&lt;param name="movie" value="http://www.youtube.com/v/F8NrpTMj984?fs=1&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/F8NrpTMj984?fs=1&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="272" width="448"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And the image too...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll post an updated calendar, but roughly:&lt;br /&gt;&lt;br /&gt;24 - Friday night:  meeting in Cascais for some drinks&lt;br /&gt;25 - Saturday: Presentations and drinks&lt;br /&gt;26 - Sunday morning / afternoon: Outdoor stuff for people to socialize&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cya all there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1896638900331604329?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1896638900331604329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/09/pentaho-community-gathering-portugal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1896638900331604329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1896638900331604329'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/09/pentaho-community-gathering-portugal.html' title='Pentaho Community Gathering - Portugal. Sep 24'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/TIkHOX3kPNI/AAAAAAAAAI8/NCEyWkV-wi0/s72-c/Pentaho_community_tall.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3180903227464935835</id><published>2010-08-12T23:28:00.004+01:00</published><updated>2010-08-13T00:06:31.761+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='community'/><title type='text'>Hey Pentaho Community! How are you doing?</title><content type='html'>Doug Moran, Pentaho community guy, started a &lt;a href="http://forums.pentaho.com/showthread.php?77828-Hey-Community-how-s-it-going"&gt;very interesting thread&lt;/a&gt; that got me to think a bit and give an unusually long reply. So long that I decided to copy it as a new blog post and get my weekly task done!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apparently people is always asking him&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;How's the community going?&lt;br /&gt;&lt;/blockquote&gt;followed by the inevitable&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I just saw a post that says Jasper has 150,000 community members, how big is Pentaho's community?&lt;/blockquote&gt;&lt;br /&gt;Here's my take on this:&lt;br /&gt;&lt;br /&gt;Comparing downloads is absolutely meaningless. Specially on BI, everyone  should know that numbers are only comparable when they have things in  common. You mentioned Jasper compared to Pentaho cause surely it's the  biggest comparison people ask you to do. But can you really compare the 2  of them? Take a look at the forum numbers:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Platform threads&lt;/b&gt;:&lt;br /&gt;&lt;i&gt; Jasper&lt;/i&gt;: 4k;&lt;br /&gt;&lt;i&gt; Pentaho&lt;/i&gt;: 4k&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Reporting threads:&lt;/b&gt; &lt;i&gt;&lt;br /&gt;Jasper&lt;/i&gt;: 18k (jasperreports) + 12k (ireports);&lt;br /&gt;&lt;i&gt; Pentaho&lt;/i&gt;: 8k&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Analysis threads&lt;/b&gt;:&lt;br /&gt;&lt;i&gt; Jasper&lt;/i&gt;: 300;&lt;br /&gt;&lt;i&gt; Pentaho&lt;/i&gt;: 5k (forums) + 1k (mailing list)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ETL threads&lt;/b&gt;:&lt;br /&gt;&lt;i&gt; Jasper&lt;/i&gt;: 250;&lt;br /&gt;&lt;i&gt; Pentaho&lt;/i&gt;: 10k&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dashboard threads&lt;/b&gt;:&lt;br /&gt; &lt;i&gt; Jasper&lt;/i&gt;: - ;&lt;br /&gt; &lt;i&gt; Pentaho&lt;/i&gt;: 1k&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other threads&lt;/b&gt;:&lt;br /&gt;  &lt;i&gt; Jasper&lt;/i&gt;: - ;&lt;br /&gt;  &lt;i&gt; Pentaho&lt;/i&gt;: A lot&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyone looking at this numbers can immediately tell that we have, on one  side, a BI Tool and on the other a Reporting tool. Why compare  different things?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Going back the the main question, I have a suggestion. Next time someone asks you &lt;i&gt;"how's the community doing?"&lt;/i&gt;, instead of answering, why don't you:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Invite them to go to &lt;b&gt;Portugal&lt;/b&gt; in September to the  community meeting. A pentaho meeting usually sponsored by the community  itself and with people all over the world? Assuming, of course, they  missed the one in &lt;b&gt;Barcelona 2009&lt;/b&gt; or in &lt;b&gt;Mainz 2008&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Send them the links to some project made by the community, I currently can think of...&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/pentaho-cdf/" target="_blank"&gt;CDF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/pentahoanalysistool/" target="_blank"&gt;PAT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/xmla4js/" target="_blank"&gt;Xmla4Js&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/pentaho-cda/" target="_blank"&gt;CDA&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/COM/CBF+-+Community+Build+Framework" target="_blank"&gt;CBF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://pedroalves-bi.blogspot.com/2009/09/cdf-dashboard-editor-want-test-drive.html" target="_blank"&gt;CDE&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.spagoworld.org/xwiki/bin/view/GeoBI/" target="_blank"&gt;GeoBI&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Ask them to join the ##pentaho irc channel on freenode that usually has around 50 simultaneous users&lt;/li&gt;&lt;li&gt;Tell them to read a bit... Suggest authors like Jos Van Dongen, Roland Bouman or Maria Roldan&lt;/li&gt;&lt;li&gt;Visit &lt;a href="http://br.groups.yahoo.com/group/pentahobr/" target="_blank"&gt;other countries&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Or if they have a computer, why not read some blogs?&lt;ul&gt;&lt;li&gt;to &lt;a href="http://pedroalves-bi.blogspot.com/" target="_blank"&gt;get their eyes on pentaho,&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://pentahomusings.blogspot.com/" target="_blank"&gt;musing about what the community is doing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;from &lt;a href="http://www.nicholasgoodman.com/bt/blog/" target="_blank"&gt;gurus&lt;/a&gt;, &lt;a href="http://www.nicholasgoodman.com/bt/blog/" target="_blank"&gt;geeks&lt;/a&gt;, &lt;a href="http://www.tholis.com/blog/" target="_blank"&gt;consultants&lt;/a&gt; or &lt;a href="http://daniele.livejournal.com/" target="_blank"&gt;hackers&lt;/a&gt; to&lt;/li&gt;&lt;li&gt;&lt;a href="http://anchavesb.blogspot.com/" target="_blank"&gt;many&lt;/a&gt; &lt;a href="http://www.hazamonzo.co.uk/" target="_blank"&gt;others&lt;/a&gt; that will &lt;a href="https://itxpander.wordpress.com/" target="_blank"&gt;guarantee&lt;/a&gt; a &lt;a href="http://diethardsteiner.blogspot.com/" target="_blank"&gt;good&lt;/a&gt; &lt;a href="http://www.mariacarinaroldan.blogspot.com/" target="_blank"&gt;reading.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;So just let them &lt;a href="http://ramathoughts.blogspot.com/" target="_blank"&gt;think&lt;/a&gt; about it and draw their conclusions&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I'd say the community is doing very well, thank you, and tell them we send our best regards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3180903227464935835?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3180903227464935835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/08/hey-pentaho-community-how-are-you-doing.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3180903227464935835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3180903227464935835'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/08/hey-pentaho-community-how-are-you-doing.html' title='Hey Pentaho Community! How are you doing?'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7474434328923091512</id><published>2010-08-10T16:40:00.005+01:00</published><updated>2010-08-10T17:10:00.908+01:00</updated><title type='text'>Better reports on dashboards</title><content type='html'>We now have an easier/better way to get reports in our dashboards without hacking with xactions. 2 components to help with this:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;prptComponent&lt;/li&gt;&lt;li&gt;executePrptComponent&lt;/li&gt;&lt;/ul&gt;The first one isn't actually new, but a new option was added called "iframe". When set to true, behaves like the default:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/TGF2cCZv6eI/AAAAAAAAAIE/sWSwYf7CwpU/s1600/prpt1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 170px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/TGF2cCZv6eI/AAAAAAAAAIE/sWSwYf7CwpU/s400/prpt1.png" alt="" id="BLOGGER_PHOTO_ID_5503810443676740066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When set to false, the report get's embedded smoothly into the dashboard inside the htmlObject, thanks to a special mode that &lt;a href="http://www.sherito.org/"&gt;Thomas Morgner&lt;/a&gt; implemented.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/TGF4wEu-NiI/AAAAAAAAAIM/zvoaKl64VeM/s1600/prpt2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/TGF4wEu-NiI/AAAAAAAAAIM/zvoaKl64VeM/s400/prpt2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5503812986923267618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The other component is very similar to the executeXaction, but for reports. Now we don't need to create a new xaction just to launch the report. Just pointing to the .prpt will do the same.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's the button:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/TGF5kpvhNMI/AAAAAAAAAIU/bpymvLlQ7_Q/s1600/prpt3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 234px; height: 134px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/TGF5kpvhNMI/AAAAAAAAAIU/bpymvLlQ7_Q/s400/prpt3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5503813890210870466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And the expected result:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/TGF5tQB0I7I/AAAAAAAAAIc/70KSllA9LB0/s1600/prpt4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/TGF5tQB0I7I/AAAAAAAAAIc/70KSllA9LB0/s400/prpt4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5503814037927109554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ttfn!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7474434328923091512?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7474434328923091512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/08/better-reports-on-dashboards.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7474434328923091512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7474434328923091512'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/08/better-reports-on-dashboards.html' title='Better reports on dashboards'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Yeslj5UWDbY/TGF2cCZv6eI/AAAAAAAAAIE/sWSwYf7CwpU/s72-c/prpt1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-859025841671136308</id><published>2010-08-04T15:24:00.004+01:00</published><updated>2010-08-06T11:23:46.191+01:00</updated><title type='text'>Persistence options in CDF dashboards</title><content type='html'>This is something insanely useful that's been in the todo list for ages. Now, thanks to our &lt;span style="font-weight:bold;"&gt;CDI&lt;/span&gt; methodology (CDI as in Customer Driven Improvement, not yet another project :) ) it's there already.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The principle is simple: You access a dashboard, define a set of filters that leads you to your favorite view. Next time you access the same one (or just do a refresh) you need to start all over again? Not anymore.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we can easily tell CDF to remember the options set by the user. Let's take the SelectComponent example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; regionSelector = &lt;br /&gt; {&lt;br /&gt;  name: "regionSelector",&lt;br /&gt;  type: "select",&lt;br /&gt;  parameters:[],&lt;br /&gt;  valuesArray:[["1","Lisbon"],["2","Dusseldorf"]],&lt;br /&gt;  parameter:"region",&lt;br /&gt;  valueAsId: false,&lt;br /&gt;  htmlObject: "sampleObject",&lt;br /&gt;  executeAtStart: true,&lt;br /&gt;  postChange: function(){alert("You chose: " + region);}&lt;br /&gt; };&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This gives you the standard, boring yet most useful select component. Now, what changes are required for the user to see the last option he selected the next time he accesses the dashboard? Marked in bold:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; regionSelector = &lt;br /&gt; {&lt;br /&gt;  name: "regionSelector",&lt;br /&gt;  type: "select",&lt;br /&gt;  parameters:[],&lt;br /&gt;  valuesArray:[["1","Lisbon"],["2","Dusseldorf"]],&lt;br /&gt;  parameter:"&lt;b&gt;Dashboards.storage.region&lt;/b&gt;",&lt;br /&gt;  valueAsId: false,&lt;br /&gt;  htmlObject: "sampleObject",&lt;br /&gt;  executeAtStart: true,&lt;br /&gt;  postChange: function(){&lt;b&gt;Dashboards.saveStorage()&lt;/b&gt;; alert("You chose: " + &lt;b&gt;Dashboards.storage.region&lt;/b&gt;);}&lt;br /&gt; };&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And now, if the user selects Dusseldorf, this is what he'll see the next time he accesses that dashboard:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img716.imageshack.us/img716/3231/screenshotyo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 230px; height: 130px;" src="http://img716.imageshack.us/img716/3231/screenshotyo.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No need to say that this can be used for a lot more than simple selectors - up to your imagination.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Can this get any easier?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-859025841671136308?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/859025841671136308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/08/persistence-options-in-cdf-dashboards.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/859025841671136308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/859025841671136308'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/08/persistence-options-in-cdf-dashboards.html' title='Persistence options in CDF dashboards'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4002460232124937514</id><published>2010-06-18T23:37:00.003+01:00</published><updated>2010-06-19T00:00:46.763+01:00</updated><title type='text'>A different dashboard</title><content type='html'>There are some well known rules to follow when building dashboards:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;They have to display accurate information&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Fit in the environment&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Fast&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Fun&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Bug free&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We almost got a hit, but failed on the last item. Too many bugs on the windshield ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="440" height="264"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lE53T2unmP0&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lE53T2unmP0&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="440" height="264"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4002460232124937514?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4002460232124937514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/06/different-dashboard.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4002460232124937514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4002460232124937514'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/06/different-dashboard.html' title='A different dashboard'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2259947408989938041</id><published>2010-06-10T22:36:00.009+01:00</published><updated>2010-06-11T00:50:00.513+01:00</updated><title type='text'>FirefoxCup - Let the world cup begin!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.mozilla.com/files/2010/06/FirefoxCup_logo2-300x299.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 299px;" src="http://blog.mozilla.com/files/2010/06/FirefoxCup_logo2-300x299.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.fifa.com/"&gt;World Cup&lt;/a&gt; is here. Portugal may be going through a big financial crisis (just like in the last 10 years, we're actually used to it) but for the next month all of that will be forgotten: It's soccer time!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I may not influence how my team plays in field, but fortunately Mozilla started &lt;a href="https://addons.mozilla.org/en-US/firefoxcup/"&gt;Firefox Cup&lt;/a&gt;, where I can, indeed, be a player in the field.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img class="persona-preview" src="https://addons.mozilla.org/media//img/firefoxcup/flags/portugal.png" alt="Flag"  /&gt; &lt;a href="http://www.getpersonas.com/en-US/persona/216635"&gt;&lt;span style="font-weight:bold;"&gt;GO, PORTUGAL!!&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;What does this have to do with BI?&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Well, actually, a lot! It's a well known fact - mainly because I keep repeating it proudly :) ) that &lt;a href="http://www.webdetails.pt"&gt;we&lt;/a&gt; are part of the &lt;a href="http://blog.mozilla.com/metrics/"&gt;mozilla metrics team&lt;/a&gt;. And turns out that my alter-ego, pedro@mozilla.com, is in some sense the referee of this tournament!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/TBF0ATMcWyI/AAAAAAAAAHk/zwtz3zRaWIs/s1600/personas-results.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 127px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/TBF0ATMcWyI/AAAAAAAAAHk/zwtz3zRaWIs/s400/personas-results.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5481289769987889954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a screenshot of the &lt;a href="https://addons.mozilla.org/en-US/firefoxcup/"&gt;current score&lt;/a&gt; of the tournament. And where do those numbers come from? From the analysis of the logs generated by (much) more than &lt;span style="font-weight:bold;"&gt;one hundred million firefox users&lt;/span&gt; daily. This translates into the analysis of a few gigabytes of logs that are generated every hour. Through a somewhat complex and fine-tuned etl process, we are able to get all relevant data into a datawarehouse and, not more than 4 hours after midnight, be able to provide the accurate usage number for each of the existing 150k personas. Here's the current Portugal persona chart:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/TBF2tdtyIFI/AAAAAAAAAHs/u3Zw8_qq-_Y/s1600/personas-portugal.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 169px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/TBF2tdtyIFI/AAAAAAAAAHs/u3Zw8_qq-_Y/s400/personas-portugal.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5481292744929452114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This numbers are then integrated into the &lt;a href="https://addons.mozilla.org/en-US/firefox/"&gt;Firefox Addons&lt;/a&gt; databases and are available for the world to see. In case you're noticing the discrepancy between the values in both of the charts, it's easily explainable - the number of users on the addons page is the 7 day rolling average, to prevent the "weekend effect', making the curve much smoother than just printing "yesterday's number"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And it's absolutely amazing the amount of cool analysis that we can do on this subject, and we hope to be helping the personas' team driving their strategy!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/TBF4mmqqRdI/AAAAAAAAAH0/OjEnIrg90D8/s1600/personas.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 217px; height: 400px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/TBF4mmqqRdI/AAAAAAAAAH0/OjEnIrg90D8/s400/personas.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5481294826096444882" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2259947408989938041?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2259947408989938041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/06/firefoxcup-let-world-cup-begin.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2259947408989938041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2259947408989938041'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/06/firefoxcup-let-world-cup-begin.html' title='FirefoxCup - Let the world cup begin!'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/TBF0ATMcWyI/AAAAAAAAAHk/zwtz3zRaWIs/s72-c/personas-results.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-632266622153752491</id><published>2010-06-04T17:08:00.002+01:00</published><updated>2010-06-04T17:36:31.260+01:00</updated><title type='text'>It's time! CDA 1.0 is available</title><content type='html'>And it's done! We finally released version 1.0 of CDA - Community Data Access. Despite the "1.0" version, we've been using this in production environment on our clients for a while now, and I can assure it's very stable!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've talked enough about CDA (and I feel so tired about this release that I can't really find anything to say). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Get it at &lt;a href="http://www.webdetails.pt"&gt;webdetails site&lt;/a&gt;, and have fun. Every feedback is appreciated! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And for the ones that still don't know what exactly CDA is about, we've made this presentation for you:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object style="width:420px;height:274px" &gt;&lt;param name="movie" value="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf?mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true&amp;amp;documentId=100604111953-97965638584d4421939af3fa2dcc589a&amp;amp;docName=cda&amp;amp;username=webdetails&amp;amp;loadingInfoText=CDA%20Community%20%20Data%20Access&amp;amp;et=1275667934193&amp;amp;er=23" /&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="menu" value="false"/&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" style="width:420px;height:274px" flashvars="mode=embed&amp;amp;viewMode=presentation&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Flight%2Flayout.xml&amp;amp;showFlipBtn=true&amp;amp;documentId=100604111953-97965638584d4421939af3fa2dcc589a&amp;amp;docName=cda&amp;amp;username=webdetails&amp;amp;loadingInfoText=CDA%20Community%20%20Data%20Access&amp;amp;et=1275667934193&amp;amp;er=23" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ps:  &lt;span style="font-style:italic;"&gt;For the ones asking: is this really opensource? What's the catch? There are no free lunches...  You're right, there aren't. We have an evil plan: Convince you that we are able to do quality work and that we are the perfect partners for your Pentaho implementation. &lt;a href="mailto:imagine@webdetails.pt"&gt;Email us&lt;/a&gt; :)  &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-632266622153752491?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/632266622153752491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/06/its-time-cda-10-is-available.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/632266622153752491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/632266622153752491'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/06/its-time-cda-10-is-available.html' title='It&apos;s time! CDA 1.0 is available'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3522178186597027013</id><published>2010-05-31T17:50:00.004+01:00</published><updated>2010-05-31T18:21:08.425+01:00</updated><title type='text'>Coming soon: CDA 1.0</title><content type='html'>A CDA teaser, made by our team. Hope you enjoy it!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="440" height="264"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Uh02LASXnVc&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Uh02LASXnVc&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="440" height="264"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3522178186597027013?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3522178186597027013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/05/coming-soon-cda-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3522178186597027013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3522178186597027013'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/05/coming-soon-cda-10.html' title='Coming soon: CDA 1.0'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3823547729105778320</id><published>2010-05-26T01:23:00.006+01:00</published><updated>2010-05-26T09:10:14.903+01:00</updated><title type='text'>Pentaho reports by email - with steroids</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/S_xqKTf33QI/AAAAAAAAAG0/-XIuL9wAw68/s1600/pdfreport.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 354px; height: 400px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/S_xqKTf33QI/AAAAAAAAAG0/-XIuL9wAw68/s400/pdfreport.png" alt="" id="BLOGGER_PHOTO_ID_5475367972240874754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Most people don't know this but there's an hidden gem inside &lt;a href="http://www.pentaho.com/"&gt;Pentaho&lt;/a&gt; 3.5 (and the soon to be released 3.6);&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The ability to send a report by email ...&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Nothing new so far?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;... with all images and resources inline&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So no more of being forced to send pdf attachments in boring text or html emails, or the need to have your pentaho server accessible in the www. Pretty cool, hein?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Did you just said you like the pdf attachments?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;You can still send your pdf attachments with the html email!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And I'm not done yet! Want to impress your friends of the other company by receiving yesterday's sales report on your smartphone while having breakfast?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Just render a text version of that report&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and it'll automagically generate a mime/alternate email message and your email client will chose the best format to display the information to you&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You didn't know this was possible? It's all in there. More than one and a half year's ago &lt;a href="http://jira.pentaho.com/browse/BISERVER-1957"&gt;we developed a bunch of patches&lt;/a&gt; to allow this. And why? Because one of our customers wanted this feature. &lt;i&gt;&amp;lt;shamelessplug&amp;gt; And that's what we do, develop cool stuff for our customers&amp;lt;/shamelessplug&amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We added:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* A new repository implementation was built to allow the generation of a mime-message directly from the jfreereport engine (with &lt;a href="http://www.sherito.org/"&gt;Thomas Morgner&lt;/a&gt;'s help, of course)&lt;br /&gt;&lt;br /&gt;* A patch to the reporting plugin to add a new supported output-type 'email'&lt;br /&gt;&lt;br /&gt;* Support to the text output in the reporting plugin&lt;br /&gt;&lt;br /&gt;* A SimpleEmailComponent POJO that sends the emails&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The existing action to send emails is very limiting, so we had to develop a new one. Pentaho guys allowed this to be commited along with the reporting plugin. We all agree that the BI suite need a full-featured email component so this POJO will eventually be moved out of the reporting plugin. But until that happens - hey, let's use it!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;nuff said; Want to see this working? We stored on &lt;a href="http://www.webdetails.pt/"&gt;webdetails site&lt;/a&gt; an archive of &lt;a href="http://www.webdetails.pt/resources/webdetails-emailsample.zip"&gt;all the necessary files&lt;/a&gt;. Unzip it to your pentaho solution folder of choice, see how it works and feel free to play with it!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3823547729105778320?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3823547729105778320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/05/pentaho-reports-by-email-with-steroids.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3823547729105778320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3823547729105778320'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/05/pentaho-reports-by-email-with-steroids.html' title='Pentaho reports by email - with steroids'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Yeslj5UWDbY/S_xqKTf33QI/AAAAAAAAAG0/-XIuL9wAw68/s72-c/pdfreport.png' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3286595915780757644</id><published>2010-05-10T20:54:00.004+01:00</published><updated>2010-05-10T23:37:26.455+01:00</updated><title type='text'>Pentaho 3.2 Data Integration: Beginner's Guide (not after reading the book)</title><content type='html'>&lt;a href="http://www.packtpub.com/pentaho-3-2-data-integration-beginners-guide/book?utm_source=pedroalves-bi.blogspot.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_003041"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 195px; height: 240px;" src="http://2.bp.blogspot.com/_6_haCewhXIo/S8DGfXUWbGI/AAAAAAAAAAc/cCPpbJsyroA/S240/cover.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.packtpub.com/pentaho-3-2-data-integration-beginners-guide/book?utm_source=pedroalves-bi.blogspot.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_003041"&gt;This book&lt;/a&gt; was a total surprise. Though I've known &lt;a href="http://www.mariacarinaroldan.blogspot.com/"&gt;Maria Roldan&lt;/a&gt;'s work for a while as a very valuable community member - she wrote an excellent &lt;a href="http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+%28Kettle%29+Tutorial"&gt;kettle tutorial in the wiki&lt;/a&gt;  and by her participations in Portuguese and Spanish pentaho communities, but didn't know she was working on the book. Which is a very good sign for this very large and active community.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The contents of this book are also surprising.  I wasn't expecting to find a chapter called "Working with databases" in #8 of the list. When working with kettle and the rest of the pentaho suite on a daily basis, building and populating large datawarehouses, you almost expect that to be first on the list. (By the way, the datawarehouse subject comes in chapter 12).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Odd? Well, not if you go through the book and think about it for a bit. Pentaho Data Integration (PDI) is not a tool to build datawarehouses and that can be used to other data integration tasks. PDI is an amazing tool to do &lt;span style="font-weight:bold;"&gt;any kind of data handling&lt;/span&gt;, involving datawarehouses or not, involving databases or not. Since it's great for any data handling, if course it's also great for the subset of data warehouse management. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And I think this is the main message Maria Roldan wants to pass. Forget perl hacks, forget homegrown shell scripts, please, don't write yet another stored procedure that will make you (or the poor guy after you) go nuts when it comes the time to support it. Just use kettle. You'll find a lot of screenshots with accurate explanations making this book very lightweight to read. You can even take it while on travel/vacations and you'll be able to understand it even without further experiments.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This book can bring anyone up to date with Kettle very fast. The first chapter is all about installation procedures. Chapters 2 and 10 describe all the concepts everyone needs to know about transformations and jobs. All the others are clearly the result of someone that spent a lot of time working with the tool. There are brief descriptions of a large number of steps used in real world examples and chapters that dedicate entirely to very important subjects: Data validation and error handling (chapter 7), transforming the rowset (chapter 6) and how to connect it all with the appropriate task flows (chapters 10 and 11)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But my favorite chapter is number 5 - The javascript chapter. When most of the experts in kettle will say &lt;span style="font-style:italic;"&gt;avoid the javascript step at all costs&lt;/span&gt;, Maria dedicated an entire chapter to it. I love javascript and I love the javascript step (that's right &lt;a href="http://www.sherito.org/"&gt;Thomas&lt;/a&gt;, regardless of your complains). When used right, it can save your day - true, it can also ruin your transformation if you're not cautious. It will definitely slow your transformation down, &lt;a href="http://daniele.livejournal.com/78409.html"&gt;and if you're an ETL God you'll look for other alternatives&lt;/a&gt;. But for almost other situations in the mortals world where we have other bottlenecks to worry about just use this step!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Summing it all up, if you need to take bits and bytes from point A to point B, just &lt;a href="http://www.packtpub.com/pentaho-3-2-data-integration-beginners-guide/book?utm_source=pedroalves-bi.blogspot.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_003041"&gt;buy the book&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;ps: I support the home team, and as such I'm biased towards &lt;a href="http://www.pentaho.com"&gt;Pentaho&lt;/a&gt; just like I'm biased towards &lt;a href="http://www.mozilla.com"&gt;Mozilla&lt;/a&gt; or my team at &lt;a href="http://www.webdetails.pt"&gt;WebDetails&lt;/a&gt; but I'm not doing that in regards to this review. The proof that I enjoyed this book and all the hard work behind it is that as soon as I saw &lt;a href="http://twitter.com/mariacroldan/status/12916669763"&gt;this&lt;/a&gt; twitter message I acted as fast as I could and now Maria Roldan is officially a member of the WebDetails team. Welcome Cari!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3286595915780757644?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3286595915780757644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/05/pentaho-32-data-integration-beginners.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3286595915780757644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3286595915780757644'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/05/pentaho-32-data-integration-beginners.html' title='Pentaho 3.2 Data Integration: Beginner&apos;s Guide (not after reading the book)'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6_haCewhXIo/S8DGfXUWbGI/AAAAAAAAAAc/cCPpbJsyroA/s72-c/cover.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6877518744966472160</id><published>2010-04-23T12:23:00.001+01:00</published><updated>2010-04-23T12:25:01.701+01:00</updated><title type='text'>Pentaho Community WebEx - Slides and recording</title><content type='html'>For whoever is interested, the slides for the presentation are available &lt;a href="http://wiki.pentaho.com/download/attachments/14849882/cda-web1.pdf?version=1"&gt;here&lt;/a&gt; and the recording can be seen &lt;a href="http://wiki.pentaho.com/display/COM/Community+Technical+WebEx"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6877518744966472160?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6877518744966472160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/04/pentaho-community-webex-slides-and.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6877518744966472160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6877518744966472160'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/04/pentaho-community-webex-slides-and.html' title='Pentaho Community WebEx - Slides and recording'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7142704515921506625</id><published>2010-04-20T17:42:00.004+01:00</published><updated>2010-04-20T17:46:25.180+01:00</updated><title type='text'>Pentaho Community WebEx - CDA. April 21st</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/S83ZkIaU6cI/AAAAAAAAAGs/imzuh5bJYbQ/s1600/web-conferencing.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/S83ZkIaU6cI/AAAAAAAAAGs/imzuh5bJYbQ/s1600/web-conferencing.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5462261137826703810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Don't miss: Check details &lt;a href="http://wiki.pentaho.com/display/COM/Community+Technical+WebEx"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7142704515921506625?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7142704515921506625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/04/pentaho-community-webex-cda-april-21st.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7142704515921506625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7142704515921506625'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/04/pentaho-community-webex-cda-april-21st.html' title='Pentaho Community WebEx - CDA. April 21st'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Yeslj5UWDbY/S83ZkIaU6cI/AAAAAAAAAGs/imzuh5bJYbQ/s72-c/web-conferencing.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2864999325910390465</id><published>2010-04-15T12:42:00.003+01:00</published><updated>2010-04-15T12:52:56.463+01:00</updated><title type='text'>Pentaho, CDF, CDA, &lt;Our Dashboard Editor&gt;, Protovis</title><content type='html'>One image is worth more than 1000 words. We're still experimenting but getting better and better at it. And we're soooo proud of it :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We're giving more and more priority to layout, usability and interactivity (which doesn't imply flashy or animated stuff, on the contrary) and the feedback has been amazing so far.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/S8b8WUTHcaI/AAAAAAAAAGk/8CxOUPIGPjY/s1600/pv.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/S8b8WUTHcaI/AAAAAAAAAGk/8CxOUPIGPjY/s320/pv.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5460329058569515426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;ps: All the stunts I blog about are used in production before a live audience. Please don't try this at home&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2864999325910390465?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2864999325910390465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/04/pentaho-cdf-cda-dashboard-editor.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2864999325910390465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2864999325910390465'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/04/pentaho-cdf-cda-dashboard-editor.html' title='Pentaho, CDF, CDA, &amp;lt;Our Dashboard Editor&amp;gt;, Protovis'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/S8b8WUTHcaI/AAAAAAAAAGk/8CxOUPIGPjY/s72-c/pv.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5665205736192029791</id><published>2010-03-19T18:06:00.012Z</published><updated>2010-03-19T19:08:30.535Z</updated><title type='text'>Pentaho Analysis Tools - When all the pieces come together</title><content type='html'>The &lt;a href="http://code.google.com/p/pentahoanalysistool/"&gt;PAT&lt;/a&gt; project, by &lt;a href="http://pentahomusings.blogspot.com/"&gt;Tom Barber&lt;/a&gt; and &lt;a href="http://twitter.com/pstoellberger"&gt;Paul Stöllberger&lt;/a&gt; is coming along quite nicely. Expect it to be in a state that will replace jpivot very soon as the main olap viewer of the &lt;a href="http://www.pentaho.com"&gt;Pentaho BI Suite&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And the best thing is that they got to a point that they're not looking to it's own development but to the surrounding environment too. And it's great to see it connecting to the surrounding environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's what will happen everyone in a very near future.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;I want to make a dashboard out of this query&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;No problem. We just need to follow this steps:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Access your Pentaho installation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Use PAT to access your datasources&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pat is already working as a plugin in the pentaho platform. A great step to make a prototype project into something that everyone's waiting for - a replacement for jpivot. Analyzer plugin is great but only available in EE, so the ecosystem is providing a (great) solution to this issue.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Build your query and export it as a CDA file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/S6PGetNwKhI/AAAAAAAAAGE/n70y3x2dcrI/s1600-h/pat.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 165px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/S6PGetNwKhI/AAAAAAAAAGE/n70y3x2dcrI/s320/pat.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5450418204884085266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Open the CDF Dashboard Editor and load your CDA query&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/S6PHL31_QJI/AAAAAAAAAGM/-SZXg_nMPwk/s1600-h/cda.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 189px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/S6PHL31_QJI/AAAAAAAAAGM/-SZXg_nMPwk/s320/cda.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5450418980831314066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Design the rest of the dashboard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/S6PIlmT0HuI/AAAAAAAAAGU/zobTD0ChD4c/s1600-h/editor.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 195px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/S6PIlmT0HuI/AAAAAAAAAGU/zobTD0ChD4c/s320/editor.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5450420522312802018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6. Enjoy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/S6PKSH1Rs3I/AAAAAAAAAGc/GedgxEFv-uo/s1600-h/pat-dashboard.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 216px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/S6PKSH1Rs3I/AAAAAAAAAGc/GedgxEFv-uo/s320/pat-dashboard.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5450422386737394546" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5665205736192029791?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5665205736192029791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/03/pentaho-analysis-tools-when-all-pieces.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5665205736192029791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5665205736192029791'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/03/pentaho-analysis-tools-when-all-pieces.html' title='Pentaho Analysis Tools - When all the pieces come together'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Yeslj5UWDbY/S6PGetNwKhI/AAAAAAAAAGE/n70y3x2dcrI/s72-c/pat.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6806607426616947304</id><published>2010-03-12T01:05:00.004Z</published><updated>2010-03-12T01:28:48.777Z</updated><title type='text'>Sneak peak into the... present</title><content type='html'>What happens when we join great people and great technology? Hot stuff!! Here's a screenshot of a new dashboard that &lt;a href="http://www.webdetails.pt"&gt;WebDetails&lt;/a&gt; team developed with and for &lt;a href="http://www.mozilla.com"&gt;Mozilla Corporation&lt;/a&gt; for quickly monitoring ETL errors and alerts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/S5mUBOOncBI/AAAAAAAAAF8/3ouAB19IZcc/s1600-h/blog.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 245px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/S5mUBOOncBI/AAAAAAAAAF8/3ouAB19IZcc/s320/blog.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5447547973001506834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some months ago we could only dream of producing this kind of stuff. &lt;a href="http://www.pentaho.com"&gt;Pentaho&lt;/a&gt; as the engine, &lt;a href="http://pedroalves-bi.blogspot.com/2010/01/cda-community-data-access.html"&gt;CDA&lt;/a&gt; for data access, &lt;a href="http://code.google.com/p/pentaho-cdf/"&gt;CDF&lt;/a&gt; for the visualization engine, charts rendered by &lt;a href="http://vis.stanford.edu/protovis/"&gt;protovis&lt;/a&gt; and deployed by &lt;a href="http://wiki.pentaho.com/display/COM/CBF+-+Community+Build+Framework"&gt;CBF&lt;/a&gt;, what do we get? Total Control!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The cool stuff about all this? All is open source. The not so cool stuff about all this? Sometimes putting all the pieces together is not easy, requires some of experience, expertise and imagination. (&lt;span style="font-style:italic;"&gt;And guess what, we actually have all that, so if you want to have this kind of stuff too, why don't you just &lt;a href="http://www.webdetails.pt"&gt;contact us&lt;/a&gt;? ;)&lt;/span&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6806607426616947304?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6806607426616947304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/03/sneak-peak-into-present.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6806607426616947304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6806607426616947304'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/03/sneak-peak-into-present.html' title='Sneak peak into the... present'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Yeslj5UWDbY/S5mUBOOncBI/AAAAAAAAAF8/3ouAB19IZcc/s72-c/blog.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8854223907707472752</id><published>2010-03-05T12:57:00.005Z</published><updated>2010-03-05T13:24:37.746Z</updated><title type='text'>Interacting with the TableComponent</title><content type='html'>It's been usual to see someone &lt;a href="http://forums.pentaho.org/showthread.php?t=75219"&gt;asking for interaction&lt;/a&gt; with the TableComponent in CDF. While it's true that we don't support that out of the box, it's incredibly easy to add it. Well, maybe not incredibly easy to everyone, but that's what blogs are for :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To achieve that we'll use the amazingly useful postExecution function. It allows us to execute whatever we want after the component is rendered. Since CDF internally uses &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt; we have almost no restrictions to what we can do.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We'll use the &lt;a href="http://api.jquery.com/bind/"&gt;bind&lt;/a&gt; and &lt;a href="http://api.jquery.com/ive/"&gt;live&lt;/a&gt; functions of jquery. Let's define our click function:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;var clickFunction = function(){&lt;br /&gt; alert("You clicked on: " + $(this).text())&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And in our postExecution we'll add a call for it. I'll use the sample in the documentation&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;var topTenCustomers =&lt;br /&gt; {&lt;br /&gt;  name: "topTenCustomers",&lt;br /&gt;  type: "tableComponent",&lt;br /&gt;  chartDefinition: MetaLayerHome2.topTenCustomerDefinition,&lt;br /&gt;  htmlObject: "sampleObject",&lt;br /&gt;  executeAtStart: true,&lt;br /&gt;  postExecution: function(){&lt;br /&gt;   var cols = $("#sampleObject td:nth-child(1)");&lt;br /&gt;   cols.die("click");&lt;br /&gt;   cols.live("click",clickFunction);&lt;br /&gt;  }&lt;br /&gt; };&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Some explanations. With the help of &lt;a href="http://api.jquery.com/category/selectors/"&gt;selectors&lt;/a&gt; we selected every first row (index on nth-child starts at 1). We can select whatever column(s) we want. Then I attached the clickFunction to the click event on those cells.&lt;br /&gt;&lt;br /&gt;The reason I used &lt;span style="font-style: italic;"&gt;live&lt;/span&gt; instead of &lt;span style="font-style: italic;"&gt;bind&lt;/span&gt; is subtle - this way, when we change pages or filter within our component it will still work.&lt;br /&gt;&lt;br /&gt;And that's it. In a real-world scenario we'd probably replace the alert() with something like the Dashboards.fireChange function like we do in charts, but you get the idea.&lt;br /&gt;&lt;br /&gt;Of course we can play a bit around this idea. Here's my final alternative to the tablecomponent component reference example:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;var MetaLayerHome2 = {&lt;br /&gt; topTenCustomerDefinition: {&lt;br /&gt;  colHeaders: ["Customers","Sales"],&lt;br /&gt;  colTypes: ['string','numeric'],&lt;br /&gt;  colFormats: [null,'%.0f'],&lt;br /&gt;  queryType: 'mdx',&lt;br /&gt;  displayLength: 5,&lt;br /&gt;&lt;br /&gt;  catalog: 'solution:steel-wheels/analysis/steelwheels.mondrian.xml',&lt;br /&gt;  jndi: "SampleData",&lt;br /&gt;  query: function(){&lt;br /&gt;&lt;br /&gt;   var query = "select NON EMPTY {[Measures].[Sales]} ON COLUMNS,"+&lt;br /&gt;    " NON EMPTY TopCount([Customers].[All Customers].Children, 10.0, [Measures].[Sales]) " +&lt;br /&gt;    " ON ROWS from [SteelWheelsSales]"&lt;br /&gt;   return query;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;var mouseoverFunction = function(){&lt;br /&gt; var oldColor = $(this).css("color");&lt;br /&gt; $(this).data("oldColor",oldColor);&lt;br /&gt; $(this).css("color","red");&lt;br /&gt; $(this).css("cursor","pointer");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var mouseoutFunction = function(){&lt;br /&gt; $(this).css("color",$(this).data("oldColor"));&lt;br /&gt; $(this).css("cursor","default");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var clickFunction = function(){&lt;br /&gt; alert("You clicked on: " + $(this).text())&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var topTenCustomers =&lt;br /&gt; {&lt;br /&gt;  name: "topTenCustomers",&lt;br /&gt;  type: "tableComponent",&lt;br /&gt;  chartDefinition: MetaLayerHome2.topTenCustomerDefinition,&lt;br /&gt;  htmlObject: "sampleObject",&lt;br /&gt;  executeAtStart: true,&lt;br /&gt;  postExecution: function(){&lt;br /&gt;   var cols = $("#sampleObject td:nth-child(1)");&lt;br /&gt;   cols.die("click");&lt;br /&gt;   cols.die("mouseover");&lt;br /&gt;   cols.die("mouseout");&lt;br /&gt;   cols.live("click",clickFunction);&lt;br /&gt;   cols.live("mouseover",mouseoverFunction);&lt;br /&gt;   cols.live("mouseout",mouseoutFunction);&lt;br /&gt;  }&lt;br /&gt; };&lt;br /&gt;Dashboards.init([topTenCustomers]);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8854223907707472752?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8854223907707472752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/03/interacting-with-tablecomponent.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8854223907707472752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8854223907707472752'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/03/interacting-with-tablecomponent.html' title='Interacting with the TableComponent'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8252198481135338059</id><published>2010-01-29T15:51:00.008Z</published><updated>2010-02-01T11:55:23.004Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cda'/><title type='text'>CDA - Community Data Access</title><content type='html'>It's not &lt;a href="http://wiki.pentaho.com/display/COM/CBF+-+Community+Build+Framework"&gt;CBF&lt;/a&gt;. It's not &lt;a href="http://wiki.pentaho.com/display/COM/Community+Dashboard+Framework"&gt;CDF&lt;/a&gt;. It's CDA!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Aren't you glad that I don't make a living out of inventing names for projects?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's a well known fact that the data access part in CDF is very.... hacked (I would call it something different but I'd probably be banned from blogger.com).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There's no common layer, each component has the responsibility of getting the data it needs and worst of all it can permit sql injection (thus sql support is disabled by default).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This item has been on my todo list for a too long, and it's time for me to tackle it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It wasn't obvious at all for me where to put this data access layer. I need something that I can use both on CDF and on our &lt;a href="http://pedroalves-bi.blogspot.com/2009/08/pentaho-dashboard-in-8-steps.html"&gt;Dashboard Editor&lt;/a&gt;. Classloading hell regarding pentaho plugins are also a concern.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since others have asked for the same, I decided to create a new independent plugin: &lt;span style="font-weight: bold;"&gt;CDA - Community Data Access&lt;/span&gt;. It will be accessed by simple url calls and support the following datasources:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL&lt;/li&gt;&lt;li&gt;MDX&lt;/li&gt;&lt;li&gt;Metadata&lt;/li&gt;&lt;li&gt;Kettle&lt;/li&gt;&lt;li&gt;etc.&lt;/li&gt;&lt;li&gt;Compositions of the above&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The last item is very important for me. Several times I wanted to join a sql query with a mondrian query and use it for a single report. This is just a simple use case amongst many others.&lt;br /&gt;&lt;br /&gt;It will support multiple outputs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JSON&lt;/li&gt;&lt;li&gt;XML&lt;/li&gt;&lt;li&gt;CSV&lt;/li&gt;&lt;li&gt;XLS&lt;/li&gt;&lt;li&gt;HTML visual mode&lt;/li&gt;&lt;/ul&gt;Here's a snippet of a myDashboardData.cda:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id='iframeDivf987855f-efef-41cd-9db3-cd91c19d5684' style='display:none;margin:0px;'&gt;&lt;iframe id='iframef987855f-efef-41cd-9db3-cd91c19d5684' src='http://www.blogtrog.com/code.aspx?id=f987855f-efef-41cd-9db3-cd91c19d5684' style='width: 800px; height: 1000px; border: 1px solid #e0e0e0;margin:0px;' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id='noIframeDivf987855f-efef-41cd-9db3-cd91c19d5684' style='display:block;margin:0px;'&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf8&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;CDADescriptor&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt; DataSource definition. &lt;br /&gt;    &lt;br /&gt;    Type controls what the datasource type is.&lt;br /&gt;    The connection and query controls how the data is fetched. These values&lt;br /&gt;    are specific to each access type&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataSources&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Connection &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;jdbc&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Driver&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;org.hsqldb.jdbcDriver&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Driver&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Url&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;jdbc:hsqldb:hsql://localhost:9001/sampledata&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Url&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;User&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;pentaho_user&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;User&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Pass&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;password&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Pass&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Connection&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Connection &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;jndi&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Jndi&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;sampledata&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Jndi&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Catalog&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;./sampledata.mondrian.xml&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Catalog&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Cube&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SteelWheelsSales&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Cube&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Connection&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataSources&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt; DataAccess object controls the query itself&lt;br /&gt;&lt;br /&gt;    Access controls if the datasource can be seen from the outside or is to&lt;br /&gt;    be used from a Compound datasource only&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataAccess &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; connection&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;sql&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; access&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;public&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; cache&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; cacheDuration&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;3600&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Query&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            select o.YEAR_ID, o.STATUS, sum(o.TOTALPRICE) as price from orderfact o&lt;br /&gt;            where o.STATUS = ${status} and o.ORDERDATE &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;&amp;amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; ${orderDate}&lt;br /&gt;            group by o.YEAR_ID, o.STATUS&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Query&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt; All parameters are passed as string from the outside. Their&lt;br /&gt;        type is defined here. If needed, a conversion pattern must be specified&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Parameters&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Parameter &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;status&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;String&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; default&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;Shipped&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Parameter &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;orderDate&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;Date&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; pattern&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;yyyy-MM-dd&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; default&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;2003-03-01&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Parameters&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt; Settings block here overrides defaults and general settings &lt;br /&gt;        &lt;br /&gt;        Columns block allow specifying name and CalculatedColumn the creation of new&lt;br /&gt;        columns based on formulas&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Settings&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Columns&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Column &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;idx&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Year&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Column&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;CalculatedColumn&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Test&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Formula&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=[1]/100&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Formula&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;CalculatedColumn&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Columns&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Export &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;xls&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; includeTotals&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Column &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;idx&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; aggregator&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;None&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Column &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;idx&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; aggregator&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;Average&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Export&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Settings&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt; Output controls what is outputed and by what order. Defaults to everything &lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Output &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;indexes&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;1,0,2&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataAccess&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataAccess &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; connection&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;mdx&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; access&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;public&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Query&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            select {[Measures].[Sales]} ON COLUMNS,&lt;br /&gt;            NON EMPTY  [Time].Children ON ROWS&lt;br /&gt;            from [SteelWheelsSales]&lt;br /&gt;            where ([Order Status].[${status}])&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Query&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Parameters&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Parameter &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;status&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;String&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; default&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;In Process&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Parameters&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataAccess&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt; CompoundDataAccess can be used to join queries. Some types are&lt;br /&gt;    supported, and the user is responsible for assuring the different dataaccess&lt;br /&gt;    are compatible:&lt;br /&gt;&lt;br /&gt;    * Union: Appends different sources&lt;br /&gt;    * Join: Joins 2 resultsets based on one or more keys. Results have to be &lt;br /&gt;    sorted by those keys.&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;CompoundDataAccess &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Union&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Source &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Source &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Union&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;CompoundDataAccess&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;CompoundDataAccess&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Join&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Left &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;keys&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Right &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;keys&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Join&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Output &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;indexes&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;=&amp;quot;0,2,3&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;CompoundDataAccess&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;CDADescriptor&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language='javascript' src='http://www.blogtrog.com/scripts/bt_code.js' type='text/javascript'&gt;&lt;/script&gt;&lt;script language='javascript' type='text/javascript'&gt;bt_code_init('f987855f-efef-41cd-9db3-cd91c19d5684');&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is about it. Suggestions are welcomed, and this is the correct time to integrate them since I'm still on the drawing board. (But hurry, cause I need to have this done very quickly :) )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8252198481135338059?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8252198481135338059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/01/cda-community-data-access.html#comment-form' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8252198481135338059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8252198481135338059'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2010/01/cda-community-data-access.html' title='CDA - Community Data Access'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5175181848221045040</id><published>2009-12-22T18:12:00.002Z</published><updated>2009-12-22T18:22:49.827Z</updated><title type='text'>Merry Christmas and a Happy New Year!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.wonderchristmas.com/clipart/christmas_clipart13.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 450px; height: 450px;" src="http://www.wonderchristmas.com/clipart/christmas_clipart13.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2009 is almost over. It's been a great year, both personally and professionally. Time to do the usual retrospectives and desires to the future.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the spirit of Christmas, &lt;a href="http://www.webdetails.pt"&gt;Webdetails&lt;/a&gt; is offering single-developer copies of our &lt;a href="http://store.kagi.com/cgi-bin/store.cgi?storeID=6FHAR_LIVE"&gt;CDF tutorial&lt;/a&gt; to the first 3 persons that send and email to cdf _at_ webdetails.pt telling us how they (intend to) use CDF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5175181848221045040?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5175181848221045040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/12/merry-christmas-and-happy-new-year.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5175181848221045040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5175181848221045040'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/12/merry-christmas-and-happy-new-year.html' title='Merry Christmas and a Happy New Year!'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2732475886443338288</id><published>2009-12-14T16:41:00.009Z</published><updated>2009-12-14T18:56:31.017Z</updated><title type='text'>Bringing Pentaho to Firefox</title><content type='html'>Just got back from one week in Mountain View, more precisely in &lt;a href="http://www.mozilla.com/"&gt;Mozilla&lt;/a&gt; headquarters. Without doubts one of the best group I've been in - and I'm very proud to be a part of it.&lt;br /&gt;&lt;br /&gt;I always get back with a lot of ideas to apply to our projects and this time was not different; What was different is that I actually got hands down to implement it - a CDF jetpack:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://jetpack.mozillalabs.com/images/logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 418px; height: 169px;" src="https://jetpack.mozillalabs.com/images/logo.png" alt="" border="0" /&gt;&lt;/a&gt;The idea is to improve the user interaction with our dashboards. More than describe, I can show it with some pictures.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/SyZ6el2Xk4I/AAAAAAAAADg/lToeG1lqHGQ/s1600-h/file1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 266px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/SyZ6el2Xk4I/AAAAAAAAADg/lToeG1lqHGQ/s320/file1.jpg" alt="" id="BLOGGER_PHOTO_ID_5415150267934413698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After I installed my jetpack, you can see in the status bar a new icon that will give the user access to some operations. If we click on any of the bookmarks we'll directly jump into the desired location. Alternatively we can start designing a new dashboard directly.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/SyZ65itR_AI/AAAAAAAAADo/BcFu8CJEK6g/s1600-h/file2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 206px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/SyZ65itR_AI/AAAAAAAAADo/BcFu8CJEK6g/s320/file2.jpg" alt="" id="BLOGGER_PHOTO_ID_5415150730947460098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The jetpack automatically detects that we're in a CDF-DE dashboard. Then it shows more options - in this case we can edit it or even bookmark it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/SyZ7hzNjCPI/AAAAAAAAADw/WoTihE8RluI/s1600-h/file3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/SyZ7hzNjCPI/AAAAAAAAADw/WoTihE8RluI/s320/file3.jpg" alt="" id="BLOGGER_PHOTO_ID_5415151422572529906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After we give it a name, it will be stored and available in our personal bookmarks. Those bookmarks will be associated with the firefox user profile and persist between sessions.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/SyZ8DlO9BMI/AAAAAAAAAD4/Yr8ovNrj62o/s1600-h/file4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 150px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/SyZ8DlO9BMI/AAAAAAAAAD4/Yr8ovNrj62o/s320/file4.jpg" alt="" id="BLOGGER_PHOTO_ID_5415152002935882946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once in that page, we can also remove the bookmark from the list.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/SyZ8q8eXb5I/AAAAAAAAAEA/OgQ0lKdWknQ/s1600-h/file5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 177px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/SyZ8q8eXb5I/AAAAAAAAAEA/OgQ0lKdWknQ/s320/file5.jpg" alt="" id="BLOGGER_PHOTO_ID_5415152679189442450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I don't know what others may think but I really like this beginning. Brings the user closer to the data, and there's a lot of stuff we could do here. If you have any idea just tell them - as wild as they may seem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's it for now. It's not the only idea we brought from Mountain View but that will be in another post. If you find this useful, we can include this jetpack in a future version of our designer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2732475886443338288?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2732475886443338288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/12/bringing-pentaho-to-firefox.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2732475886443338288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2732475886443338288'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/12/bringing-pentaho-to-firefox.html' title='Bringing Pentaho to Firefox'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Yeslj5UWDbY/SyZ6el2Xk4I/AAAAAAAAADg/lToeG1lqHGQ/s72-c/file1.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7409506172223818559</id><published>2009-11-13T11:45:00.007Z</published><updated>2009-11-13T12:59:34.268Z</updated><title type='text'>Building Pentaho 3.5 with the latest and greatest Reporting Engine</title><content type='html'>Pentaho 3.5 is out for a while, with the new Citrus reporting engine. &lt;a href="http://www.sherito.org/"&gt;Thomas&lt;/a&gt; and the rest of the Pentaho crew did a great job turning the mess that was the old Report Designer into a totally rewritten application with lots of new &lt;a href="http://www.sherito.org/2009/10/pentaho-reporting-35-ga-is-available-on.html"&gt;features&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But everyone knows that on the first version of a (re)new software it's inevitable to find problems. This is not an exception. Real world is very different from the labs. &lt;a href="http://jira.pentaho.com/browse/PRD-2221"&gt;Here&lt;/a&gt; &lt;a href="http://jira.pentaho.com/browse/PRD-2081"&gt;are&lt;/a&gt; &lt;a href="http://jira.pentaho.com/browse/PRD-2081"&gt;some&lt;/a&gt; &lt;a href="http://jira.pentaho.com/browse/PRD-2076"&gt;examples&lt;/a&gt; &lt;a href="http://jira.pentaho.com/browse/PRD-2067"&gt;of&lt;/a&gt; &lt;a href="http://jira.pentaho.com/browse/PRD-2066"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Gotta love open source; We have everything we need to be able to debug the problems. We were able to solve some and Thomas solved the nasty ones within no-time. Many thanks to the crazy German / Irish/ I never know.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now the worst part - We have a shiny and working PRD but we need to make it work on Pentaho platform. One option is to use all the latest trunk that picks up latest PRD. Well... not really an option. Even I am not crazy enough to do that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I opted to keep using 3.5.0 GA but tell in the build process to get only the latest trunk of the reporting enging.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I use &lt;a href="http://wiki.pentaho.com/display/COM/CBF+-+Community+Build+Framework"&gt;CBF&lt;/a&gt; for... well, everything. And CBF uses the main pentaho build process. We had to change an ivy file in order for this to work. I hate ivy. Everyone tells me it's a good thing, but from my experience it's only good for them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway, after some fight, &lt;a href="http://filebin.ca/hhxnnu"&gt;here's the file&lt;/a&gt; that we need to replace. It's under bi-platform-assembly/ivy.xml. For cbf you can drop it in patches/target-build/bi-platform-assembly/ivy.xml. You'll also need the latest ivy version (2.1.x). Just drop the jar in the ant lib dir.&lt;br /&gt;&lt;br /&gt;Also set this property in your build config file:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;dependency.pentaho-reporting.revision=TRUNK-SNAPSHOT&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;Now you can have fun with the &lt;a href="http://www.sherito.org/2009/10/smokin-new-parameter-formulas-hidden.html"&gt;latest and the greatest&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7409506172223818559?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7409506172223818559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/11/building-pentaho-35-with-latest-and.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7409506172223818559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7409506172223818559'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/11/building-pentaho-35-with-latest-and.html' title='Building Pentaho 3.5 with the latest and greatest Reporting Engine'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7473280388920596446</id><published>2009-10-27T17:15:00.002Z</published><updated>2009-10-27T17:33:55.850Z</updated><title type='text'>CDF - Dashboard Editor. Version 0.2</title><content type='html'>Somewhat to my surprise, this is &lt;a href="http://forums.pentaho.org/showthread.php?t=73041"&gt;actually working&lt;/a&gt; for &lt;a href="http://forums.pentaho.org/showthread.php?t=72884"&gt;a lot of people&lt;/a&gt;. Thanks for the great feedback everyone.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One of the most pointed issues was the fact that New -&gt; Dashboard didn't work. It was not implemented at all because at the time we developed that (pentaho 3.0 was the current version) the menu hooks didn't work. They do now, so it makes sense to correct it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Other very annoying bug was that we were unable to save to a folder that had whitespaces&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway. Both of it is fixed and 0.2 is just &lt;a href="http://code.google.com/p/cdf-de/"&gt;out the door&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(oh, and &lt;a href="mailto:info@webdetails.pt"&gt;hire us&lt;/a&gt; for the implementations ;) )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7473280388920596446?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7473280388920596446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/10/cdf-dashboard-editor-version-02.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7473280388920596446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7473280388920596446'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/10/cdf-dashboard-editor-version-02.html' title='CDF - Dashboard Editor. Version 0.2'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2913953680609429831</id><published>2009-10-13T10:40:00.002+01:00</published><updated>2009-10-13T11:43:26.178+01:00</updated><title type='text'>Pentaho / Lucidera - an excuse for the big questions?</title><content type='html'>It's &lt;a href="http://mervadrian.wordpress.com/2009/10/11/pentaho-goes-open-core-with-lucidera-olap-viewer/"&gt;amazing&lt;/a&gt; the &lt;a href="http://www.tholis.com/news/pentaho-quo-vadis-/"&gt;amount&lt;/a&gt; of &lt;a href="http://pentahomusings.blogspot.com/"&gt;discussion&lt;/a&gt; generated by &lt;a href="http://www.pentaho.com/news/releases/20091005_pentaho_announces_strategic_technology_acquisition.php"&gt;Pentaho's acquisition of ClearView&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The concerns it raised have nothing to do with this move; Everyone agrees it makes sense: Lucidera came to an halt, they had a valuable product and valuable resources, Pentaho took the opportunity and acquired something that fills a gap into it's own offering.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, what's the problem here? &lt;span style="font-weight: bold;"&gt;ClearView is only available for paying customers&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This raised a lot of questions and some frustrations. A few hours ago &lt;a href="http://intelligent-enterprise.informationweek.com/blog/archives/2009/10/open_source_dec.html"&gt;Seth Grimes&lt;/a&gt; summed some of the concers in a blog post. Even questioned if Pentaho was shifting strategy, which deserved a prompt response from Pentaho's CTO &lt;a href="http://jamesdixon.wordpress.com/2009/10/13/no-open-source-decision-needed-for-pentaho/"&gt;James Dixon&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I don't agree with Seth in the strategic part. It's not by having closed-source components that Pentaho will stop being an Open Source company (I also like the term open core). They payed money to Lucidera; They make money from the subscribed customers; They want to give more value to those customers. What's the problem?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I do agree with Seth when he says that the message pentaho passes is confusing; I always have the feeling that Pentaho faces an identify problem and is a little bit ashamed of it's closed source components. When we access the &lt;a href="http://www.pentaho.com/"&gt;main Pentaho page&lt;/a&gt; we can hardly tell it's a O-S company. Apart from the logo, everything is "buy, try, evaluate" etc. When we visit the &lt;a href="http://sourceforge.net/projects/pentaho/"&gt;sourceforge page&lt;/a&gt; we are clueless about the commercial approach. It's important to clarify that. I'd really like to see in pentaho main page some bold sentence with something like "&lt;span style="font-style: italic;"&gt;We are a commercial company; We have an opensource product with some closed source add-ons that give productivity boost to our clients - the ones that pay for our salary&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For me, the million dollar question that has to be answered is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If my company chooses to go for the opensource version today, will we end up with a stale product one year from now?&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;When users see something released only in a closed source form, they fear everything from now on will be released as closed source only. It's a genuine fear. We recently saw the Dashboard Designer, the chart editor and now ClearView being released for paying customers only.  Pentaho's answer can't be "the community won't let that happen". While the community indeed plays a big role here, Pentaho will always lead the way. The worst that could happen to Pentaho is having the community loosing it's interest. So it's indeed a tough decision for them when they need to make a call if something goes open source or closed source.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But we must not forget something: Pentaho needs it's community. Most of it's business and visibility is made through the open source version and they absolutely can &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; change that. It's much worst from them as a company than it is for us, community users or paying customers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2913953680609429831?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2913953680609429831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/10/pentaho-lucidera-excuse-for-big.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2913953680609429831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2913953680609429831'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/10/pentaho-lucidera-excuse-for-big.html' title='Pentaho / Lucidera - an excuse for the big questions?'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3218188375848811999</id><published>2009-10-02T10:29:00.003+01:00</published><updated>2009-10-12T10:17:42.276+01:00</updated><title type='text'>Pentaho Reporting Explained</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://www.packtpub.com/images/100x123/1847193196.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 100px; height: 123px;" src="https://www.packtpub.com/images/100x123/1847193196.png" alt="" border="0" /&gt;&lt;/a&gt;Finally got my hands on &lt;a href="http://www.packtpub.com/pentaho-reporting-3-5-for-java-developers?utm_source=pedroalves-bi.blogspot.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_000673"&gt;The Book&lt;/a&gt;! While I was very happy with the overall quality of &lt;a href="http://pedroalves-bi.blogspot.com/2009/09/pentaho-solutions-book.html"&gt;Pentaho Solutions&lt;/a&gt; I have to admit that I was more anxious to get this one;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sherito.org/"&gt;Thomas Morgner&lt;/a&gt; and the &lt;a href="http://reporting.pentaho.org/"&gt;JFreeReport&lt;/a&gt; team did a very big refactor in version 3.5 of JFreeReport - codename Citrus (so big that was enough to trigger the release of version 3.5 of the &lt;a href="http://www.pentaho.com/"&gt;Pentaho platform&lt;/a&gt;). And Will, as part of the JFreeReport and Pentaho development team was able to sync the release of the book with the release of the software - can't be more up to date than this.&lt;br /&gt;&lt;br /&gt;So, not only I have a new software to play with, I also have a new book that will guide me through all the changes and improvements.&lt;br /&gt;&lt;br /&gt;The book is not aimed to be an intruction manual on how to use reporting in  the Pentaho platform, on the contrary; Will gives extensive instructions on how to use the reporting engine regardless of the environment - a java swing application, a webapplication, whatever; Just call the APIs and you'll get a report in whatever format you want. Of course, the Pentaho platform comes as an added bonus.&lt;br /&gt;&lt;br /&gt;It does a great job explaining the structure of the engine, how to work with the report designer, how to integrate with several datasources, the export options, how to call the api and many other subjects. Fortunately it's not one of those books that waste 300 pages with the printed api, so expect to read it from start to end, probably just skipping through some (not very extensive) java code that explains how to do task N that you'll just thank to god that it's there in case you need it. Unfortunately  the book can't cover everything; I was hoping to have more details on olap reporting but found only some simpler examples.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;: If you're planning to do reporting in java/webapps/pentaho/whatever just buy the book and don't complain about missing documentation for the next 2 years&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3218188375848811999?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3218188375848811999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/10/pentaho-reporting-explained.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3218188375848811999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3218188375848811999'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/10/pentaho-reporting-explained.html' title='Pentaho Reporting Explained'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3816016836020011058</id><published>2009-09-29T11:38:00.006+01:00</published><updated>2009-09-30T14:02:42.025+01:00</updated><title type='text'>CDF - Dashboard Editor. Want a test drive?</title><content type='html'>If you were in Barcelona for the Pentaho Community Meeting, you know what this is. If you were *not* in there, well... it's a dashboard editor... for CDF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can download the package from &lt;a href="http://code.google.com/p/cdf-de/downloads/list"&gt;here&lt;/a&gt; . It includes the sample I built in Barcelona. No time for instructions at this time, but shouldn't be hard to find what to do with it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is *not* intended for production unless you really know what you're doing.  We can't guarantee that it will work for you at this point - we do guarantee that it works for us and our clients, so if you need consulting services for your project &lt;a href="http://www.webdetails.pt/"&gt;contact us&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As I said, the code will be released as open source with some added value services on top of it - as soon as we have time to do it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Have fun and provide feedback&lt;br /&gt;&lt;br /&gt;(ps: the new dashboard button in the menu isn't implemented yet. Open a sample and save with a new name)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3816016836020011058?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3816016836020011058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/cdf-dashboard-editor-want-test-drive.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3816016836020011058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3816016836020011058'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/cdf-dashboard-editor-want-test-drive.html' title='CDF - Dashboard Editor. Want a test drive?'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2294733968188372942</id><published>2009-09-28T15:52:00.003+01:00</published><updated>2009-09-28T16:13:04.948+01:00</updated><title type='text'>Interacting with users: The CDF CommentsComponent</title><content type='html'>Now that CDF allows us to do most of the "core" stuff when we want to build a dashboard for pentaho, we can aim some steps higher; We're working heavily on allowing users to iterate with the data; In my view, the ideal BI system is not a static application but a place where several users are able to discuss the information to make additional question and draw conclusions.&lt;br /&gt;&lt;br /&gt;We just built a new component for CDF that allows users to make comments on a dashboard. Without any additional configuration needed, it stores the comments in the hibernate database of pentaho (gotta love pentaho's customization abilities!) making them persistent.&lt;br /&gt;&lt;br /&gt;This will be available in the next CDF version (or trunk, for the ones that use it)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/SsDN-OkW5lI/AAAAAAAAADU/MVMJDOknt_U/s1600-h/blogcomments.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 235px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/SsDN-OkW5lI/AAAAAAAAADU/MVMJDOknt_U/s320/blogcomments.png" alt="" id="BLOGGER_PHOTO_ID_5386531623281288786" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2294733968188372942?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2294733968188372942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/interacting-with-users-cdf.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2294733968188372942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2294733968188372942'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/interacting-with-users-cdf.html' title='Interacting with users: The CDF CommentsComponent'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/SsDN-OkW5lI/AAAAAAAAADU/MVMJDOknt_U/s72-c/blogcomments.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4741379023615665350</id><published>2009-09-18T10:58:00.002+01:00</published><updated>2009-09-18T11:12:50.819+01:00</updated><title type='text'>Pentaho Reporting - The book (part 2)</title><content type='html'>2 book in 2 weeks. Looking great.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Full review will come later when I get my hard copy that I can take to places where the computer is not. But I've read parts of it in the e-book version;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If &lt;a href="http://pedroalves-bi.blogspot.com/2009/09/pentaho-solutions-book.html"&gt;Pentaho Solutions&lt;/a&gt; is the book I'd kill for 2 years ago, &lt;a href="http://www.packtpub.com/pentaho-reporting-3-5-for-java-developers?utm_source=pedroalves-bi.blogspot.com&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_000673"&gt;Pentaho Reporting 3.5 for Java Developers&lt;/a&gt; is the book I want and need now. &lt;a href="http://www.willgorman.com/"&gt;Will Gorman's&lt;/a&gt; book comes in a perfect timing: Pentaho 3.5 is near GA (stable version, for the ones who still didn't understand Pentaho's naming sistem - believe me, takes time to get used to), and ships the newest version of the reporting engine. &lt;a href="http://www.sherito.org"&gt;Thomas Morgner&lt;/a&gt; and his team did a great refactor and it's by far one of the biggest improvements done in years.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, we have a new and much improved reporting engine that comes at the same time as a book that explains in detail how to use it. Who can ask for more?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4741379023615665350?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4741379023615665350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/pentaho-reporting-book-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4741379023615665350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4741379023615665350'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/pentaho-reporting-book-part-2.html' title='Pentaho Reporting - The book (part 2)'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3478451895188772638</id><published>2009-09-14T11:04:00.002+01:00</published><updated>2009-09-14T11:51:23.043+01:00</updated><title type='text'>Pentaho Solutions - The book</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ecx.images-amazon.com/images/I/51ex2N21dpL._SS500_.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 500px;" src="http://ecx.images-amazon.com/images/I/51ex2N21dpL._SS500_.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rpbouman.blogspot.com/"&gt;Roland Bouman&lt;/a&gt; and &lt;a href="http://tholis.webnode.com/blog/"&gt;Jos Van Dongen&lt;/a&gt; took 6 months out of their family life and created this. And cutting to the chase, every Pentaho learner should thank them for that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pentaho.com"&gt;Pentaho&lt;/a&gt; is a very complex application due to many factors. For starters, the BI field is, by definition, a very sensitive field; the fact that pentaho started by combining distinct successful open-source projects - mondrian, kettle, jfreereport and weka - doesn't help when we want to learn exactly what's what. There are &lt;a href="http://www.nicholasgoodman.com/bt/blog/2008/06/12/pentaho-fat-clients-breaking-into-double-digits/"&gt;so many distinct applications&lt;/a&gt; that gets confusing to know what each thing is for.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All this makes the learning curve a very steep one. Until now. Trough over 600 pages Pentaho Solutions does a great job explaining all the Pentaho stack, where each of the components fit it and when to use what. And it doesn't stop there; It's impossible to do anything in Business Intelligence without some very solid knowledge of Data Warehouse. While this book is definitely not about it (&lt;a href="http://www.ralphkimball.com/html/booksDWT2.html"&gt;this one is&lt;/a&gt;) still gives the novice reader the key concepts needed to read the book and go through the practical examples that are used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The chapters are very well organized. They are in the same order as the topic appear when we are implementing a Pentaho solution. In the end the 600 pages even feel short, so many concepts it introduces. Don't expect to become an expert in pentaho; You won't master any of the components with this book only;  you won't be a OLAP guru, a reporting wizard or even a etl master. But you will definitely know where to search for.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In my opinion, the ones that will benefit the most with this books are those guys with emails ending with @pentaho.com. It's so difficult to start playing with pentaho that a lot of newcomers feel scared and abandon it, resulting in a loss of potential user. This book changes all that.  I wish I had it when I started playing with pentaho over 2 years ago. And I'm glad I have it know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3478451895188772638?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3478451895188772638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/pentaho-solutions-book.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3478451895188772638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3478451895188772638'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/pentaho-solutions-book.html' title='Pentaho Solutions - The book'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1269046671138966682</id><published>2009-09-10T16:30:00.004+01:00</published><updated>2009-09-10T17:57:42.517+01:00</updated><title type='text'>- "I want charts!" -"Flash, image or canvas?" -"Say again?!"</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/SqknpNUExHI/AAAAAAAAADM/glUP-a9dMV0/s1600-h/flash-jfreechart.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/SqknpNUExHI/AAAAAAAAADM/glUP-a9dMV0/s320/flash-jfreechart.png" alt="" id="BLOGGER_PHOTO_ID_5379874818772747378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CDF's primary rendering engine for charts is &lt;a href="http://www.jfree.org/jfreechart/"&gt;JFreeChart&lt;/a&gt;, and there are a lot of reasons for that:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pentaho supports it&lt;/li&gt;&lt;li&gt;We have a very good level of technical interaction with it, allowing us to do drill through, etc&lt;/li&gt;&lt;li&gt;By generating an image, we can use it in static reports, print it, etc&lt;/li&gt;&lt;li&gt;JFreeChart is really, really good. Does it's job. Period.&lt;/li&gt;&lt;/ul&gt;It has it's disadvantages, though:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It's hard to interact with it. Being an image, all it can do is render image maps, so sometimes we have an hard time finding a particular value&lt;/li&gt;&lt;li&gt;It's ugly.&lt;/li&gt;&lt;/ul&gt;I'm not very sensible to the second argument. I'm a fierce defender that a dashboard shouldn't have elements that distract you from what's really important - the numbers. But it's also true that users (and sales people ;) ) love eye candy. And the business users always like to do some show off, nothing wrong with that.&lt;br /&gt;&lt;br /&gt;The first point concerns me, though. Should be easy to read information out of the charts, and sometimes that's not the case. Sometimes we need interaction with the data at a level that a PNG file can't give us.&lt;br /&gt;&lt;br /&gt;On a recent team &lt;a href="http://blog.mozilla.com/metrics/"&gt;Mozilla metrics team&lt;/a&gt; meeting where I was showing a dashboard our team developed, I did a test to measure the reaction to find out exactly how important this issue is. I showed them the new dashboard using standard jfreechart components and near the end of the meeting I quickly swapped to the open flash charts version of them. The result was worst than I expected..&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;- Oh, WOW, this looks awsome!&lt;br /&gt;- Hum... well, it's really the same thing, the information is identical&lt;br /&gt;- I don't care! It's prettier. And look, there are popups with the numbers. I want this!&lt;br /&gt;&lt;/blockquote&gt;It's undeniable. It has a great impact. Since I work on both sides - developing the framework AND doing actual implementations, instead of fighting it, I can try to build the tools in order to allow the best of both worlds.&lt;br /&gt;&lt;br /&gt;Working on a new charting engine for CDF has always been one of my objectives. After this meeting, it has become one of the &lt;span style="font-weight: bold;"&gt;short&lt;/span&gt; time objectives. This is a challenging task; Ideally, the framework developer part of me wants a layer that is independent of the rendering engine. That has a major problem - by doing so I'll probably have to settle with the least common denominator of all engine's functionalities, something that the other me - the one that has to implement each and every one of my client's requests - absolutely don't want to happen.&lt;br /&gt;&lt;br /&gt;So I'll probably start by focusing on a good charting engine to pose as an alternative to jfreechart. Sure, there's support to open flash charts, but it's functionality is yet a bit limited. It just doesn't do what I want/need it to do.&lt;br /&gt;&lt;br /&gt;I'm more inclined into one of this options (suggestions are welcome here):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/flot/"&gt;Flot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fusioncharts.com/free/"&gt;FusionCharts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Something else...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I would love NOT to use a flash-based solution. I'd rather use a canvas-based solution. But I won't even think about any of this technical constraints if I need to loose anything in the functionality side...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cya in &lt;a href="http://tiny.cc/pentaho09"&gt;Barcelona&lt;/a&gt; next week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1269046671138966682?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1269046671138966682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/i-want-charts-flash-image-or-canvas-say.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1269046671138966682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1269046671138966682'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/i-want-charts-flash-image-or-canvas-say.html' title='- &quot;I want charts!&quot; -&quot;Flash, image or canvas?&quot; -&quot;Say again?!&quot;'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Yeslj5UWDbY/SqknpNUExHI/AAAAAAAAADM/glUP-a9dMV0/s72-c/flash-jfreechart.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5596291478726496160</id><published>2009-09-03T17:25:00.004+01:00</published><updated>2009-09-03T18:30:26.015+01:00</updated><title type='text'>CBF - Going underground</title><content type='html'>If you don't know what &lt;a href="http://wiki.pentaho.com/display/COM/CBF+-+Community+Build+Framework"&gt;CBF&lt;/a&gt; is, don't worry. Hardly no one does. It's probably the most under-rated community project on pentaho.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CBF stands for Community Build Framework, and it's an alternate way to build your own pentaho distribution keeping the source untouched. Also simplifies upgrades, deploys and allows everything to sit in a well contained svn repository.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I still use on a daily basis what I started more than two years go in one of my &lt;a href="http://forums.pentaho.org/showthread.php?t=55186"&gt;first forum posts&lt;/a&gt;. And I can't imagine my life without it. Actually, I don't know how other manage their projects. It really amuses me to see how the thread with my &lt;a href="http://forums.pentaho.org/showthread.php?t=59783"&gt;tutorial for a datepicker in the secure-prompt filter&lt;/a&gt; is still heavily active after almost 2 years while CBF releases go almost unnoticed. C'mon, people still use .xactions?!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;nicola:pentaho$ ls -1 -d project-*  | wc -l&lt;br /&gt;34&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This listing on my project directory tells me that I have 34 different projects and variations that range from pentaho 1.7 to pentaho 3.5, stock or improved. Projects that I need to get up and running very quickly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's a snippet of my day in terms of CBF commands:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;9:00 - Carry on with the development of &lt;a href="http://blog.mozilla.com/metrics/"&gt;Mozilla metrics project&lt;/a&gt;. A quick &lt;span style="font-style: italic;"&gt;svn up&lt;/span&gt; will allow me to pick the changes done by the team in the US: &lt;span style="font-style: italic;"&gt;ant -f build.xml.cbf-3.0 -Dproject=metrics -Denv=pedro dist-clean all run&lt;/span&gt;&lt;/li&gt;&lt;li&gt;10:30 - An old client, still on 1.7 called saying they changed an algorithm used to generate a report:  &lt;span style="font-style: italic;"&gt;ant -f build.xml.cbf-1.7 -Dproject=etsa -Denv=pedro dist-clean all run&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;10:38 - Report fixed and commited to svn. Update on client side, done.&lt;/li&gt;&lt;li&gt;10:39 - Back to the Mozilla implementation: : &lt;span style="font-style: italic;"&gt;ant -f build.xml.cbf-3.0 -Dproject=metrics -Denv=pedro dist-clean all run&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;17:50 - Developments ready to be deployed. Lots of new code and patches, so I'll do a full remote deploy: &lt;/span&gt;&lt;span style="font-style: italic;"&gt;ant -f build.xml.cbf-3.0 -Dproject=metrics -Denv=staging deploy-all &lt;/span&gt;&lt;span&gt; . Magically, my changes can be seen on the other side of the ocean&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;18:00&lt;span style="font-style: italic;"&gt; - &lt;/span&gt;Commit done, time to look at the pentaho 3.5 project. Build a bare35 project and just: &lt;span style="font-style: italic;"&gt;ant -f build.xml.cbf-3.5 -Dproject=bare35 -Denv=pedro dist-clean all run&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;18:40 - Detected a minor CDF bug in pentaho 3.5. Fixing in with: &lt;/span&gt;&lt;span style="font-style: italic;"&gt;ant -f build.xml.cbf-3.5 -Dproject=cdf -Denv=pedro dist-clean all run&lt;/span&gt;&lt;span&gt; . &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;18:50 - Commit done to google code. &lt;a href="http://ci.pentaho.com/job/pentaho-cdf/"&gt;Hudson&lt;/a&gt; will auto-magically pick it and will be used in the next pentaho build. Time to go home&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I admit that many times I have the feeling that I'm on grounds that noone ever stepped on, but what alternatives do I have to quickly manage multiple projects with multiple configuration on multiple versions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5596291478726496160?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5596291478726496160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/cbf-going-underground.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5596291478726496160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5596291478726496160'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/09/cbf-going-underground.html' title='CBF - Going underground'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-8061562467337241818</id><published>2009-08-20T16:58:00.011+01:00</published><updated>2009-08-20T17:16:57.710+01:00</updated><title type='text'>A pentaho dashboard in 8 steps</title><content type='html'>1. Open the CDF Dashboard Editor&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/So1zEciwkjI/AAAAAAAAACM/BXGnpZ3vBCQ/s1600-h/CDF-DE-step1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/So1zEciwkjI/AAAAAAAAACM/BXGnpZ3vBCQ/s320/CDF-DE-step1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372076450741522994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;2. Choose a template&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Yeslj5UWDbY/So1zSP9kIcI/AAAAAAAAACU/TnRJhf-CASU/s1600-h/CDF-DE-step2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 177px;" src="http://4.bp.blogspot.com/_Yeslj5UWDbY/So1zSP9kIcI/AAAAAAAAACU/TnRJhf-CASU/s320/CDF-DE-step2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372076687882461634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Give it a title&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/So1zkVNKT-I/AAAAAAAAACc/3dFzVXjfRB8/s1600-h/CDF-DE-step3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 179px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/So1zkVNKT-I/AAAAAAAAACc/3dFzVXjfRB8/s320/CDF-DE-step3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372076998527700962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Add a selector&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/So1zwXetO_I/AAAAAAAAACk/9w3-CRIcmDg/s1600-h/CDF-DE-step4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 188px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/So1zwXetO_I/AAAAAAAAACk/9w3-CRIcmDg/s320/CDF-DE-step4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372077205296593906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Add a chart&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/So1z3isIXYI/AAAAAAAAACs/xir_6-WlFgo/s1600-h/CDF-DE-step5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 190px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/So1z3isIXYI/AAAAAAAAACs/xir_6-WlFgo/s320/CDF-DE-step5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372077328564772226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Edit some properties&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/So10Ap7437I/AAAAAAAAAC0/EddYkQZlg2o/s1600-h/CDF-DE-step6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 246px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/So10Ap7437I/AAAAAAAAAC0/EddYkQZlg2o/s320/CDF-DE-step6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372077485128736690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. Save it&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/So10L4dEM4I/AAAAAAAAAC8/ysps9GL_f-4/s1600-h/CDF-DE-step7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 206px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/So10L4dEM4I/AAAAAAAAAC8/ysps9GL_f-4/s320/CDF-DE-step7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372077678004548482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8. View it&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/So10TL0pzDI/AAAAAAAAADE/TcJsDPSaPUU/s1600-h/CDF-DE-step8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 168px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/So10TL0pzDI/AAAAAAAAADE/TcJsDPSaPUU/s320/CDF-DE-step8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5372077803462839346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;This may be a very simple sample, but it's amazing that took me 1 minute to do something that used to take a good couple of hours (even more, before CDF existed)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-8061562467337241818?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/8061562467337241818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/08/pentaho-dashboard-in-8-steps.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8061562467337241818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/8061562467337241818'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/08/pentaho-dashboard-in-8-steps.html' title='A pentaho dashboard in 8 steps'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/So1zEciwkjI/AAAAAAAAACM/BXGnpZ3vBCQ/s72-c/CDF-DE-step1.png' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-9137733497988341633</id><published>2009-07-21T13:12:00.006+01:00</published><updated>2009-07-21T14:06:39.568+01:00</updated><title type='text'>"How do I make dashboards in Pentaho?"</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;How do I make dashboards in Pentaho? How do I start using CDF?&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This is one of the questions I hear the most, either in the &lt;a href="http://forums.pentaho.org/"&gt;pentaho forums&lt;/a&gt; or in the ##pentaho irc channel in FreeNode.&lt;br /&gt;&lt;br /&gt;To help answering that, the &lt;a href="http://wiki.pentaho.com/display/COM/Community+Dashboard+Framework"&gt;CDF team&lt;/a&gt; worked on a set of 11 samples in a step-by-step tutorial approach.&lt;br /&gt;&lt;br /&gt;Here are some images:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.webdetails.pt/images/samples/sample3.png" alt="" /&gt;&lt;br /&gt;&lt;img style="display:inline" src="http://www.webdetails.pt/images/samples/sample5.png" alt="" /&gt;&lt;br /&gt;&lt;img src="http://www.webdetails.pt/images/samples/sample8.png" alt="" /&gt;&lt;br /&gt;&lt;img src="http://www.webdetails.pt/images/samples/sample9.png" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can get more details &lt;a href="http://www.webdetails.pt/"&gt;here&lt;/a&gt; or buy the samples directly &lt;a href="http://store.kagi.com/cgi-bin/store.cgi?storeID=6FHAR_LIVE"&gt;in here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks in advance for the contribution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-9137733497988341633?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/9137733497988341633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/07/how-do-i-make-dashboards-in-pentaho.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/9137733497988341633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/9137733497988341633'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/07/how-do-i-make-dashboards-in-pentaho.html' title='&quot;How do I make dashboards in Pentaho?&quot;'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-1244380354538000699</id><published>2009-07-13T17:44:00.004+01:00</published><updated>2009-07-13T17:55:16.739+01:00</updated><title type='text'>Pentaho WebEx on CDF - July 15th</title><content type='html'>Trying to bring development closer to the users, Pentaho has been organizing web meeting every two weeks to talk about something related to ongoing/future development. &lt;br /&gt;&lt;br /&gt;After &lt;a href="http://jamesdixon.wordpress.com/"&gt;James Dixon&lt;/a&gt;, &lt;a href="http://www.willgorman.com/"&gt;Will Gorman&lt;/a&gt;, &lt;a href="http://www.ibridge.be"&gt;Matt Casters&lt;/a&gt; and &lt;a href="http://www.sherito.org/"&gt;Thomas Morgner&lt;/a&gt;, it's my turn to give a webex on CDF (damn, what a honor!)&lt;br /&gt;&lt;br /&gt;You can get more details &lt;a href="http://wiki.pentaho.com/display/COM/Community+Events"&gt;Here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-1244380354538000699?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/1244380354538000699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/07/pentaho-webex-on-cdf-july-15th.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1244380354538000699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/1244380354538000699'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/07/pentaho-webex-on-cdf-july-15th.html' title='Pentaho WebEx on CDF - July 15th'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3424117630601448948</id><published>2009-06-26T14:48:00.002+01:00</published><updated>2009-06-26T15:02:16.651+01:00</updated><title type='text'>On the forge: CDF Training Material and Samples</title><content type='html'>With &lt;a href="http://code.google.com/p/pentaho-cdf/"&gt;CDF's&lt;/a&gt; inclusion in pentaho, the user base has increased a lot. And I'm absolutely sure that the vast majority of the users that download &lt;a href="http://www.pentaho.com"&gt;Pentaho&lt;/a&gt; have no idea of what they can do with it. &lt;br /&gt;&lt;br /&gt;Looking back to 1 or 2 years ago the improvements have been huge; We can now develop Pentaho dashboards in 1/10th of the time, being able to focus on content, and not in technology.&lt;br /&gt;&lt;br /&gt;Still, I have to admit that it's still a steep learning curve to a new users.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webdetails.pt"&gt;We&lt;/a&gt; are working on a set of samples/tutorials to make it easier for new users to understand how it works - from simple inputs to sparklines in dashboards.&lt;br /&gt;&lt;br /&gt;Our goal is have it ready in the next month; Not sure how we'll distribute it - probably with webclasses or something like that - but we'll decide it when it's finished.&lt;br /&gt;&lt;br /&gt;In the meanwhile, here's a screenshot of the work in progress, where tutorial itself is a CDF dashboard&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/SkTUv7REUYI/AAAAAAAAABk/6MkO5fIDZg0/s1600-h/cdf-tutorial.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/SkTUv7REUYI/AAAAAAAAABk/6MkO5fIDZg0/s320/cdf-tutorial.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5351636177051210114" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3424117630601448948?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3424117630601448948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/on-forge-cdf-training-material-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3424117630601448948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3424117630601448948'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/on-forge-cdf-training-material-and.html' title='On the forge: CDF Training Material and Samples'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Yeslj5UWDbY/SkTUv7REUYI/AAAAAAAAABk/6MkO5fIDZg0/s72-c/cdf-tutorial.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7947303721697834695</id><published>2009-06-11T10:49:00.005+01:00</published><updated>2009-06-11T16:17:58.682+01:00</updated><title type='text'>Firefox breaks 100 Million users daily or The happiest bug report of my life</title><content type='html'>It's amazing - Firefox broke the barrier of 100 million active daily users for the first time yesterday.  101,229,960 to be more precise. This is especially motivating with &lt;a href="http://www.mozilla.com/en-US/firefox/all-beta.html"&gt;Firefox 3.5&lt;/a&gt; just around the corner. Be sure not to miss it!&lt;br /&gt;&lt;br /&gt;Just a few hours after GMT's midnight we got this little surprise in our email boxes (it still puzzles me a bit to think that the guys in the US get the report of the day before &lt;span style="font-style:italic;"&gt;their&lt;/span&gt; day is actually over; It would be much simpler if the world was flat).&lt;br /&gt;&lt;br /&gt;This immediately led to a bug report. This number is sooo big that we didn't properly account for it when we built the report:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/SjDXn6OUe_I/AAAAAAAAABc/2ZpIoUOy6VU/s1600-h/100M.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 15px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/SjDXn6OUe_I/AAAAAAAAABc/2ZpIoUOy6VU/s320/100M.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346009838332967922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But I must say it's the happiest bug ever! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ps: On a somewhat unrelated note, we have to take our hats to the extensible power of pentaho's jfreereport; We were able to implement sparklines and a email repository to the engine so that all images / resources are sent as attachments, not requiring connection to the server - not forgetting anti-aliasing support, to make it look a little nicer. Thanks a lot for all the help &lt;a href="http://www.sherito.org/"&gt;Thomas&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7947303721697834695?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7947303721697834695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/firefox-breaks-100-million-users-daily.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7947303721697834695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7947303721697834695'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/firefox-breaks-100-million-users-daily.html' title='Firefox breaks 100 Million users daily or The happiest bug report of my life'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Yeslj5UWDbY/SjDXn6OUe_I/AAAAAAAAABc/2ZpIoUOy6VU/s72-c/100M.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-7606007339433817462</id><published>2009-06-05T10:28:00.002+01:00</published><updated>2009-06-05T10:41:14.406+01:00</updated><title type='text'>A very busy month</title><content type='html'>It stresses me just to think about it. Only one month till the end of the quarter and still a lot of objectives in the to-do list.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this month, and following my &lt;a href="http://pedroalves-bi.blogspot.com/2009/06/cdf-charting-enhancements.html"&gt;previous post&lt;/a&gt;, &lt;a href="http://www.webdetails.pt"&gt;our team&lt;/a&gt; will spend a good chunk of time extending CDF's functionalities:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt; Continue different charting widgets &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt; Start building a centralized point for data access, that will allow to get data from several sources - mdx, sql and kettle (eventually metadata). One of the first goals is allow to merge the resultsets of 2 different datasources and be able to visualize / compare them in the same chart. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt; Start the foundations for a CDF Dashboard Generator / Designer / whatever. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt; &lt;br /&gt;&lt;br /&gt;All our experience so far led us to a lot of dashboarding implementation as a way to tie together the different pentaho components into the final solution, not only in OEM scenarios (where this is absolutely critical) but also for standard implementations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And we need to continue improving in order to make it run better - and implement faster.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In summary, I need huge amounts of coffee&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-7606007339433817462?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/7606007339433817462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/very-busy-month.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7606007339433817462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/7606007339433817462'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/very-busy-month.html' title='A very busy month'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-4017707635040229857</id><published>2009-06-01T10:47:00.005+01:00</published><updated>2009-06-01T11:44:23.329+01:00</updated><title type='text'>CDF Charting Enhancements</title><content type='html'>The more I work with dashboards, the more I know there's a lot to learn; If you follow the excellent work of &lt;a href="http://www.edwardtufte.com/tufte/"&gt;Edward Tufte&lt;/a&gt; you know there's much more to visualization than the technical aspects of it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A balance needs to be achieved; It's as wrong to focus only on eye-candy as is to build a too technical dashboard for users that will feel scared about it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At &lt;a href="http://www.webdetails.pt/"&gt;Webdetails&lt;/a&gt; we've been getting very interesting conclusions from the projects we have with our clients, namely the &lt;a href="http://blog.mozilla.com/metrics/"&gt;Mozilla Metrics project&lt;/a&gt;, where we're implementing a full scale Dashboard centric Pentaho implementation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Side note: maybe it's just our experience, but our clients have been much interested in dashboard centric projects; All of them make extended use of &lt;a href="http://wiki.pentaho.com/display/COM/Community+Dashboard+Framework"&gt;CDF&lt;/a&gt; in it's standalone mode (that is, without the user console). The user console has been used more to specific usage rather than the common use. This is the main reason that makes us develop and extend CDF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On the Mozilla metrics project we started with specific by-subject analysis and then evolved to a set of summary dashboards that allow dynamic drilling, slicing, focus and allow the users to get to any information they want visually, optionally getting the raw numbers with a single click.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Recently we've reached an interesting conclusion; as much as we can develop a full-featured all-in-one dashboard, some users may feel more comfortable with dashboards that show less information but more context; We've learned that, when designing dashboards, we should focus on users &lt;span style="font-weight: bold;"&gt;first&lt;/span&gt; and data next.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So this is the way CDF is evolving now:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Increase usability - Make users feel more comfortable&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Increase development speed&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;We're currently giving our first steps in the first one, and till the end of this month we'll be working hard on this 2 subjects, hopefully trying to nail both of them at the same time - let's see if we can make it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/SiOrRtCDxyI/AAAAAAAAABE/ZaDJYwlunyE/s1600-h/chart.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 156px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/SiOrRtCDxyI/AAAAAAAAABE/ZaDJYwlunyE/s320/chart.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5342301903625897762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Our first stab into the first goal is extending charting functionality, allowing users to do perform certain operations while giving it some eye-candy. The picture above shows a typical bar-chart generated by the jFreeChart CDF component; A lot of&lt;br /&gt;people in the pentaho community don't like this rendering engine a lot; while it's true that it doesn't look that good, the truth is that  open flash charts is not a very matured library and we miss some core functionalities. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For the record, we're also working on a OFC CDF component; our objective is to get to a CDF component that is independent of the rendering engine - jfreechart, OFC, libsparklines, flot, whatever. But this requires a big leveraging effort in order to maintain the core functionality we expect from dashboard components.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway, back to the subject; When we make a bar chart plot like the above one, there are clearly some type of operations that can be done regardless of the data displayed: get the details, looking at the data, etc. So we implemented a set of (extensible) operation that we can access while doing a mouse hover:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/SiOuL7wFuNI/AAAAAAAAABM/sJOX7xL-TDg/s1600-h/caption.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 159px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/SiOuL7wFuNI/AAAAAAAAABM/sJOX7xL-TDg/s320/caption.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5342305103032727762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, we've implemented data details, zoom, export to excel and CSV and switch to bar/pie view, but we can make this list grow/change as desired.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This an example of exporting the data to excel regardless of the data source - MDX or SQL &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/SiOvQul11vI/AAAAAAAAABU/mKAZh8hpvy8/s1600-h/exportToExcel.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 206px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/SiOvQul11vI/AAAAAAAAABU/mKAZh8hpvy8/s320/exportToExcel.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5342306284911056626" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-4017707635040229857?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/4017707635040229857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/cdf-charting-enhancements.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4017707635040229857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/4017707635040229857'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/06/cdf-charting-enhancements.html' title='CDF Charting Enhancements'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Yeslj5UWDbY/SiOrRtCDxyI/AAAAAAAAABE/ZaDJYwlunyE/s72-c/chart.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-2982820414954679010</id><published>2009-05-09T20:59:00.005+01:00</published><updated>2009-05-09T22:37:58.914+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdx'/><category scheme='http://www.blogger.com/atom/ns#' term='reporting'/><title type='text'>Totals and Grand Totals in the bottom. hum.... why?</title><content type='html'>Ever since I see reports, I see the totals in the bottom, and the grand totals as the very last line in them. But if you get to think about it, makes absolutely no sense at all.&lt;br /&gt;&lt;br /&gt;Almost everyone that picks a report in the first time wants to see the big numbers first, and only later see the details. And this happens due to technical reasons.&lt;br /&gt;&lt;br /&gt;Most reporting engines use running formulas to do the calculations and present the totals in the end. If you ever tried to display the totals in the header of the report, you'll know it's a nightmare; It's either by using complicated sql inner queries or if you do it on the reporting engine side you'll have a complicated logic to maintain.&lt;br /&gt;&lt;br /&gt;On some conditions, though, there's a very easy way to do this. The answer is MDX (am I becoming repetitive? :) ) Just try this mdx query in the steelwheels schema:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;select NON EMPTY {[Time].[All Years].[2003], [Time].[All Years].[2004], [Time].[All Years].[2005]} ON COLUMNS,&lt;br /&gt;  NON EMPTY Descendants([Product].[All Products], [Product].[Vendor], SELF_AND_BEFORE) ON ROWS&lt;br /&gt;from [SteelWheelsSales]&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This query, that uses the very useful &lt;a href="http://msdn.microsoft.com/en-us/library/ms146075.aspx"&gt;Descendants&lt;/a&gt; function with the SELF_AND_BEFORE attribute, returns the following result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/SgX2GqXXIqI/AAAAAAAAAA8/eVI3nFPX5FY/s1600-h/blog3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 210px; height: 320px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/SgX2GqXXIqI/AAAAAAAAAA8/eVI3nFPX5FY/s320/blog3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5333939928002142882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If we just use this query in the report designer, we'll get a nice report with the totals in the front of the details.&lt;br /&gt;&lt;br /&gt;Ah, and notice that with mdx we also get crosstabs for free&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-2982820414954679010?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/2982820414954679010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/05/totals-and-grand-totals-in-bottom-hum.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2982820414954679010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/2982820414954679010'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/05/totals-and-grand-totals-in-bottom-hum.html' title='Totals and Grand Totals in the bottom. hum.... why?'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/SgX2GqXXIqI/AAAAAAAAAA8/eVI3nFPX5FY/s72-c/blog3.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3070160419780847610</id><published>2009-04-14T12:50:00.008+01:00</published><updated>2009-04-14T14:16:57.476+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdx'/><category scheme='http://www.blogger.com/atom/ns#' term='cdf'/><title type='text'>A Dashboard for every role</title><content type='html'>Common scenario in a project:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We need to make a dashboard for the General Manager.&lt;/li&gt;&lt;li&gt;And then a dashboard for the EMEA Sales representative.&lt;/li&gt;&lt;li&gt;Don't forget the Portuguese Chef, he also needs information on his stocks of codfish.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This means a lot of work; What if we could define just one dashboard without worrying about row level security?&lt;br /&gt;&lt;br /&gt;Fortunately for this blog entry, we can. Provided you're using CDF - and of course you are - the answer is to use MDX.&lt;br /&gt;&lt;br /&gt;MDX is God's gift to business language; When God created Adam and Eve he just spoke &lt;span style="font-family:courier new;"&gt;[Humanity].[All Members].Children&lt;/span&gt; . That's how powerful MDX is. And &lt;a href="http://julianhyde.blogspot.com/"&gt;Julian Hyde&lt;/a&gt; allowed to use it without being bound to microsoft.&lt;br /&gt;&lt;br /&gt;In a lot of CDF components we can use MDX directly to get our result sets. But there's a somewhat "hidden" feature in there. If we have the session variable &lt;span style="font-family:courier new;"&gt;role&lt;/span&gt; defined, that role will be passed to mondrian.&lt;br /&gt;&lt;br /&gt;Take this for example: Let's picture our Joe as a EMEA representative and our Suzy for US. I'll add the following code to the SteelWheels schema:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&amp;lt;role name="suzy"&amp;gt;&lt;br /&gt;&amp;lt;schemagrant access="none"&amp;gt;&lt;br /&gt;    &amp;lt;cubegrant cube="SteelWheelsSales" access="all"&amp;gt;&lt;br /&gt;        &amp;lt;hierarchygrant hierarchy="Markets" access="custom" &lt;br /&gt;          toplevel="[Markets].[Territory]" rolluppolicy="partial"&amp;gt;&lt;br /&gt;            &amp;lt;membergrant member="[Markets].[All Markets].[NA]" access="all"&amp;gt;&lt;br /&gt;        &amp;lt;/membergrant&amp;gt;&lt;br /&gt;    &amp;lt;/hierarchygrant&amp;gt;&lt;br /&gt;&amp;lt;/cubegrant&amp;gt;&lt;br /&gt;&amp;lt;/schemagrant&amp;gt;&lt;br /&gt;&amp;lt;role name="joe"&amp;gt;&lt;br /&gt;&amp;lt;schemagrant access="none"&amp;gt;&lt;br /&gt;    &amp;lt;cubegrant cube="SteelWheelsSales" access="all"&amp;gt;&lt;br /&gt;        &amp;lt;hierarchygrant hierarchy="Markets" access="custom" &lt;br /&gt;          toplevel="[Markets].[Territory]" rolluppolicy="partial"&amp;gt;&lt;br /&gt;            &amp;lt;membergrant member="[Markets].[All Markets].[EMEA]" access="all"&amp;gt;&lt;br /&gt;        &amp;lt;/membergrant&amp;gt;&lt;br /&gt;    &amp;lt;/hierarchygrant&amp;gt;&lt;br /&gt;&amp;lt;/cubegrant&amp;gt;&lt;br /&gt;&amp;lt;/schemagrant&amp;gt;&lt;br /&gt;&amp;lt;/role&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also changed the startup action sequence session-region-list.xaction to store in the username in the session variable &lt;span style="font-family:courier new;"&gt;role&lt;/span&gt;. As a result, here's the MetaLayer home dashboard seen by Joe:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Yeslj5UWDbY/SeR8pv-EsTI/AAAAAAAAAAs/vPsGC8VrBp8/s1600-h/blog2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 286px; height: 320px;" src="http://1.bp.blogspot.com/_Yeslj5UWDbY/SeR8pv-EsTI/AAAAAAAAAAs/vPsGC8VrBp8/s320/blog2.png" alt="" id="BLOGGER_PHOTO_ID_5324517716152070450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the same one seen by Suzy:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/SeR9RzeJbaI/AAAAAAAAAA0/Q3tMc5SL3OY/s1600-h/blog1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 286px; height: 320px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/SeR9RzeJbaI/AAAAAAAAAA0/Q3tMc5SL3OY/s320/blog1.png" alt="" id="BLOGGER_PHOTO_ID_5324518404286672290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the most simplistic approach; Other things must be taken into account, but really eases the way it works as a whole. Added bonus, all our pivot tables will share the same definitions.&lt;br /&gt;I definitely recommend MDX for every dashboard (or report... or anything, really)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3070160419780847610?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3070160419780847610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/04/dashboard-for-every-role.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3070160419780847610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3070160419780847610'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/04/dashboard-for-every-role.html' title='A Dashboard for every role'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Yeslj5UWDbY/SeR8pv-EsTI/AAAAAAAAAAs/vPsGC8VrBp8/s72-c/blog2.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-5784251798055857645</id><published>2009-04-08T11:38:00.002+01:00</published><updated>2009-04-08T12:15:29.577+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>Revenues of open source contributions</title><content type='html'>A lot of people ask me:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Why do you waste so many time - and money - with community contributions?&lt;/blockquote&gt; I don't have a definite answer; It's not by some "revolutionary principle", in the end I want the same thing as everyone - get rich, retire, and move to some beach in Brazil and sell coconuts for the rest of my life.&lt;br /&gt;&lt;br /&gt;There are a lot of logical reasons why I should *not* contribute:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It requires huge ammount of time to maintain a project / make contributions&lt;/li&gt;&lt;li&gt;I'm giving away knowledge - for free&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I'm allowing others to make profit out of my work with 0 return&lt;/li&gt;&lt;li&gt;Could basically... sell it / commercialize it in some way&lt;/li&gt;&lt;/ul&gt;I don't believe in arguments like "if everyone does like you do, the work will be a better place" - most of the users out there are just "leechers" that when it comes to information sharing just pretend to be busy (and I bow to the exceptions that makes the engines run).&lt;br /&gt;&lt;br /&gt;Still - I do it cause I feel it's the right thing to do. For a living, I benefit from the work others did - namely the work done by Pentaho guys. Commercial Open Source is still a relatively unknown area and there's a difficult balance between knowledge-sharing and kid-feeding ;)&lt;br /&gt;&lt;br /&gt;But sometimes we get some very unexpected revenues; I had a meeting with a potential client that asked me if we could make a demonstration of our work; I was taken by surprise and was not ready to do so, but then I remembered asking if they had a downloaded version of Pentaho version 3. They did. "Great, now open the CDF samples under the bi-developers solution. We did that". Quoting mastercard... Priceless!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ps: I believe this kind of permanent debate inside me is exactly the same as happens daily in the Pentaho Towers between sales and marketing and o-s defenders; So I'm definitely not one of the voices that rises in complains when Pentaho HQ (or any other vendor, for what it matters) decides to relase some subscription module; what ever the decision is, it's a hell of a tough balance to make...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-5784251798055857645?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/5784251798055857645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/04/revenues-of-open-source-contributions.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5784251798055857645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/5784251798055857645'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/04/revenues-of-open-source-contributions.html' title='Revenues of open source contributions'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3845760949768783949</id><published>2009-04-01T17:11:00.005+01:00</published><updated>2009-04-01T17:35:59.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bsh'/><category scheme='http://www.blogger.com/atom/ns#' term='reporting'/><title type='text'>BSHExpressions - when we need control over reporting</title><content type='html'>Following pentaho forums is a great way to find topics for a blog. This time I used &lt;a href="http://forums.pentaho.org/showthread.php?p=210865"&gt;Gunter's question&lt;/a&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;I need to make a simple report that show the duration of an event and sum it per day. The type of duration in the database is time (MySQL).&lt;br /&gt;&lt;br /&gt;I have tried summing the duration values, but apparently the ItemSumFunction cannot handle the summing. So i converted the time to an integer, made the sum using the ItemSumFunctio, but now i don't know how i can reformat it to show like 'hh:mm:ss'&lt;/blockquote&gt;I'm a very big fan of the latest approach; I think that using longs in the fact table just simplifies everything. Then we only need to solve the formatting aspect of it. Since it's a &lt;a href="http://reporting.pentaho.org/"&gt;report&lt;/a&gt; we're talking about, we'll use a &lt;a href="http://www.beanshell.org/"&gt;BSHExpression&lt;/a&gt;.  (JFreeReport is awesome, there's always more than one solution available for each problem, this is just one of them).&lt;br /&gt;&lt;br /&gt;We can't use a simple date formatter because we want dates also over 24h. So I created the following BSHExpression:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;import java.text.SimpleDateFormat;&lt;br /&gt;SimpleDateFormat formatter = new SimpleDateFormat("mm:ss");&lt;br /&gt;&lt;br /&gt;String secondsToFormattedDate(n){&lt;br /&gt;d = new Date(n * 1000);&lt;br /&gt;return ( d.getTime()/3600000 + ":" + formatter.format(d));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String getValue(){&lt;br /&gt;long l = dataRow.get("CategoryAmountExpression").longValue();&lt;br /&gt;return secondsToFormattedDate(l);&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;There are a lot of options to do this code, obviously; we could easily avoid the date object, but it's a way to show how we can invoke other classes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/SdOXSRv_dOI/AAAAAAAAAAc/fNQ4ZB1vaEk/s1600-h/blog1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 201px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/SdOXSRv_dOI/AAAAAAAAAAc/fNQ4ZB1vaEk/s320/blog1.jpg" alt="" id="BLOGGER_PHOTO_ID_5319761925112820962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The final result of this is what we expected:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/SdOXjXKTtuI/AAAAAAAAAAk/exbTWWcEPgQ/s1600-h/blog2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 201px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/SdOXjXKTtuI/AAAAAAAAAAk/exbTWWcEPgQ/s320/blog2.jpg" alt="" id="BLOGGER_PHOTO_ID_5319762218623153890" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3845760949768783949?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3845760949768783949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/04/bshexpressions-when-we-need-control.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3845760949768783949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3845760949768783949'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/04/bshexpressions-when-we-need-control.html' title='BSHExpressions - when we need control over reporting'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Yeslj5UWDbY/SdOXSRv_dOI/AAAAAAAAAAc/fNQ4ZB1vaEk/s72-c/blog1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-6437184880392283069</id><published>2009-03-28T14:36:00.008Z</published><updated>2009-03-29T00:26:15.466Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdx'/><category scheme='http://www.blogger.com/atom/ns#' term='olap'/><title type='text'>Interesting OLAP date crosstab question</title><content type='html'>&lt;a href="http://pentahomusings.blogspot.com/"&gt;Tom barber&lt;/a&gt; came up with a very interesting question in &lt;a href="http://forums.pentaho.org/showthread.php?p=210498"&gt;pentaho forums&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I've got a sales per working day spreadsheet that pentaho generates every morning for my boss, days of the month on the columns and branches on the rows.&lt;/blockquote&gt;&lt;br /&gt;The problem is that with the query he was using originally, the columns expanded a lot, like this sample on the steel-wheels database:&lt;blockquote style="font-family: courier new;"&gt;&lt;br /&gt;select Descendants([Time], [Time].[Months], SELF_AND_BEFORE) ON COLUMNS,&lt;br /&gt;[Markets].Children ON ROWS&lt;br /&gt;from [SteelWheels Sales] where [Measures].[Sales]&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Yeslj5UWDbY/Sc459gEbiPI/AAAAAAAAAAM/Qi_szFZSr-A/s1600-h/result1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 90px;" src="http://2.bp.blogspot.com/_Yeslj5UWDbY/Sc459gEbiPI/AAAAAAAAAAM/Qi_szFZSr-A/s320/result1.png" alt="" id="BLOGGER_PHOTO_ID_5318251938714454258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;His original approach was to use 12 subreports - one for each month, but I'd personally rather stab myself than to go through there. I tried to solve going through another route, by "crosstabing" months and days (on my steelwheels sample, years and months).&lt;br /&gt;&lt;br /&gt;I added a new "utility dimension" in my schema, containing only the months:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;dimension type="TimeDimension" foreignkey="TIME_ID" name="Time2"&gt;&lt;/dimension&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;hierarchy hasall="true" allmembername="All Years" primarykey="TIME_ID"&gt;&lt;/hierarchy&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;                &lt;table name="DIM_TIME"&gt; &lt;span style="font-family:courier new;"&gt;                &lt;/span&gt;&lt;/table&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;                &lt;level name="Months" column="MONTH_NAME" ordinalcolumn="MONTH_ID" type="String" uniquemembers="false" leveltype="TimeMonths" hidememberif="Never"&gt;&lt;/level&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;                &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;            &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By using this dimension, I can modify my query to the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;select [Time2].Children ON COLUMNS,&lt;br /&gt;([Markets].Children * [Time].Children) ON ROWS&lt;br /&gt;from [SteelWheelsSales] where [Measures].[Sales]&lt;/blockquote&gt;And get a much more legible result, either to analyze on the pivot table or to put in a report&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Yeslj5UWDbY/Sc6_apfAgLI/AAAAAAAAAAU/irXpVCRdjZU/s1600-h/result2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: left; cursor: pointer; width: 320px; height: 185px;" src="http://3.bp.blogspot.com/_Yeslj5UWDbY/Sc6_apfAgLI/AAAAAAAAAAU/irXpVCRdjZU/s320/result2.png" alt="" id="BLOGGER_PHOTO_ID_5318398674504548530" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-6437184880392283069?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/6437184880392283069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/03/interesting-olap-date-crosstab-question.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6437184880392283069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/6437184880392283069'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/03/interesting-olap-date-crosstab-question.html' title='Interesting OLAP date crosstab question'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Yeslj5UWDbY/Sc459gEbiPI/AAAAAAAAAAM/Qi_szFZSr-A/s72-c/result1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6644329693530300467.post-3575212737713659943</id><published>2009-03-28T02:59:00.004Z</published><updated>2009-03-28T03:05:22.159Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>A start like any other</title><content type='html'>About 2 years ago, when I started to work with &lt;a href="http://www.pentaho.com/"&gt;pentaho &lt;/a&gt;I made a promise to myself:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If one day I get to know at least half &lt;a href="http://www.nicholasgoodman.com/bt/blog/"&gt;this guy&lt;/a&gt; knows, I'll also start a blog to share my findings&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Guess it's time to collect the debt...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6644329693530300467-3575212737713659943?l=pedroalves-bi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pedroalves-bi.blogspot.com/feeds/3575212737713659943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/03/start-like-any-other.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3575212737713659943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6644329693530300467/posts/default/3575212737713659943'/><link rel='alternate' type='text/html' href='http://pedroalves-bi.blogspot.com/2009/03/start-like-any-other.html' title='A start like any other'/><author><name>Pedro Alves</name><uri>https://profiles.google.com/103084425334681885234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-bZghMs_RUbY/AAAAAAAAAAI/AAAAAAAAAPs/dEMD2HUQy5Y/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry></feed>
