Announcing Pentaho Developer IRC Office Hours

I’m pleased to announce that Pentaho’s Engineering Team will be hosting IRC Office Hours each week.  IRC is a great place to go and chat with Pentaho’s developers, but sometimes we’re too busy traveling the world or hacking away at the next release to catch up with folks in the irc.freenode.net ##pentaho channel.  We’re hoping that hosting office hours will allow for more collaboration, so as a community we can continue to expand and build on the #1 open source business analytics and data integration platform.

Check out the wiki for full details:
http://wiki.pentaho.com/display/COM/IRC+Office+Hours

Pentaho Data Integration 4 Cookbook: Get your swiss army knife out

This weekend I had the pleasure of reading Maria Roldan and Adrian Pulvirenti’s Pentaho Data Integration 4 Cookbook, published by Packt Publishing.  I was one of the reviewers for Maria’s first Packt book, Pentaho 3.2 Data Integration: Beginner’s Guide, as well as a Packt author myself, so when I was asked if I’d be willing to write about the most recent addition to the Pentaho collection of books, I happily obliged.

I highly recommend this book to all those out there looking to learn more about PDI.  The book has many great recipes for specific situations, but also throughout the book you learn many important swiss-army-knife-type skills that will aid you in your daily use of Pentaho Data Integration.  The book includes everything from dealing with unstructured text files to working with fuzzy logic.  As a Java developer, I especially appreciate the many uses of the User Defined Java step for the more advanced scenarios.  The book also introduces the many uses of Pentaho Data Integration within Pentaho’s BI Suite, allowing power BI Developers to create a flow of information from a transformation to a report or dashboard.

Chapter 6, Understanding Data Flows, may be the most important chapter in this book.  Managing the merging and splitting of data within a transformation requires key insights that this book covers in detail.  Having this information will allow you to take your transformation building skills to the next level.

Thanks Maria and Adrian on the wonderful piece of work!  The copy I received will reside in the bullpen at Pentaho’s Headquarters here in Orlando, I’m sure many of the Engineers here will use and learn from it!  Now don’t waste any more time, get your own copy today!

Recent Pentaho Tech Tips

Hi Folks,

I wanted to share a couple of the technical articles I’ve written in the last month:

Mondrian Cache Priming and Cache Control in the BI Server - This article covers how to take control of your Mondrian cache via action sequences, including priming the cache with MDX Queries as well as using Mondrian’s CacheControl API to flush specific segments of the cache.

Customizing your Pentaho Metadata Query in Pentaho Reporting - This article describes how to customize Pentaho’s Metadata Query Language (MQL) in a significant way before execution, allowing reports to respond to user input through prompting in ways that weren’t possible before.

Enjoy!

Will

5 Tips for Styling with Pentaho Report Designer

I’m a big fan of Google Analytics, I use it for all my personal websites to see what type of traffic I get.  One of my colleagues who is also impressed with their reports wanted to know if you could make a Pentaho Report look as good as Google’s output.  I quickly threw together the following report, to show that you can design just about anything in Pentaho Report Designer!

Check out the PDF and HTML rendering of the report.  Feel free to use the PRPT as a template for your own reports.

Here are my top 5 recommendations for folks when designing reports like this:

  1. Don’t be tempted to use the lines and rectangles.  Instead, use padding and borders of bands and elements.
  2. Inline Subreports allow you to pretty much layout anything, use them!
  3. The message-field report element is very powerful, you can specify number and date formats as part of the message: $(field, date, MMM yyyy).
  4. Make sure to test rendering in the output formats that you care about.  HTML renders as a set of tables, so you can’t have overlapping objects in your report.
  5. Take advantage of the “Paste Formatting” option, this allows you to copy colors, font sizes, etc, and will save you a lot of time.

And of course don’t forget to get a copy of Pentaho Reporting 3.5 for Java Developers :-).  The book covers many topics, you can learn a lot about formula functions, chart options, shortcut keys, and much more.

Writing Components for Pentaho Dashboard Designer 3.8.0

Beginning in Pentaho BI Suite 3.8.0, it is now possible to extend Pentaho’s Enterprise Dashboard Designer by adding custom embedded widgets to the UI.  For a while now, it has been possible to include content from the repository as dashboard widgets.  If you are writing a Pentaho BI Server plugin, modify the settings.xml to include the following xml:

    <dashboard-widgets>
      <mytype>scripts/widget/MyWidget.js</mytype>
    </dashboard-widgets>

This js file should contain your CDF Component implementation, a static method on the component called newInstance() for initial construction of the dashboard widget, along with a call to the dashboard designer to register the component:


 PentahoDashboardController.registerComponentForFileType("mytype", MyComponent);

See Analyzer’s plugin.xml and AnalyzerDashboardWidget.js for an example of the implementation.

Starting with the 3.8.0 release, it is easy to add your own embedded content into Dashboard Designer as well.   The three available embedded widget types, Chart, Data Table, and URL, have been converted over to plugins, so it’s easy to see how this can be done.

First, in a similar manner to repository content, you need to implement a CDF Component.  In addition to the basic component implementation, you also need to provide the following javascript attributes and methods to your component:

Attributes

iconImgSrc - The location of the icon image to appear in the new widget drop down list and editor panel.

localizedName - The name of the widget that will appear in the new widget drop down list and editor panel.

Methods

createWidget()  - This method is called when a user selects the widget from the new widget drop down list as seen in the image above.  This method should present the user with a UI for creating a new widget, and then create the widget, wiring it up to the dashboard after creation.

editWidget() - This method is called when a user clicks the edit icon within the widget panel.  This method does practically the same thing as the createWidget(), but also has access to the currentWidget javascript object that contains a pointer to the widget being edited.

Once you’ve defined the component you also need to register the widget type with the dashboard.  Make this call at the end of your javascript file:

PentahoDashboardController.registerWidgetType(new MyEmbeddedComponent());

Finally, register this javascript file the same way as we did above within your settings.xml file.

With just a few lines of javascript, you can create your own component for Pentaho Dashboard Designer!

Translating Pentaho

As part of our fun week this year, I began work on a tool to make it easier to contribute translations of all Pentaho projects (There are over 100!) .  Since then, I’ve been working in my spare time to get to an initial release of the project.  I now have a first cut available, and I’m looking for feedback on the tool.  I haven’t yet invested much in the UI, but now that all the plumbing is working well, we can start discussing what capabilities would be the most beneficial to folks who might want to contribute a translation.  You can download the latest here on our continuious integration server:

http://ci.pentaho.com/job/pentaho-i18n-tool/

Please check it out and let me know what you think!

Pentaho Metadata Dialect SPI

Pentaho Metadata allows business users to build reports and dashboards without the need to learn SQL.  Pentaho’s Metadata system takes business user queries and translates them into SQL based on a model described by an administrator.  Today, Pentaho Metadata supports the most popular backend SQL database dialects, generating the correct SQL for Oracle, MySQL, Microsoft SQL Server, and more.

Before, if you wanted to contribute a new SQL dialect for another database for use with Pentaho Metadata, you’d have to submit a patch to the project.  Now, all you need to do is follow the simple instructions here, which utilize Java’s Service Loader API, and plug in your own dialect.  This is a great enhancement!

Lego Skill Crane: The Claw

Over the weekend I completed my latest project, a Lego skill crane, including a video and instructions on how to build it yourself. The idea spawned from my 4 year old’s interest in Toy Story. The project has been featured on many blogs, including Ubergizmo, Make: Blog, Hack A Day, Neatorama, The NXT STEP, and Fascinating Lego Model of the Day.

Using the ICacheManager in Pentaho’s BI Server

Caching objects is a core capability of any server architecture. Within Pentaho’s BI Server, we have a simple API for defining caches that any plugin or component can use easily.  In a Java environment, the simplest cache is a java.util.Map.  This is used often and unfortunately it has some major drawbacks, the primary one being that you can run out of memory if you’re not careful.  Why invent your own caching solution when there is one that can easily be used?

Pentaho defines a simple org.pentaho.platform.api.engine.ICacheManager interface, and the default implementation, org.pentaho.platform.plugin.services.cache.CacheManager, uses Hibernate’s Cache.  Here is a simple code example that demonstrates using Pentaho’s ICacheManager:

// get a reference to ICacheManager
ICacheManager cacheMgr = PentahoSystem.getCacheManager(pentahoSession);

// create a cache region if necessary
if(!cacheMgr.cacheEnabled("my_plugin_cache")) {
cacheMgr.addCacheRegion("my_plugin_cache");
}

// store an object into the cache
cacheMgr.putInRegionCache("my_plugin_cache", "url_1", "http://www.pentaho.com");

// now retrieve the item from the cache
String url = (String)cacheMgr.getFromRegionCache("my_plugin_cache", "url_1");

// now clear the cache
cacheMgr.clearRegionCache("my_plugin_cache");

That’s it!  To learn more about how to use the ICacheManager, check out our BI Server documentation at http://wiki.pentaho.com/display/ServerDoc2x/Using+PentahoSystem+ICacheManager.

Agile BI Update

Since we announced Agile BI back in 2009, we’ve been busy developing the initial set of features that demonstrate how a BI developer can quickly build models and analyze data within our ETL product, Pentaho Data Integration.  This past week, Jake Cornelius, our Director of Product Management, demonstrated Agile BI at the TDWI Bake-Off.  The audience was impressed, voting for Pentaho in the “Cool Stuff” category.  The team is now executing on its final feature sprint, and we’re aiming to release RC1 of the product around the end of March.  Check out the most recent milestones over on Agile BI’s community website!

Next Page »