Quantcast
Channel: Pedro Alves on Business Intelligence
Viewing all 186 articles
Browse latest View live

Security vulnerability found: 4.8 -> 5.2 - Please act

$
0
0

This is one of the biggest advantages of open source software. A few weeks back we got an email from a community user (thanks Greg!!) reporting a possible security vulnerability.

Turns out he was indeed right! This vulnerability affects all (supported) versions of the BA platform until 5.2. (so 4.3, 4.5, 4.8, 5.0, 5.1 and 5.2), and had to do with some crappy legacy jpivot code that was left behind. And it was a huge pile of work, but we were able to stop all the machines in the factory and 5.3 already has this fix (5.3 was built already, so we have a huge warehouse full of 5.3 software builds that we threw away ;)  )

Please refer to this support note where you can get an hotfix for the issue.

It took me some time to get to this blog post cause we had the moral obligation to notify our customers first - plus, it was the first time ever that we found one of these; Next time, that I hope will never exist, we'll be faster :)

Patch away!



-pedro

New Ctools release 15.02.26

$
0
0
One more release, lots of new stuff!

http://www.webdetails.pt/ctools-changelog/2015/march/



NOTE: Release 15.02.26 is no longer compatible with Pentaho 5.0.x. For the 5.0.x code line, the last available release will be 14.12.10 (or 14.12.10.1)

Community Dashboard Framework - Version 15.02.26

Bug

  • [CDF-379] - CCC - A very small axisSize sometimes leads to an infinite loop
  • [CDF-422] - CCC - Tooltip moves when hovering over a chart dot
  • [CDF-428] - Cross domain Ajax requests are not working due to jquery feature
  • [CDF-442] - CCC - Error "size is undefined" thrown when no data
  • [CDF-469] - CCC - Broken example - Paired Bar-Line Measures
  • [CDF-471] - Remove SchedulePrptComponent scheduleRequest's implicit global
  • [CDF-473] - Sparkl doesn't open in IE8
  • [CDF-474] - Select2 plugin: can't set dropdownAutoWidth property to false
  • [CDF-480] - CCC - Typo "_dimensionsLIst" can cause memory leak
  • [CDE-447] - ViewManager custom component fails to save/load views

Improvement

  • [CDF-355] - As a dashboard developer, I'd like CDF to provide a date formatting library more powerful than the default Date object.
  • [CDF-458] - Build capability to format numbers into CDF
  • [CDF-470] - Update the Font Awesome toolkit to the latest version 4.3.0
  • [CDF-472] - Optimize TableComponent performance
  • [CDF-475] - As a user, I want to be able to customize checkbox and radio button input elements.
  • [CDF-486] - As a dashboard designer, I would like a plain or blank CSS starting option, so that my dashboard loading is optimized and my custom CSS is clean.

New Feature

  • [CDF-149] - Add Support for Stacked CCC Bar Charts to display as a percentage of the total stack
  • [CDF-406] - CCC - Sunburst - Add documentation, site examples and create the CDE component

Task

  • [CDF-447] - Downgrade fancybox.jquery to version 1.3.5

Community Dashboard Editor - Version 15.02.26

Bug

  • [CDE-269] - Running dashboards from absolute paths does not build correct paths
  • [CDE-273] - CDE folder structure creation in not being triggered at startup, but only upon first CDE Environment instantiation
  • [CDE-286] - CGG Dial Componente - Bug while trying do see using URL
  • [CDE-303] - Bootstrap Widgets showing error messages in logs
  • [CDE-393] - Upgrade jquery mobile version in CDE
  • [CDE-406] - Drag and drop / reorder doesn't work for teh freeform layout
  • [CDE-417] - Layout issue in Export Chart window
  • [CDE-432] - Pressing down in property 'Text Align' doesn't go to the first option
  • [CDE-437] - AjaxRequestComponent fails to trigger components that are listening to the updated parameter
  • [CDE-438] - CggComponent fails to process parameters
  • [CDE-439] - DuplicateComponent fails when duplicating the HTML object for the new duplicated component
  • [CDE-440] - Olap selector component's addPreSelectValues function fails to calculate depth when a qualifiedName contains the '.' char
  • [CDE-442] - The CDE folder that gets created under public should be hidden
  • [CDE-445] - CDE audit logging causing Pentaho Operations Mart ETL to fail
  • [CDE-446] - When creating a Kettle over kettleTransFromFile datasource the path is changed and doesn't work
  • [CDE-447] - ViewManager custom component fails to save/load views
  • [CDE-452] - Users without Write access to the dashboard file should not be able to view the file in Edit Mode
  • [CDE-453] - Creating new Widget, it's not available on the Components pallete
  • [CDA-110] - CDA error using Full Outer join in CDE
  • [BISERVER-11865] - CDE folder creation mechanism (on plugin boot-up) does not work in 5.1.0

Improvement

  • [CDE-149] - CSS issue when we are editing a list of parameters (only noticed with more than 5 rows)
  • [CDE-403] - Edit/Add fields doesn't change focus
  • [CDE-410] - Add navigation shortcut keys to CDE layout and tables
  • [CDE-412] - "Sql Wizard" editor used for all types of Queries
  • [CDE-418] - PopupComponent: As a developer I would like to customize the popup's overlay
  • [CDE-421] - Add an option to close the preview window
  • [CDE-422] - Warning window to big when apply template
  • [CDE-424] - ExportPopupComponent - alternative to shift+g
  • [CDE-425] - Add shortcut keys to CDE Operations
  • [CDF-406] - Sunburst - Add documentation, site examples and create the CDE component
  • [CDF-149] - Add Support for Stacked CCC Bar Charts to display as a percentage of the total stack
  • [CDF-458] - Build capability to format numbers into CDF
  • [CDF-355] - As a dashboard developer, I'd like CDF to provide a date formatting library more powerful than the default Date object

Task

  • [CDF-447] - Downgrade fancybox.jquery to version 1.3.5  


Community Data Access - Version 15.02.26

Bug

  • [CDA-105] - MondrianJNDI - Mime Type incorrect
  • [CDA-106] - CDA Cache Manager - Operation refresh update 'Last Execution' field
  • [CDA-110] - CDA error using Full Outer join in CDE
  • [CDA-112] - Export query with more ten parameters to excel
  • [CDA-121] - Exporting sql-jdbc sample to .xls returns 500 error
  • [CDE-446] - hen creating a Kettle over kettleTransFromFile datasource the path is changed and doesn't work

Improvement

  • [CDA-116] - Have CdaLifecycleListener implement IPlatformReadyListener
  • [CDA-117] - Add extra cache keys via properties file or other system wide mechanism 

Community Graphics Generator - Version 15.02.26

Improvement

  • Upgraded to last CCC release 


Community Chart Components - Version 15.02.26

  • [CDF-406] - Sunburst - Add documentation, site examples and create the CDE component
  • [CDF-379] - A very small axisSize sometimes leads to an infinite loop * Now, really fixed it.
  • [CDF-442] - Error "size is undefined" thrown when no data * Fixes the regression, i.e. the NPE error, not the fact that the No Data message is not displayed.
  • [CDF-422] - Tooltip moves when hovering over a chart dot
  • [CDF-149] - Add Support for Stacked CCC Bar Charts to display as a percentage of the total stack
  • [CDF-458] - Build capability to format numbers into CDF
  • [CDF-469] - Broken example - Paired Bar-Line Measures
  • [CDF-480] - Typo _dimensionsLIst can cause memory leak 

Community Distributed Cache - Version 15.02.26

Improvement

  • Maintenance release - keep compatibility with latest ctools version 


Community File Repository - Version 15.02.26

  • First Stable release for CFR for the Pentaho 5.x codeline 


Community Data Validation - Version 15.02.26

Improvement

  • Maintenance release - keep compatibility with latest ctools version

      

CTE - Community Text Editor

$
0
0

A new plugin

Another Ctool! This one came directly out of a "Whatever week" we did here at webdetails. The devs joined in groups of 3 and had a couple of days to do... whatever they wanted, as long as it fit in the general roadmap / pentaho goals.
And I'm thrilled to be able to announce that one of them already made it's way to a distributable product! A new - and very very handy - ctool, available in the Pentaho Marketplace.
And right in time to be announced at PLUG - Pentaho London User Group!

Motivation

You figured it out by now - it's a text editor! But why? Simply put, because on a daily basis it's very common the need to just quickly edit some content on the solution repository without having to go through the process of download / upload.
We had this ability somewhat in CDE, where we can use it to edit some js / css files - but the need to edit others is there.
This is, obviously, a power user / admin tool, not a general end user tool, but that doesn't make it less relevant. I'll use it, and that's all I care :)

CTE




CTE is available through the tools menu (a setting that can be changed in the configuration file) and leverages the capabilities of the Ace editor, so we get a great syntax highlighter and some error checker for the languages it supports.
We also registered it so that you can directly click Edit from the browse files perspective on some file types:
  • html
  • xml
  • txt
  • html
  • css
  • properties
  • cdfde

Security

We took special care with security... Only files for which the user has write permissions can be edited. But on top of that, we're explicitly denying access to some files:
  • prpt
  • ktr
  • kjb
  • binary images
  • compressed files
These settings, and more, can be changed in the system/cte/settings.xml file.

Providers

CTE is pluggable, and you can define multiple Providers; That's the list that appears in the accordion on the left of the UI; Currently we support 4 providers, as defined in the file system/cte/plugin.spring.xml, but anyone can develop a new provider, and a new top level choice will appear in CTE.

Content repository provider


This provider allows us to browser and edit files that exist on the server's content repository.

Mondrian schema provider


Super useful - allows us to directly edit mondrian schema files! There's some apps on the marketplace for the same purpose but we thought it would be extremely useful to include it here.
As soon as you save schema changes, the cube will be refreshed and you can immediately see the results. Please not that while ace shows great feedback on your xml structure, it won't guarantee that it's a valid mondrian schema. Keep an eye on the logs!

Generic file system provider


This is a generic file system provider to be used to edit the plugins / directory present in the system folder; By default, we have an instantiation of that provider for cte plugin

Sparkl file system provider

Of course we had to include a plugin that will detect and allows us to edit the resources in sparkl apps (except sparkl itself, for security reasons) - after all, sparkl is amazing, we all know that :)

License and source

MPLv2, and you can find it, what a surprise, at github

Credits

All credits go to the team that built it:
  • Pedro Teixeira
  • André Jorge
  • Pedro Gonçalves
Astonishing work, guys!


-pedro

Pentaho Day 2015 - Curitiba, Brazil, May 15/16

$
0
0

PentahoDay - May 15-16, Curitiba, Brazil


It's almost time for PentahoDay Brazil, the biggest Pentaho community event in the world. Yes - even bigger than the legendary PCM, that happens yearly in Europe.

This year it's a 2 day event with over 50 presentations, use cases and even mini-labs for some hands-on experience, for both novice and advanced users and over 30 speakers - including Pentaho rock star and Chief Architect Will Gorman. (yeah, I'll be there too but they're so fed up with me already that I don't even count anymore :) ). Here's some of the faces that are going to be presenting

PentahoDay Speakers


This year the event will take place in Curitiba, Brazil, and here's the up to date agenda. Pretty impressive.

There's room for 400 (!) attendees and looks like we'll soon have a full event (!!). So register while you can. If you're in Brazil, just do it. If you're not and are familiar with Portuguese, go. And if you're even not familiar with Pentaho - Go anyway!

Pentaho Bigdata + Sparkl training - May 11-13, Curitiba, Brazil



And because unfortunately I can't just fly around the world for this events, I need to get some way to actually pay for my plane ticket! So.... on the week of the event I'm also giving a 3 days onsite training session in Curitiba for Pentaho Bigdata and Sparkl. A huge opportunity to get acquainted with this fundamental set of technology!

All info on this website!


See you soon!


-pedro


New Ctools Versions - 15.04.16

$
0
0


There you go! One more, available on the usual places!

 

Community Dashboard Framework - Version 15.04.16

Bug

  • [CDF-395] - CCC - valuesOptimizeLegibility does not work in a horizontal heat-grid
  • [CDF-412] - CCC - Bar plot - Null value label is visible
  • [CDF-444] - CCC - userSelectionAction triggered by rubber-band selection does not re-render when null or [] is returned.
  • [CDF-450] - CCC - Sunburst - Undocumented option "SliceBrightnessFactor"
  • [CDF-477] - CCC - Cartesian axis fixed size is not respected when there's no axis data
  • [CDF-479] - CCC - Tooltip fails to show the interpolated value in some cases
  • [CDF-481] - CCC - Tipsy uses function from undeclared dependency def.js
  • [CDF-482] - CCC - Tipsy - Log level no longer synchronized with that of CCC
  • [CDF-487] - CCC - Point plot panel - Scene generation is missing some null category scenes
  • [CDF-493] - CCC - Disabled legend item label shows "text" mouse cursor
  • [CDF-496] - CCC - Function declaration inside If does not work consistently across browsers
  • [CDF-498] - CCC - multiple selection - CTRL + click does not work on Mac
  • [CDF-501] - Dashboards.context.params is not receiving the parameter defined in the URL
  • [CDF-504] - CCC - expose baseAxisFont for CCC Charts on CDE's advanced properties
  • [CDF-511] - dateFormat's args are inconsistent with numberFormat

Improvement

  • [CDF-497] - CCC - Pointing radius Infinity is a bit too infinite
  • [CDF-512] - Add a Dashboards.dateParse

New Feature

  • [CDF-478] - CCC - Add a renderedCallback 


Community Data Access - Version 15.04.16

Bug

  • [CDA-118] - Export query with integer parameters to excel does not work anymore.
  • [CDA-123] - Have feedback when there's error. Or just don't lock the previewer
  • [CDA-130] - Scriptable JSON data source: null values not supported
  • [CDA-133] - CDA editor doesn't display file contents (error loading page)
  • [CDA-136] - Exuding column doesn't rename to correct column name (display the excluded column)
  • [CDA-137] - Error when opening a dashboard with Joins

Improvement

  • [CDA-117] - Add extra cache keys via properties file or other system wide mechanism
  • [CDA-122] - When we use the "Columns" property, we need to clear the CDA Cache
  • [CDA-127] - Deal with invalid numbers, such as 0/0
  • [CDE-443] - Expose CDA extra cache keys in CDE editor

New Feature

  • [CDA-119] - Scriptable JavaScript Data Source

Story

  • [CDA-124] - Exporting to .xls empty parameters results in 500 error

Task

  • [CDA-98] - Review jquery dependencies


Community Dashboard Editor - Version 15.04.16

Bug

  • [CDE-268] - Unable to select a polygon created using an .kml file.
  • [CDE-319] - ColorMap for shape in NewMapComponent
  • [CDE-356] - Trying to create a new dashboard from a saved dashboard fails server-side error
  • [CDE-409] - Save div doesn't appear when page is scrolled down
  • [CDE-456] - Error saving dashboards with CggDialComponent
  • [CDE-459] - Apply Template window - issue with slider arrows
  • [CDE-460] - Olap selector component's template variable is overriden by another component
  • [CDE-464] - Review all SelectRenderers autocomplete data, to remove empty suggestions
  • [CDE-465] - Several issues with the scripting datasources
  • [CDE-467] - scroll keys also scroll page when there's a scroller
  • [CDE-468] - When saving dashboard if you input file name and then click folder input text is deleted
  • [CDE-471] - On Popup Component Reference dragging first popup results in it jumping to bottom of page
  • [CDE-472] - On Addin Reference sample the "Hyperlink" section has innacurate information
  • [CDE-474] - After preview a CDE Dashboard the tmp files created persist in the directory
  • [CDE-478] - When adding resource popup doesn't close
  • [CDE-484] - This change will break all dashboards using default _.templateSettings
  • [CDF-443] - CCC - Sunburst - Misbehavior of colorRole and colorMode
  • [CDF-501] - Dashboards.context.params is not receiving the parameter defined in the URL

Improvement

  • [CDE-443] - Expose CDA extra cache keys in CDE editor
  • [CDE-455] - Radio Button Component --- Option to Default not visible
  • [CDE-463] - In CDE the status notifications look&feel should reflect the type of message being displayed
  • [CDF-478] - CCC- Added a rendered callback.
  • [CDF-450] - CCC - Sunburst - Undocumented option "SliceBrightnessFactor"
  • [CDF-504] - CCC - expose baseAxisFont for CCC Charts on CDE's advanced properties
  • [CDA-119] - Scriptable JavaScript Data Source


Community Graphics Generator - Version 15.04.16

Bug

  • [CDF-482] - CCC - Tipsy - Log level no longer synchronized with that of CCC

Improvement

  • Upgraded to last CCC release 


Community Chart Components - Version 15.04.16

  • [CDF-395] - valuesOptimizeLegibility does not work in a horizontal heat-grid
  • [CDF-412] - Bar plot - Null value label is visible * Hiding null bars, by default.
  • [CDF-443] - Sunburst - Misbehavior of colorRole and colorMode
  • [CDF-444] - userSelectionAction triggered by rubber-band selection does not re-render when null or [] is returned. * Now calling userSelectionAction from within the _updatingSelections, like in other places.
  • [CDF-450] - Sunburst - Undocumented option "SliceBrightnessFactor"
  • [CDF-477] - Cartesian axis fixed size is not respected when there's no axis data
  • [CDF-478] - Added a render callback
  • [CDF-481] - Tipsy uses function from undeclared dependency def.js
  • [CDF-482] - Tipsy - Log level no longer synchronized with that of CCC
  • [CDF-487] - Point plot panel - Scene generation is missing some null category scenes
  • [CDF-493] - Disabled legend item label shows "text" mouse cursor
  • [CDF-496] - Function declaration inside If does not work consistently across browsers
  • [CDF-497] - Pointing radius Infinity is a bit too infinite
  • [CDF-498] - multiple selection - CTRL + click does not work on Mac
  • [CDF-504] - expose baseAxisFont for CCC Charts on CDE's advanced properties
  • [CDF-510] - Bar Chart - OverflowMarkers Visible on Zero-valued bars when orthoAxisFixedMin/Max is 0


Community Data Validation - Version 15.04.16

Improvement

  • Maintenance release - keep compatibility with latest ctools version


Community Distributed Cache - Version 15.04.16

Improvement

  • Maintenance release - keep compatibility with latest ctools version 










Pentaho Ctools Changelogs

$
0
0

On my latest blog post I announced the release of a new Ctools versions. I always publish that kind of entry as soon as I get that notice from our engineering team.

However - there's a much better way to follow what's been happening on the ctools. Our UX team always puts up this information on a much, much better way than I can aim for.

You can access the Ctools changelog directly from the website. And let me tell you - I challenge you to find any project that does them better than we do. Don't believe me? Take a look at the site or just scroll down to see the different themes for the previous 4 ctools releases (it was when we started doing them)

Ctools Version 15.04.16 - House Ctools

http://www.webdetails.pt/ctools-changelog/2015/april/


Ctools Version 15.02.26 - And the winner is...

http://www.webdetails.pt/ctools-changelog/2015/march/


Ctools Version 14.12.10 - Twinkle twinkle

http://www.webdetails.pt/ctools-changelog/2014/december/


Ctools Version 14.10.15 - Don't fall behind

http://www.webdetails.pt/ctools-changelog/2014/october/




 

Pentaho 5.4 Released (and CE too)

$
0
0
Last week it was announced that Pentaho became officially an Hitachi Data Systems company. And a while back, when the news around the intent for acquisition came out I blogged about it and guaranteed that we wouldn't be abandoning our Open Source heritage.

Well, 5 days after the finalization of the deal...

Pentaho 5.4 (EE and CE) is available

You can get it from the usual places:
And what's new here? Lemme do a very quick overview

New PDI look and feel (CE/EE)

Our beloved PDI (I still call it Kettle) now has an amazing face to match it's amazing capabilities. It behaves great - now it also looks great. And it's much more than icons, we added SVG support to it. Just try it!


Analyzer API Extensibility (EE)

Extension points give developers greater control over layout, styling, and interactivity when embedding Pentaho Analyzer. This is the result of a work that started on 5.3 and was just finished



DI REST API Documentation (EE)

Well, all our documentation is open and available, but the Data Integration Server is an EE component. Documentation is always fundamental, and we're paying attention to this more and more on every release

BA Server Utilities (CE/EE)

Plugin that enables PDI to communicate with the Pentaho Platform, gets the list of endpoints made available by it, and in a very simple way execute actions on the platform.

When published in the server, PDI transformations that use this step can do a local execution, bypassing the specified authentication
and running with the permissions attached to the current user


Ctools support for Require.js in CDF/CDE (CE/EE)

This is so huge I'll dedicate a new blog post to this later. We did a major refactor on the Ctools, restructuring CDF/CDE as an AMD-based framework by using Require.js.

Named Hadoop Clusters (CE/EE)

Every Hadoop step has UI to specify the NameNode and port, JobTracker and port etc. We simplified the UI and now we have a single dialog where users can enter all the required information about the cluster. That info is saved as a named configuration and be selectable within each Hadoop step that needs it.

AWS EMR Shim Support (CE/EE)

We now have full support for a shim that runs on amazon EMR, including S3 support! ETL at scale on this highly used platform!

SAP HANA for PDI (EE)

SAP HANA is an in-memory columnar database that provides support for both high speed transactions and complex analytical queries. It is the foundation for all next generation SAP Analytics & ERP applications.

Spark Integration (CE/EE)

Spark is an in-memory processing engine that can be clustered/scaled using Hadoop. It’s original use case was for data scientists to issue statements that would load sets of data into memory, and then issue a series of queries against that data to investigate it. Spark can run on top of Hadoop using HDFS as its distributed file system. It is widely believed that Spark will replace MapReduce as the Hadoop distributed computing engine.

To improve the orchestration ability, we created a PDI Job Step to execute compiled java code that Spark developers create. Through labs we're working on a full shim support, but this is a great start!

SDR / Modeling improvements (EE)

We're adding more and more capabilities into what - in my opinion - will be the proper approach to modeling in our stack: start bringing business information at the source of the data!
In 5.4 we have:
  • Metastore – enable the reuse of metadata for sharing between transformations.
  • Support for Shared Dimensions in auto modeler – Allows more complex schemas and the ability to reuse dimensional tables like time. Allows reuse across multiple SDR implementations and even help build dimension tabled for traditional DWHs.
  • Star Schema support in auto modeler – Expand support from single table (today) to star schemas

Localization for Pentaho User Console (CE/EE)

Professionally translated, tested and supported language packs developed by a contracted localization company for French, German and Japanese. It's a great extension to the work done by the community (and that still exists) around the community language packs

Mongo 3.0 (CE/EE)

Mongo launched a major version and some of the old apis were deprecated. Updated!

Google Analytics step in PDI (CE/EE)

Google changed the authentication to Google Analytics, and the old step broke. Fixed (even though it requires some work. A blog post on this later)

---------------------------------------

An amazing release! The best so far! Better than this one, only the next one ;)

Cheers!


-pedro

Number and Date formatting in Ctools dashboards

$
0
0
Number and date format is a very important part of any dashboard development. Happens all the time. 

Historically, CDF has used a helper function very similar to the good ol'sprintf function. However, really falls short to the needs we have.

The same goes for date parsing and format
So we improved the support for it by introducing two utility functions:

  • numberFormat
  • dateFormat 
The following documentation is actually available from within the

Format Number And Date

CDF has a default library to format numbers i.e. cdo.NumberFormat and other to format dates i.e. moment

Q: How can I format numbers in CDF?

A:

In CDF we provide the function Dashboards.numberFormat to format numbers with a given mask using the dashboard default language or optionally with a specific language.
The mask syntax is mostly compatible with VB's format function mask syntax, only the number related subset is relevant.
Other elements of this mask syntax are 'C' or 'Currency' and 'A' or 'Abbreviation' to insert the currency symbol and abbreviate the number.

Examples:

1. Format a number using the dashboard language, e.g. 'en-us':

    Dashboards.numberFormat(1200, '0,#.0')                -> "1,200.0"
Dashboards.numberFormat(1200, '0,0.#') -> "1,200"
Dashboards.numberFormat(1200.46, '0,0.#') -> "1,200.5"

Dashboards.numberFormat(5480, '0.00 Abbreviation') -> "5,49 k"
Dashboards.numberFormat(5480000, '0.00A') -> "5,49m"
Dashboards.numberFormat(5480000000, '0.00A') -> "5,49b"
Dashboards.numberFormat(5480000000000, '0.00A') -> "5,49t"

Dashboards.numberFormat(4500.64, '0,0.0\u00a4') -> "4,500.6$"
Dashboards.numberFormat(4500000.64, '0,0.0 Currency') -> "4,500,000.6 $"
Dashboards.numberFormat(4500.64, 'C 0,0.0') -> "$ 4,500.6"

Dashboards.numberFormat(0.2, '0.00%') -> "20.00%"
Dashboards.numberFormat(1200, '0.0e00') -> "1.2e03"
Dashboards.numberFormat(4500000, '0.0AC') -> "4.5m$"
2. Format a number using a specific language, will use fallback logic if the specified language isn't found:

    Dashboards.numberFormat(4500.64, '0,0.0 C', 'pt-pt') -> "4,500.6 €"
Dashboards.numberFormat(4500.64, 'C 0,0.0', 'en-gb') -> "£ 4,500.6"
Dashboards.numberFormat(4500.64, 'C 0,0.0', 'xx-zz') -> "$ 4,500.6" *Fallback to the default 'en-us'*

Q: How can I format dates in CDF?

A:

Similar to number format, here we provide the function Dashboards.dateFormat to format a date with a given mask.
For a detailed list of examples on how to use moment click here.
The mask syntax is explained in detail here.
To add more languages to moment you can do two things:
  • Manually configure a new language using the function Dashboards.configLanguage described in the next section with a configuration object as described here.
  • Import a locale configuration file from 'moment/locale/' to a folder in the repository, e.g. '/public/cdf/locale' and load it in the dashboard using the 'Add Resource - external javascript file' operation

Examples:


    Dashboards.dateFormat(moment(),'DD/MM/YY')                                        -> "19/06/15"
Dashboards.dateFormat(moment(), 'dddd Do MMMM YYYY') -> "Friday 19th June 2015"
Dashboards.dateFormat(
moment('13-08-1983', 'DD-MM-YYYY'), 'D MMM, YYYY') -> "13 Aug, 1983"

Q: How can I configure new or existing languages?

A:

To configure a new or existing language you can use the function Dashboards.configLanguage by specifying the language code and a configuration object with the keywords:
  • number - to configure number's format language
  • dateLocale - to configure date's format language

Examples:

1. Configure the number's format language:

    Dashboards.configLanguage('foo-bar', {
number: {
mask: '#,0.##',
style: {
integerPad: '0',
fractionPad: '0',
decimal: ',',
group: '',
groupSizes: [3],
abbreviations: ['k','m', 'b', 't'],
negativeSign: '-',
currency: 'F'
}
}
})
2. Configure the date's format language:

    Dashboards.configLanguage('foo-bar', {
dateLocale: {
months: [
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
],
monthsShort: [
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
]
}
})
3. Configure both format language:

    Dashboards.configLanguage('foo-bar', {
number: {
mask: '#,0.##',
style: {
integerPad: '0',
fractionPad: '0',
decimal: ',',
group: '',
groupSizes: [3],
abbreviations: ['k','m', 'b', 't'],
negativeSign: '-',
currency: 'F'
}
},
dateLocale: {
months: [
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
],
monthsShort: [
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
]
}
})

Themes and rules for PDI Icon design

$
0
0

 As I mentioned recently as part of the 5.4 release, PDI has an entirely new look and feel. And together with it the Pentaho UX team decided to clarify a set of rules to help whoever's designing a plugin to be able to build their own icons w/o losing the overall look and feel consistency. 

That page can be seen here, and reposted below for convenience

-------


This design guideline is intended to help you maintain consistency with other user interface elements within Pentaho Data Integration. It's recommended that you create your icon in vector shapes using a design tool which saves or exports to Scalable Vector Graphics (SVG) Version 1.1 format. Vector shapes allow assets to be scaled up without loss of detail and crisp edges. The W3C offers a list of programs that support SVG.

The Anatomy of a PDI Icon

The PDI icons have had a face lift for 5.x. These new icons have been simplified, but continue to emphasize what makes PDI
​a great tool, blending data with ease. This section will review the breakdown of what goes inside these newly designed icons.
anatomy.jpg
1.jpg
  The primary stroke color is #3D6380
2.jpg
  The primary stroke is 1.7pt
3.jpg
  The secondary stroke size is 0.8pt
  

Positioning Action Indicators    

   
position
1.jpg
For any PDI icon which requires an action indicator, the icon must
have the secondary element placed in the top-left or bottom-right
corner of the icon.
1.jpg
The primary element within the icon is recommended to have
a 45º angle sliced through, and the secondary element placed
in that spot.

Action Indicator Badges
Edit section

input
Input / Import /
Get / Download / Extract / Read

output
Output / Upload /
Export / Insert /
Put / Write

validates.jpg
Validate

create
Create

compare
Compare

wait
Wait
block
Block

execute
Execute / Call

search.jpg
Search / Lookup / Exists
Bulk Load
Bulk Load

Encrypt
Encrypt

Generator
Generator /
Processor
delete
Delete

Decrypt
Decrypt

Upsert
Upsert
Update
Update

Move
Move

Set
Set

Color Palette    

Primary Colors
Extended Color Palette
 

Downloading PDI Icon Template

You can use our SVG template file, (PDI_Icon_Guide.ai), as a starting point for creating a PDI icon.  This file is bundled with the other samples in the Pentaho Data Integration SDK.  You can download it here.

Pentaho Ctools tutorials - Redux

$
0
0
I think I forgot to blog about this - but a while back we revamped all the Pentaho Ctools tutorials that are available on the webdetails website. They were great - now they are amazing! A must have for anyone that wants to lean how to do great looking dashboards using the Pentaho Ctools stack - mostly CDF, CDE, CDA and CCC.

CDE Tutorial


Updated content to reflect the latest improvements (mostly around the usage of bootstrap) and a great look and feel. All the information here


CDE Tutorial

Open Demos


This used to be showcase of some real dashboards. Now it's a showcase of real dashboards and amazing design. The UX team did a complete overhaul of them. They look amazing! Check them out:

T-wars

C'mon, Luke!

Automotive & Co

A bit hit in Detroit?

Theme Park

Uncle Scrooge would be proud

Retail.Co

Retail.co sales dashboard

Number 1


Saving the best for last - Always #1

Get them

You can get the tutorials from the website - they're pretty inexpensive, it's mostly to fund the continuous development of the tools.

We offer a 1 year free of updates, so if you bought them recently and don't yet have this version, just email us and we'll send them to you.

Thanks for your help!


-pedro



Ctools 15.06.30 available

$
0
0

And a new set of releases! This one is HUGE, as it's the first where CDF / CDE were totally refactored into supporting require.js integration. More on this later.

And as you can see from the changelog, there's soooo much more than that.

Like before, we also made available a web version of the changelog, with a very appropriate theme!



CDF - Community Dashboard Framework - Version 15.06.30

Bug

  • [CDF-236] - Clicking many times on a Button Component in a short period of time triggers many server-side actions
  • [CDF-401] - CCC - Point and Metric Point plots - The dot_shapeRadius and dot_shapeSize extension points work in unexpected ways
  • [CDF-418] - Comment Component - A new div is added when can Try Me
  • [CDF-426] - CommentsComponent - input text on comments box isn't totally displayed
  • [CDF-448] - CGG: Export fails when the chart contains the "skip-ticks" marker
  • [CDF-502] - Bug PopupExportComponent with array parameters
  • [CDF-515] - Heatgrid sample referring CDE
  • [CDF-524] - Change sample on prptComponent to point to other report
  • [CDF-525] - Charts don't render in require dashboards in IE8
  • [CDF-528] - Comments Component require sample after interacting with the sample a second interaction is blocked
  • [CDF-531] - AutocompleteBoxComponent doesn't refresh the list when removing a character
  • [CDF-535] - Executing a CDA query in the traffic component results in dashboard's runningCalls equaling -1
  • [CDF-541] - Dashboards.numberFormat is changing the default mask of the language provider in cdo
  • [CDF-542] - Error with Popup Component
  • [CDF-548] - When updating a table component, with an open expanded row, further expands on the updated component are always empty.
  • [CDF-550] - css files not found opening PrptComponent/ExecutePrptComponent samples
  • [CDF-552] - XMLA queries fail to execute
  • [CDF-553] - In the requireJS version of the UnmanagedComponent, falsy parameter values are not being passed correctly to queries
  • [CDF-559] - CCC - Grouped Area Chart - Area transparency effect does not respect the color scale opacity
  • [CDF-561] - CCC - Metric Point / Point plots - When dotsVisible is false, the styling of Active dots ignores the ShowsActivity mark flag
  • [CDF-562] - CCC - Metric Point / Point plots - When dotsVisible is false, the size of Active and Alone dots does not exactly match the line width
  • [CDF-566] - SessionAttributes on dashboardsContext.xml not working as expected
  • [CDF-567] - Embedded require dashboards do not store the dashboard path
  • [CDF-568] - context not available inside a require dashboard
  • [CDF-571] - fix non-deterministic JS unit tests
  • [CDF-575] - SchedulePrptComponent - Align fields after select recurrence
  • [CDF-551] - Creating a table with Sparkline column, it's tooltips are not well formatted

Improvement

  • [CDF-313] - Review the Dashboard logging mechanisms
  • [CDF-507] - Some code is breaking in Internet Explorer 8 because it does not natively support String.prototype.trim()
  • [CDF-546] - Make width of DateInputComponent and other dashboard prompt fields configurable or at least overridable via css
  • [CDF-549] - Add pdf as a mimetype in cpf's MimeTypes
  • [CDF-560] - CCC - Interactive options at the panel and mark level: selectable, hoverable, ...
  • [CDF-563] - CCC - Cartesian Axis - Do not show "value" tooltip unless really needed
  • [CDF-569] - CDF should allow resources to be served by cache on reload

New Feature

  • [CDF-328] - Add support for Require.js in CDF
  • [CDF-494] - Incorporate Template Component into CDF
  • [CDF-564] - CCC - Active Scene Event
  • [CDF-565] - CCC - Events
  • [CDF-579] - Integrate new Selector component into CDF
  • [CDE-479] - Include the "unmanagedQueryComponent" as a standard CDE component

Task

  • [CDF-491] - Remove GetHeaders endpoint from CDF's public api
  • [CDF-516] - Migrate xmlaQueries as a requireJS module 


CDE - Community Dashboard Editor - Version 15.06.30

Bug

  • [CDE-397] - It is possible to save a dashboard with no name
  • [CDE-454] - CDA datasources are created referencing the cda file's complete path
  • [CDE-509] - When using up and down arrows to navigate chart's advanced properties view doesn't scroll along with selected property
  • [CDE-510] - When using up and down arrows to navigate Components Panel it also scrolls the accordion
  • [CDE-514] - As a developers, when I'm using the ExportPopupComponent, I don't get all the options on the 'Data/Chart Component to Export' property
  • [CDE-517] - Sample CGG Component doesn't display any image
  • [CDE-519] - Review Olap Selector sample
  • [CDE-520] - Bullet Chart doesn't render all charts
  • [CDE-521] - Bullet Chart (requirejs) doesn't display charts
  • [CDE-524] - Minification order causes errors to appear because of missing semicolons in some javascripts statements
  • [CDE-529] - Opening component parameter popup does not block use of arrow keys to navigate properties
  • [CDE-536] - Fails to save a dashboard with the char '$' in the Title or Description
  • [CDE-538] - ExportPopupComponent fails to export PNG and SVG charts
  • [CDE-542] - When requiring a dashboard, using the getDashboard endpoint, inline resources and external resources are not being included.
  • [CDE-543] - CSS external resources should be included using the css! requireJS plugin
  • [CDE-550] - Missing requireJS config for embedding CDE dashboards
  • [CDE-551] - Creating a table with Sparkline column, it's tooltips are not well formatted
  • [CDE-554] - DuplicateComponent fails to duplicate the target HTML element's content
  • [CDE-559] - CCC - Bar Chart - Bars overflow when !stacked, !orthoAxisOriginIsZero and only positive values
  • [CDE-563] - CDE is not reading legacy Css resources
  • [CDE-565] - Japanese characters on chart title render as "??" when opening the dashboard

Improvement

  • [CDE-287] - Confirmation box without any previous changes
  • [CDE-430] - ExportPopupComponent - pressing down show list available options
  • [CDE-435] - Add ExportPopupComponent reference to CDE reference
  • [CDE-450] - TableComponent: Drag-and-drop on Column Headers/Types/Formats/Widths popups
  • [CDE-488] - Review Style loading mechanism
  • [CDE-497] - Custom component files should be bundled into a single file
  • [CDE-504] - As a user, I'd like the dashboard title to use the available area between actions and tabs.
  • [CDE-505] - As a user, when adding parameters to a component, I'd like the dashboard parameter list to be sorted alphabetically.
  • [CDE-507] - Table Component Column Type: Add hidden
  • [CDE-516] - CDE should save the .cdfde content sorted
  • [CDE-527] - As a user, I want bootstrap layout elements without an assigned xs span value to fall back to col-xs-12
  • [CDE-528] - As a user, I want bootstrap layout rows to only allow bootstrap layout column elements as children.
  • [CDE-534] - As a dashboard developer I would like that CDE parameters popups were created with a empty entry already added
  • [CDE-562] - Create a requirejs loader plugin for loading dashboard modules

New Feature

  • [CDE-371] - Add support for Require js in CDE
  • [CDE-479] - Include the "unmanagedQueryComponent" as a standard CDE component
  • [CDE-515] - Create a new component that is capable of requiring another dashboard 


CDA - Community Data Access - Version 15.06.30

Bug

  • [CDA-133] - CDA editor doesn't display file contents (error loading page)
  • [CDA-140] - CDA Cache Manager always display version label as TRUNK-SNAPSHOT
  • [CDA-143] - CDA cache is not cleared when restarting the server
  • [CDA-144] - Exporting does not work when String array parameter is empty
  • [CDA-147] - When a query with parameter fails the parameter boxes are not shown
  • [CDA-150] - Refresh button is not showing

Story

  • [CDA-145] - As a CDA user, I would like to be able to filter what columns I get when I do a CDA query 


CCC - Community Chart Components - Version 15.06.30

  • [ANALYZER-3004] - Memory Leak when working with analysis report
  • [ANALYZER-3058] - Memory leaks during multiple changing of chart type
  • [CDF-401] - CCC - Point and Metric Point plots - The dot_shapeRadius and dot_shapeSize extension points work in unexpected ways
  • [CDF-525] - Charts don't render in require dashboards in IE8
  • [CDF-559] - CCC - Grouped Area Chart - Area transparency effect does not respect the color scale opacity
  • [CDF-560] - CCC - Interactive options at the panel and mark level: selectable, hoverable, ...
  • [CDF-561] - CCC - Metric Point / Point plots - When dotsVisible is false, the styling of Active dots ignores the ShowsActivity mark flag
  • [CDF-562] - CCC - Metric Point / Point plots - When dotsVisible is false, the size of Active and Alone dots does not exactly match the line width
  • [CDF-563] - CCC - Cartesian Axis - Do not show "value" tooltip unless really needed
  • [CDF-564] - CCC - Active Scene Event
  • [CDF-565] - CCC - Events
  • [CDE-559] - CCC - Bar Chart - Bars overflow when !stacked, !orthoAxisOriginIsZero and only positive values 





CGG - Community Graphics Generator - Version 15.06.30

Bug

  • [CDF-525] - Charts don't render in require dashboards in IE8
  • [CDF-448] - CGG: Export fails when the chart contains the "skip-ticks" marker
  • [CDE-565] - Japanese characters on chart title render as "??" when opening the dashboard

Improvement

  • Upgraded to last CCC release 

CDC - Community Distributed Cache - Version 15.06.30

Improvement

  • Maintenance release - keep compatibility with latest ctools version 


CDV - Community Data Validation - Version 15.06.30

Improvement

  • Maintenance release - keep compatibility with latest ctools version  


CFR - Community File Repository - Version 15.06.30

Bug

  • [CFR-3416] - Metadata queries should use prepared statements
  • [CFR-3418] - When a file is overridden, CFR does not change UploadedFiles class.
  • [CFR-3433] - CFR upload checking file existence on root only, not on specific subfolders

Feature

  • [CFR-3419] - Adding Appache Tika for file content inspection before saving file on repository

 








[Useful Tips] Making Pentaho CDA use a DynamicSchemaProcessor

$
0
0

Long time no blogging. Gotta change that.

Here's a quick and useful tip for those wanting to set up row level securing in Pentaho using mondrian Dynamic Schema Processors.

Mondian Dynamic Schema Processors

DSPs are a very common way to add dynamic roles to mondrian. In a nutshell (cause I won't explain here all the stuff behind it), when you add security to mondrian, you have to specify a set of Roles in the mondrian.xml file.

However, there are times where we can't have all the roles on the schema file. That's where DSPs come into play. Here's basically how they work:

Picture that I shamelessly stole from David Fombella

So in essence, a DSP is just a post processor that takes the original mondrian schema and outputs the final modrian schema. How that DSP is written depends on the developer, but it's usually a java snippet. Example here.

Using it from CDA


So once we get it working we will surely want to take advantage of the Ctools to use the DSP datasource. And CDA needs the DSP to be explicitly defined in the schema properties. Here's how we add it:

Pentaho User Console => Manage Data Sources => Select Analysis Schema => Edit

And add 2 settings:

  • DynamicSchemaProcessor: com.yourcompany.yourclassDSP
  • UseContentChecksum: true

So we get into something like:

Manage datasources screen

From that point on, you're all set. Your queries will take advantage of that DSP.


Cheers


-pedro

Pentaho CTools and support for RequireJS

$
0
0

CTools and RequireJS

This is huge. I mean - really huge. One of the biggest advances in Ctools in it's history. A complete refactor has been made to provide support for RequireJS. From that page page:
RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code


Ok, this sounds boring. And maybe is. But what this bring to the table is not. Including a dashboard in an external app is just as simple as loading the RequireJS (and the associated configurations) onto a page, nothing else. The rest of the resources you may need, will be loaded via RequireJS, this guarantees you only load what you use.

We guarantee that there are no more global objects - including the old Dashboards object that had all the logic. And this opens the possibility - you guess it - for very simply having multiple dashboards on a single page.

We're actually very confident already that we're very much on the right track; This will be the default when 6.0 comes out...

CDF


We collected the documentation in here., that I'm including in this blog post as well. You'll see this improvements, both on CDF and CDE, since CTools version 15.06.30, so it's even possible that you can start taking advantage of this already.

Quick start to it? Open the plugin samples and see the differences for yourself. This is not backward compatible, so you need to adapt the code to the new style We have the same samples for the same dashboards using the new and legacy mode
New require-js samples

New Dashboard Structure


The dashboard structure, itself, remains pretty much the same, the big difference here is: nothing is published to the global scope. From now on, there will be no Dashboards global object, no render_componentName objects polluting the global scope, vulnerable to being tampered with.

Do note that for debugging purposes, you can export your dashboard object to the window object, so it becomes available in the developer console.
Example:
require(['cdf/Dashboard.Blueprint', 'cdf/components/SelectComponent'], function(Dashboard, SelectComponent) {

var dashboard = new Dashboard();
dashboard.addParameter("region", "1");

dashboard.addComponent(new SelectComponent({
name: "selectComponent",
type: "selectComponent",
parameters: [],
valuesArray: [
["1", "Lisbon"],
["2", "Dusseldorf"]
],
parameter: "region",
valueAsId: false,
htmlObject: "sampleObject",
executeAtStart: true,
postChange: function() {
alert("You chose: " + this.dashboard.getParameterValue(this.parameter));
}
}));

dashboard.init();

// I'm still developing this dashboard, so I want this here to debug it.
// It will be removed when the dashboard is ready though.
window.dashboard = dashboard;
});

Reviewed API

The API had to be reviewed a bit, to accommodate for the paradigm change. It won't be hard to make the shift, though:
require(['cdf/Dashboard.Blueprint', 'cdf/Logger', ...], function(Dashboard, Logger, ...) {
var dashboard = new Dashboard();
//logic
dashboard.addParameter("startTime", new Date().getTime());
dashboard.init();
var dashboardInitTime = new Date().getTime() - dashboard.getParameterValue("startTime");
Loggerlog("Dashboard initiated in " + dashboardInitTime + "ms");
//...
});
 
So, before, we had a Dashboards global object which was used has a broker to the dashboard internals, you would want to access dashboard parameters and/or components either inside the dashboard itself, or out. You still can, the difference is that now you must use the reference to the dashboard you created, like dashboard in the example above. Inside the components code, you don't need to know the reference of the dashboard, each component, when added to a dashboard, will automatically receive a reference to it, accessible using this.dashboard. This dashboard reference, has most of the functions the global object Dashboards had, however, not all.

The log for example was moved outside, and you will have to require it if you want to use it:

require(["cdf/Logger"], function(Logger) {
Logger.log("log...");
});

Note: If you will use Logger a lot, consider requiring it with your dashboard definition:
require(['cdf/Dashboard.Blueprint', ..., 'cdf/Logger'], function(Dashboard, ..., Logger) {
...
});

Events that can be consumed externally

The events functionality is extended from Backbone.Events, so you can learn to use it to the fullest at http://backbonejs.org/#Events
  • Events triggered by the Dashboard object:
    • Parameter changes - When a parameter changes its value, the event 'cdf :fireChange' is triggered
    • Dashboard preInit - When the dashboard finishes running the PreInit method, the event 'cdf cdf:preInit' is triggered.
    • Dashboard postInit - When the dashboard finishes running the Post init methods, the event 'cdf cdf:postInit' is triggered.
    • User not logged in - when we detect that an user is no longer logged in, the event 'cdf cdf:loginError' is triggered.
    • Server error - If a call to the server returns an error, the event 'cdf cdf:serverError' is triggered.
  • Events triggered by Components:
    • PreExecution - After preExecution runs, the event 'cdf cdf:preExecution' is triggered.
    • PostExecution - After postExecution runs, the event 'cdf cdf:postExecution' is triggered.
    • Error - If an error is triggered during component execution, the event 'cdf cdf:error' is triggered.

Do note that the components have a priority, which will be respected. If you do listen to any of these events and trigger some function (outside of a component), there's no way of knowing when it will run, it may come first, it may come last.

That being said, you may want to bind some orderless logic to some of these events:

require(['cdf/Dashboard.Blueprint', ...,'cdf/Logger'], function(Dashboard, ..., Logger) {
var dashboard = new Dashboard();
var component = ...
...

dashboard.on('cdf cdf:postInit', function(e) {
//I could want to keep a count of all the times my dashboard was visited, for statistical purposes
addOneDashboardInitToStatistic();
});

});

Dashboard types

CDF provides three types of dashboards: Clean, Blueprint and Bootstrap:
  • The Clean dashboard loads no CSS framework, its just a plain container, you can customize it to the fullest.
    • require(['cdf/Dashboard.Clean'],...)
  • The Blueprint dashboard loads the blueprint CSS, so you can use its classes with ease.
    • require(['cdf/Dashboard.Blueprint'],...)
  • The Bootstrap dashboard loads the bootstrap framework, increasingly popular and easy to work with.
    • require(['cdf/Dashboard.Bootstrap'],...)

How to add new Dashboard types

You can add your own dashboard types, to do that you just create a myDashboard.js and inside it something like this:

define(['./Dashboard'], function(Dashboard) {
return Dashboard;
});

myDashboard is basically a Clean dashboard now, you could obviously extend some functionality before returning Dashboard.

define(['./Dashboard'], function(Dashboard) {
return Dashboard.extend({
customize: function() {
//...
}
});
});

myDashboard now has a function called customize, which you could call after the initialization to customize the dashboard further.
You can require it by providing the relative path to it. If myDashboard.js is in the same folder as the template.html (assuming that's what you called the HTML file), you could just use the name myDashboard when requiring:

require(['myDashboard'], function(Dashboard) {
var dashboard = new Dashboard();
dashboard.init();
dashboard.customize();
});

Legacy Dashboard Support

Of course the Dashboards you already have will still be functional, the two types of dashboards will live together and you can use the one you prefer.

In the future however, the default will be require ready dashboards.
You can always make the change to a require dashboard, it's as simple as changing a property in your file.xcdf:


‹cdf›
‹title›Title‹/title›
‹author›Author‹/author›
‹description›Description‹/description›
‹icon›‹/icon›
‹template›template.html‹/template›
‹style›clean‹/style›
‹require›true‹/require›
‹/cdf›

As you can see, the 'require' property is what defines if your dashboard is a require dashboard.

Simple as that, of course if you do want to convert a non-require dashboard to a require one, you will have to change the implementation to use the new API.

Component Development

The process of developing components is a bit different, it's actually a bit simpler once you get used too the whole AMD paradigm.

Lets see a simple example, suppose you have a file called myComponent.js:

//CDF has already several defined modules, you can use them at will
define(["cdf/components/BaseComponent", "cdf/lib/jquery", "cdf/Logger"], function(BaseComponent, $, Logger) {
var myComponent = BaseComponent.extend({
string: "TEST",
getString: function() {
return this.string;
},
writeOnElement: function(selector, text) {
var element = $(selector);
if(element && element.length > 0) {
element.text(text);
} else {
Logger.log("Selector " + selector + " wielded no results");
}
}
});

return myComponent;
});

That's it, you could then require myComponent from your dashboard:

require(["cdf/Dashboard.Blueprint", "myComponent"], function(Dashboard, MyComponent) {
var dashboard = new Dashboard();
dashboard.addComponent(new MyComponent({
//...
}));
dashboard.init();
});

Embedded Capabilities

CDF is easily embedded in any HTML page hosted anywhere really, there is one requisite, you must include in said HTML page, the script for embedding CDF.
This script is asked of CDF, so the real prerequisite, you must make a call to a Pentaho Server running CDF.

Simply include in your HTML page this script tag:

‹script src="http://SERVERNAME/WEBAPPPATH/plugin/pentaho-cdf/api/cdf-embed.js" type="text/javascript"›‹/script›
‹!-- example for a localhost:8080 server: --›
‹script src="http://localhost:8080/pentaho/plugin/pentaho-cdf/api/cdf-embed.js" type="text/javascript"›‹/script›

Note: this implies a valid login in said server

There is one extra setting that needs to be turned on. To properly allow the embedded scenario, which probably requires cross domain requests, the following property needs to be added to the settings.xml file of CDF:

‹allow-cross-domain-resources›true‹/allow-cross-domain-resources›

 

CDE

Now, the first part may have seemed geeky. That's because it was indeed. CDF is the engine for all the dashboards, so we're very low level. For CDE, however, we're on a much more high level ground. So it's much easier to do things in order to take advantage of those capabilities. And this page spells out all the details.

How to create new "require-ready" dashboards

For now, creating a new dashboard in CDE will not create a RequireJS dashboard by default. In order to do so, you need to check the relevant checkbox in the settings screen when you save a dashboard. The plan is that the default will change to RequireJS by Pentaho 6.0 (October 2015).
Regardless of the default behavior for new dashboards, non RequireJS dashboards will render the same way as before. You can go on editing them without being forced to upgrade to RequireJS, since that involves some changes as described below.

What changes in Dashboard Development from the non RequireJS CDE

Nothing much is the quick but not entirely true answer.
While much does not change, there are some areas that do need some change.

the Dashboards singleton no longer exists

Yes, we finally killed it. Most of the methods you usually called in Dashboards should be available elsewhere. If you're running code in the component context (meaning that this refers to a component), like in preExecution, postExecution and postFetch, most methods will be available in this.dashboard.
Some mention worth exceptions are:
  • the log method has been migrated to a separate module. That's one of the default modules that every dashboard loads (more on that here). That means Dashboards.log has been replaced with Logger.log
  • There's a new Utils class with some static methods that were previously in the Dashboards singleton. Examples are escapeHtml, getQueryParameter, objectToPropertiesArray, propertiesArrayToObject are some examples. Check the new class reference here. TODO: Need to complete this when we have the reference published somewhere.
  • TODO: Are there more we know of ?

Parameters and components no longer create objects in the global scope.

Instead, parameters and components are internal to the dashboard. So if you want to get to a component you need to use the getComponent method in the dashboard object. For parameters, always use the getParameter method.

When debugging, the same rule above applies

From the console, the object render_foo (assuming you have a component called foo in your dashboard) no longer exists. Instead call dashboard.getComponent("render_foo") to get to that component. For convenience, when CDE renders it creates a dashboard object in the global scope. You should use that to get access to the dashboard internals you need.

JavaScript resources

Inline Resource

Inline resources follow the same rules as above. The inline code will be included inside the dashboard module, meaning that you'll have a dashboard object that you can use. Also, you'll have access to all the modules the dashboard already loads.

External Resource developed by you

If you're using an external JavaScript resource developed by you, you should define that as a RequireJS module. That module will be required by the dashboard so that you can use it in the dashboard context.
Example: Imagine you want to define an external resource that exposes an options object you want to use in your dashboard.
That resource will be a RequireJS module. Something like:

define(function() {

return {
option1: 'My Option',
option2: 'Another Option'
};
});
or simply:
define({
option1: 'My Option',
option2: 'Another Option'
});
 
and you name that resource myProjectOptions.
Under the hood, we'll add the RequireJS module to the dashboard dependency list and we'll call it myProjectOptions. That way, you can access your options object in your dashboard by stating (e.g. in a preExecution):

function f() {

this.htmlObject.text(myProjectOptions.option1);

}

Third Party External Resources

If they are built as RequireJS modules (and most of the JavaScript frameworks right now have that support) it will work exactly the same as the previous case.
If the resource is not exposed as an AMD module, you'll need to develop AMD support for it. Alternatively, the nonamd RequireJS loader plugin can be used to wrap the resource on-the-fly using the define function and make it available as a RequireJS module, according to some shim configurations that must be provided (more on that here).

Default required modules

When CDE renders a dashboard, it requires a collection of base modules by default. That means that a dashboard developer does not need to specifically require them when building custom JavaScript code. The default modules are:
  • Logger, exposed as Logger
  • JQuery, exposed as $
  • Underscore, exposed as _
  • Moment, exposed as moment
  • Cdo, exposed as cdo
  • Utils, exposed as Utils

Custom Component Development and RequireJS vs Legacy Support

CDE supports both legacy and RequireJS dashboards. Legacy custom components can only be used in legacy dashboards and RequireJS custom components can only be used in RequireJS dashboards.
CDE will scan and load the first component.xml configuration file for each unique custom component name it finds in the following locations:
  1. legacy custom components folder resources/custom/components
  2. RequireJS custom components folder resources/custom/amd-components
  3. repository folder Public/cde/components
The component.xml is still used in very much the same way. There are two new attributes in the Implementation tag of the component.xml:
  • supportsAMD - Might be true or false
    • If true, the component has a RequireJS implementation, the Implementation/Dependencies and Implementation/Styles tags are ignored and all JavaScript and CSS dependencies will be processed client-side as RequireJS module dependencies when used in RequireJS dashboards.
  • supportsLegacy - Might be true or false.
    • If true, the component has a non RequireJS implementation and all it's JS and CSS dependencies are processed server-side using the tags Implementation/Dependencies and Implementation/Styles when used in legacy dashboards.
By default, if you don't supply any of these attributes, CDE will assume that the custom component is a legacy implementation. For any other component type (DataSource, Layout, Parameter, etc.) CDE assumes it supports both implementations, so they can be used by the CDE editor and while rendering CDE dashboards.

CDE doesn't support loading multiple configuration files for custom components with the same name. If users need to have the same custom component support both legacy and RequireJS versions, each version must have a different name.

Another way to bypass this limitation is to have the configuration file only in the legacy custom component folder and set to true the attributes supportsAMD and supportsLegacy. As an example, the custom components shipped with CDE that support both versions only have the configuration file component.xml for the legacy versions, in the legacy custom component folder resources/custom/components.
 
As before, the Implementation/Code tag of the component.xml will be used to detect where the non RequireJS implementation is. Everything remains the same for non RequireJS custom components.

When a custom component is uploaded to the repository, if it only supports RequireJS dashboards, the Implementation/Code tag is used to configure the RequireJS module path relative to the repository "/public/cde/components" folder. If the uploaded custom component supports both versions, the Implementation/Code tag is used to configure the implementation path for the legacy version, and for the AMD version CDE will search for an implementation file in the same folder as component.xml with the same name as the component's class name (first letter upper case and ending with "Component", e.g. "button" will have the class name "ButtonComponent").

Custom components that are shipped with CDE already have all RequireJS module paths configured in the cde-core-require-js-cfg.js file and the Implementation/Code tag is ignored.
For instance, take the configuration file of the NewSelector custom component:

‹implementation supportsamd="true" supportslegacy="true"›
‹code src="NewSelector.js"›
‹styles›
‹style src="component.css" version="1.0"›NewSelector‹/style›
‹/styles›
‹dependencies›
‹dependency src="component.js" version="1.0"›NewSelector‹/dependency›
‹/dependencies›
‹/code›
‹/implementation›

This info will be used when rendering legacy dashboards, so all JS and CSS dependencies will be included in the rendered HTML page. The RequireJS implementation doesn't require any specific implementation metadata, other than Implementation/Code tag only if the custom component was uploaded to the repository folder so the path can be dynamically built.

So, for RequireJS dashboards the NewSelector implementation is a require module with a path to it's JS implementation file already configured in cde-core-require-js-cfg.js. Its header is:

define([
'cdf/components/UnmanagedComponent',
'cdf/dashboard/Utils',
'cdf/lib/jquery',
'amd!cdf/lib/underscore',
'./NewSelector/views',
'./NewSelector/models',
'css!./NewSelectorComponent'
], function(UnmanagedComponent, Utils, $, _, views, models) {
...
});
 
All dependencies (css or js) are declared in the module dependency list. That means that custom component dependencies should always be RequireJS modules themselves.

If this is not the case, you may specify a shim that tells RequireJS how to require that specific dependency.

Take the example of the Google Analytics component where the jquery.ga JS resource is not a RequireJS module. We use the module path cde/components/googleAnalytics/lib/jquery.ga to refer to the jquery.ga resource, cde/components points to the RequireJS custom component folder where we can find the jquery.ga.js file inside the sub-folders googleAnalytics/lib. The beginning of the component code manipulates the requireCfg.config to add a new shim definition for jquery.ga using the nonamd RequireJS loader plugin (exposed as 'amd'):

var requireConfig = requireCfg.config;

if(!requireConfig['amd']) {
requireConfig['amd'] = {};
}

if(!requireConfig['amd']['shim']) {
requireConfig['amd']['shim'] = {};
}

requireConfig['amd']['shim']["cde/components/googleAnalytics/lib/jquery.ga"] = {
exports: "jQuery",
deps: {
"cdf/lib/jquery": "jQuery"
}
};

requirejs.config(requireCfg);

The relevant part is the last assignment, where we define a shim for the jquery.ga module. This shim defines both what the module will export (in this case it's the variable jQuery) and what are the modules dependencies, declared on the deps property. Module dependencies essentially allow to control the loading order for these modules. In the current case, we need the cdf/lib/jquery module to load before the jquery.ga module.

The nonamd RequireJS loader plugin will use the shim configuration to dynamically wrap the jquery.ga.js source code as a RequireJS module. This way, using relative paths, the header for the Google Analytics component can declare jquery.ga as a regular dependency:

define([
'cdf/components/BaseComponent',
'cdf/lib/jquery',
'amd!./googleAnalytics/lib/jquery.ga'
], function(BaseComponent, $) {
...
});
 
Note the amd! prefix, indicating that this module will be required using the nonamd RequireJS loader plugin. That plugin is able to parse and use the shim definition above to wrap on-the-fly JavaScript source code and make it available as a RequireJS module.
For CSS resource loading the RequireJS CSS loader plugin is used, as you can see in the NewSelector example above. Just prefix css! to the CSS file path in the dependency list and load it as if it was a RequireJS module, no shim configurations are needed for using the RequireJS CSS loader plugin.

Require Dashboard Endpoint and Embedding Capabilities

In order to facilitate embedding a CDE dashboard in other apps, we introduced a new endpoint in CDE,
/pentaho/plugin/pentaho-cdf-dd/api/renderer/getDashboard?path=
This endpoint returns a RequireJS module that contains a class for a specific dashboard. You can create new instances of that class, needing only to provide an element id, or an element itself.
The returned class, extends the Dashboard class, adding some new methods:
  • render()
    Renders the dashboard, first setting up the DOM, then adding the components and parameters to the dashboard, and finally calling init()
  • setupDOM()
    Sets up a predefined layout inside its element.
  • renderDashboard()
    Adds the components and the parameters to the dashboard, and then initializes the dashboard
Do note that you need to have CDE embedded for the Dashboard and all its scripts to correctly load. You can easily embed CDE using this endpoint:
/pentaho/plugin/pentaho-cdf-dd/api/renderer/cde-embed.js

There are two ways to embed a CDE dashboard. By using the getDashboard endpoint explicitly:

require([
'/pentaho/plugin/pentaho-cdf-dd/api/renderer/getDashboard?path=/public/plugin-samples/pentaho-cdf-dd/pentaho-cdf-dd-require/cde_sample1.wcdf'
], function(SampleDash) {

var sampleDash = new SampleDash("content1");
sampleDash.render();

});
 
Or by using the dash! RequireJS loader plugin:

require([
'dash!/public/plugin-samples/pentaho-cdf-dd/pentaho-cdf-dd-require/cde_sample1.wcdf'
], function(SampleDash) {

var sampleDash = new SampleDash("content1");
sampleDash.render();

});
 
This will require the CDE sample dashboard, creates a new instance of the dashboard and call render, specifying the DOM element with id content1 as the place where the dashboard DOM will be written.
However, you may need to have more control over the whole process. In that case, you shouldn't call render, but:

require([
'dash!/public/plugin-samples/pentaho-cdf-dd/pentaho-cdf-dd-require/cde_sample1.wcdf'
], function(SampleDash) {

var sampleDash = new SampleDash("content1");
sampleDash.setupDOM(); //After this call, the dashboard DOM is created and ready to be used

//Meaning you can call some DOM manipulation logic here before you proceed with the dashboard render

sampleDash.renderDashboard(); //This call, will add the components and parameters to the dashboard, and then effectively render it

});
 
 
When embedding multiple dashboards, you might want to connect them using the API. The Dashboard API (TODO: link here) gives you a lot of methods that you can use to connect the dashboards. One of the more primary connections should be linking the change in a parameter in a dashboard to another parameter in another dashboard. So, if parameter A changes in dashboard A, you'd want parameter B to change in dashboard B. We leverage the event library in the underscore library and a parameter change in a CDF dashboard triggers on of these events. So, this link can be achieved with the following code:

require([
'dash!/public/plugin-samples/pentaho-cdf-dd/pentaho-cdf-dd-require/cde_sample1.wcdf'
], function(SampleDash) {

//First we create two instances of the same dashboard giving them distinct DOM elements of our webpage
var sampleDash = new SampleDash("content1");
sampleDash.render();

var sampleDashFoo = new SampleDash("content2");
sampleDashFoo.render();

sampleDash.on("cdf productLine:fireChange", function (evt) { //Now we say that every time the parameter productLine is changed in the sampleDash instance
sampleDashFoo.fireChange("productLine", evt.value); //We want to fire a change for the same parameter in the second dashboard
});

});
 
There is one extra setting that needs to be turned on. To properly allow the embedded scenario, which probably requires Cross Origin Resource Sharing, the following property needs to be added to the settings.xml files of CDE and CDF:

‹allow-cross-domain-resources›true‹/allow-cross-domain-resources›

Have fun!

Pentaho World 2015 is arriving - Early bird available till EOM

$
0
0



Hello everyone

PentahoWorld 2015 is almost here! October 14-15 we'll be in Orlando, Florida learning best practices, use cases, innovations from Pentaho experts, users, advocates, and partners. You can explore the keynotes, session agenda, and interactive trainings as well as check out the highlights from PentahoWorld 2014 here


If you're interested, be sure to register before August 31st so you can take advantage of early bird pricing and save up to 40% on registration and training. If you're thinking about sending a few people, ask us about group discounts!

And btw - I'll follow up very soon with a blog post about the also amazing PCM15, happening in London in November 6-7... :)





Pentaho 6.0 CE Preview

$
0
0
Hey there!

This blog post won't have all the impact that I wanted initially; Reason is that I'm on parental leave till end of this month (september). However, since I just can't let go, it's obviously not possible at all to let this huge milestone pass by.

The Pentaho build team just posted a preview for Pentaho CE 6.0. Download the builds from here.





As usual, please report any issues you find. Plugin owners, please take some time testing your plugins in 6.0. And how to give feedback?

  • A bug report to http://jira.pentaho.com  (I bet you weren't expecting this) :)
  • Subscribe and discuss anything you want in the pentaho-community mailing list
 
There's a lot of new stuff here. And I promise that when I have some time to breath again and can get just a couple of working brain cells, I'll do another post with all the new cool stuff available. For now, just a couple of links that - to be very honest - don't really give a good view over what's on the release but it was the maximum I could get done while I was trying to change a few diapers:



Bring on the feedback!


-pedro

Weka 3.6.13 and 3.7.13 releases

$
0
0


Hi everyone! Passing some great news from Mark Hall and the weka team

New versions of Weka are available for download from the Weka homepage:

  • Weka 3.6.13 - stable book 3rd edition version. It is available as ZIP, with Win32 installer, Win32 installer incl. JRE 1.7.0_80, Win64 installer, Win64 installer incl. 64 bit JRE 1.7.0_80 and Mac OS X application (both Oracle and Apple JVM versions).
  • Weka 3.7.13 - development version. It is available as ZIP, with Win32 installer, Win32 installer incl. JRE 1.7.0_80, Win64 installer, Win64 installer incl. 64 bit JRE 1.7.0_80 and Mac OS X application (both Oracle and Apple JVM versions).

Both versions contain a significant number of bug fixes, it is recommended to upgrade to the new versions. Stable Weka 3.6 receives bug fixes only. The development version receives bug fixes and new features.

Weka homepage:
http://www.cs.waikato.ac.nz/~ml/weka/

Pentaho data mining community documentation:
http://wiki.pentaho.com/display/Pentaho+Data+Mining+Community+Documentation

Packages for Weka>=3.7.2 can be browsed online at:
http://weka.sourceforge.net/packageMetaData/


What's new in 3.7.13?

Some highlights
---------------

In core weka:

  • Numerically stable implementation of variance calculation in core Weka classes - thanks to Benjamin Weber
  • Unified expression parsing framework (with compiled expressions) is now employed by filters and tools that use mathematical/logical expressions - thanks to Benjamin Weber
  • Developers can now specify GUI and command-line options for their Weka schemes via a new unified annotation-based mechanism
  • ClassConditionalProbabilities filter - replaces the value of a nominal attribute in a given instance with its probability given each of the possible class values
  • GUI package manager's available list now shows both packages that are not currently installed, and those installed packages for which there is a more recent version available that is compatible with the base version of Weka being used
  • ReplaceWithMissingValue filter - allows values to be randomly (with a user-specified probability) replaced with missing values. Useful for experimenting with methods for imputing missing values
  • WrapperSubsetEval can now use plugin evaluation metrics

In packages:

  • alternatingModelTrees package - alternating trees for regression
  • timeSeriesFilters package, contributed by Benjamin Weber
  • distributedWekaSpark package - wrapper for distributed Weka on Spark
  • wekaPython package - execution of CPython scripts and wrapper classifier/clusterer for Scikit Learn schemes
  • MLRClassifier in RPlugin now provides access to almost all classification and regression learners in MLR 2.4

As usual, for a complete list of changes refer to the changelogs.

Cheers,
The Weka Team

Pentaho 6.0 (EE and CE) is available

$
0
0
This is huge. Unfortunately I won't be able to do an overview that makes justice to all the amazing work that's on this release. I wanted to do that last night but people invited me to drinks and that never ends well.

So - back to business:

Pentaho 6.0 (EE and CE) is available

You can get it from the usual places:
Lemme do a very quick overview of some of the great features. No real order here. And only of the stuff that comes to mind....

Data Services (CE/EE)

Data Services
This is huge.  Huge. Data Services have been my baby for the past few months and it's going to play a huge part of everything that we'll be doing in the future. It's a very simple concept that Matt Casters came up with a couple years back; but like happens most of the time, takes the rest of the world lots of time to understand what he actually means :p

Simply put - we can expose any point of our transformation as a virtual / umaterialized table that can be accessed from the outside through a jdbc interface. And this usage can be not only external but also internal.

Some of you may remember that the concept of dataservices appear in 5.0 as the codename jdbc thin driver, an EE only feature. But we huge improvements on the concept, not only at UI level but also on global Caching abilities and Push Down Optimizations.

OSGi support (CE/EE)

Warn - tech zone here! Core infrastructure stuff. We included OSGi in the pentaho stack, so now plugins can be built and deployed as OSGi bundles. This will open up possibilities that you don't even dream about... Just as a sneak peak we are now able to have a...


New PDI Marketplace (CE/EE)

PDI Marketplace


We were able to bring the BA server marketplace into PDI. Nuff said!

Named clusters testing framework (CE/EE)

Test named cluster connections

Unlike what marketing people try to make you believe, hadoop stuff isn't easy. A lot of things can go wrong. It can be an headache just to do the initial configuration.

So we built a set of test cases that will help you troubleshot what happens there, as well as guidelines on how to fix the open issues.

And you know what... we did more than that. We built the beginning of a generic and pluggable test framework! You'll be able to plugin your own test cases and you'll also see soon this "test framework" appear in other areas of the product!


Library upgrades - Java 8, Tomcat 8, VFS2, etc, etc, etc (CE/EE)

More infrastructure stuff that you may think you don't care about, but you do. It's the stuff that if it wasn't there, you'd complain a lot!

A bunch of libraries were upgraded. More than half the stack (I just made this up, but this was huge) to address the latest features, security upgrades, etc. I definitely won't go through it, but I'll just highight Java 8 support as the main headlines

Rest APIs for user management (CE/EE)

If you use the Pentaho security, you'll now be able to use, fully supported, rest apis for automating user management

Merging BA and DI

I'm listing this here because there were tons of work done here. More on this later. It's amazing stuff, believe me!

Import / Export (EE)

Another step into our LifeCycle Management story. The ability to do and automate full system backups and restore!

Analyzer Inline modelling / ETL modelling (EE)

Analyzer now has inline modelling capabilities

The vision here is clear. The future of modelling is... no well defined modelling stage. And we're giving concrete steps into it.

We added the concept of calculated measures into the ETL annotations, keeping on the trend of modelling and matching at the source;

And we added some abilities into analyzer so that users can tweak the model, like changing measures aggregations or persisting calculated measures. And we'll be extending that work so that we'll get as far down as redoing levels and dimensions!

Tons of improvements into PDI

PDI is one fundamental piece of the stack. We had an entire team dedicated at fixing the top reported issues, improvements... You won't probably even notice at first... but you will definitely know it's there.

Monitoring (EE)

We're not reinventing the wheel - We developed into PDI the monitoring hooks so that you can now integrate events into any SNMP system of choice (nagios, I'm looking at you).

This is an highly desired future by large governance sensitive organizations!

Lineage in PDI (CE/EE)

Lineage information in yEd


Keeping on the theme of governance and compliance, organizations not only need to know what etl and transformations they have, they need to know exactly what is happening at any point in time. What files, what parameters, when, by who, etc, etc.

So now you can tell pdi to capture that runtime information (core CE capability) as well as consume it through the new MetaIntegration bridge (EE) so that you can visualize it alongside with your broader lineage context


----

This is just some of the headlights of this amazing release!

Have fun!


-pedro

Installing marketpace in Pentaho 6.0 EE

$
0
0

Enabling the Marketplace in Pentaho 6.0 EE



If you have Pentaho 6.0 Enterprise Edition and go to http://www.pentaho.com/marketplace/ to try to download the marketplace plugin, you'll see it's not there.

The reason for that? It's an OSGi plugin and you already have it, but it comes disabled by default. Here's the instructions on how to enable it:


  1. Edit the file pentaho-solution/system/karaf/etc/org.apache.karaf.features.cfg
  2. Find the key "featuresBoot" and add the feature "pentaho-marketplace". That line will then be something like:
featuresBoot=config,management,kar,cxf,camel,camel-blueprint,camel-stream,pentaho-server,mongolap,pentaho-metaverse,pdi-dataservice-client,pentaho-yarn-obf,pentaho-marketplace

Restart, and you're done!

Cheers


-pedro



Pentaho 6.0 and plugins - Upgrade from VFS 1.x to VFS 2.x

$
0
0

Here's some crucial information shared by Matt Burgess in one of the mailing lists:

With the release of Pentaho 6.0, I wanted to let you know that there are some important changes coming, and some may break your plugins, "glue code", etc. This often happens at major release boundaries, so hopefully this won't come as a huge surprise.

Pentaho has upgraded their use of VFS libraries from version 1.x (a custom version forked from the Apache project) to basically Apache VFS 2.1-SNAPSHOT. We are working with the project maintainers to release a proper 2.1 so we don't have snapshot artifacts in our release. In fact we have locked down a particular commit in the 2.1 branch and have built our own release version for Apache VFS 2.1.

The relevant commits are here:



How does this impact you?  If you use org.apache.commons.vfs.* or KettleVFS and consume the org.apache.commons.vfs.FileObject or other VFS1 classes, then your code will no longer compile against 6.0 artifacts. If you use VFS 1 by itself and include it as a plugin dependency, this may work ok, unless you try to "trade objects" between your plugin and other Kettle classes.

To upgrade, you should be able to simply change the package name from org.apache.commons.vfs.* to org.apache.commons.vfs2.*.  If your code still won't compile, please consult the above pull requests to see where other changes were needed.

In general, a good rule of thumb at major release boundaries is to:

  1. before the Pentaho release, compile your code against the latest libraries (6.0-SNAPSHOT at this point is good enough, but I think the "real" ones are 6.0.0.0-353)
  2. after the release, test your plugins (original and/or recompiled) by dropping them into the data-integration/plugins folder, make sure they still operate successfully.
  3. if you need to re-release for 6.0, please update your entries in the Marketplace.

As usual you can direct questions for the community in the forums or in this Google Group.

Important update from Marcello Pontes:

Marcello Pontes has left a new comment on your post "Pentaho 6.0 and plugins - Upgrade from VFS 1.x to ...":

Heads up to those using sparkl too - upgrade of cpf/cpk libs needed.

When testing one of my Sparkl plugins on 6.0, i had an issue when trying to download a zipped file using a kettle endpoint - by providing a `ResultFiles` cpk.response.kettleOutput.

The issue was exactly a vfs ClassNotFoundException. Then I just needed to upgrade my cpf/cpk libs to make it work again. 

#PCM15 - Pentaho Community Meeting

$
0
0

It's almost time. #PCM continues it's cruise around Europe. Next stop, for it's 8th year in a row, London. 

Here's all the information, taken from the project's Github page (geeks!!)

Pentaho Community Meeting 2015

This page holds all the essential info about the Pentaho Community Meeting 2015.
Most important bits first:
  • Location: London
  • Date: November 7th - there will also be a Hackathon on Friday evening and social activities on Sunday.
  • Venue: W12 Conferences, West London

Registration

Attending the presentations and hackathon is completely free!
Please register for the main eventhere for a free ticket.
For the hackathon on Friday evening please register here.

Costs

  • As with previous PCM meetings there will be a nominal charge to cover lunch on Saturday.

Agenda

Rough outline, details TBC:
  • Friday: Evening Hackathon in the city with fancy prizes (courtessy of IVY-IS) to be won, then drinks!
  • Saturday: 2 streams of talks - Business and Tech focussed
  • Saturday Evening Dinner/drinks around Piccadilly Circys
  • Sunday: The sightseeing tour all sightseeing tours should be like. Not to be missed.

How to submit the talks

Please send details to pentaho.community.meetup.2015@gmail.com.
Provide the following:
  • Your full name
  • Links to your profie and company
  • Title of the talk and synopsis

Friday: Venue Info, Agenda Etc

Venue Location

Skillsmatter "CodeNode"How to get there
Time - TBC - Evening, which hackathon starting by 7pm, possibly other events occurring before.
Agenda

Saturday: Venue Info, Agenda Etc

Venue Location

W12 Conferences, West London.
Address:
W12 Conferences, Artillery Lane, 150 Du Cane Road, London, W12 0HS

How to Get There

Please visit Transport for London for best directions from your London location to W12 Conferences.
Nearest tube stations
  • Central Line: White City and East Acton both within a 10 minute walk.
  • Hammersmith & City and Circle Lines: Wood Lane within a 12 min walk

BusesBuses 7, 70, 72, 272 & 283 bus routes stop directly outside on Du Cane Road. When getting off the bus, look for Queen Charlottes hospital, to your left when looking at Hammersmith Hospital. Artillery Lane is the road running past this towards the car park. Follow this road and turn right at the mini roundabout, then turn left directly into the W12 courtyard, our reception is here.
Nearest Mainline Train stationsPaddington Station - 10 mins Take Hammersmith & City or Circle line to Wood Lane Tube station
Liverpool Street– 25 mins Take Central Line to White City station
Victoria Station– 22 mins Take Victoria Line to Oxford Circus. Change to Central Line to White City station.
Kings Cross/St Pancras– 25 mins Take Hammersmith & City or Circle line to Wood Lane Tube station
IMPORTANT: The conference centre is part of the Hospital. YOU MUST NOT ENTER via the main hospital entrance. There is a road between the Prison and Hospital which will take you to conference centre:

Social Media

Twitter hashtag: #pcm15

Talks so far (List will evolve!)

Keynotes

Tech Stream

  • Matt Casters, Pentaho Chief of Data Integration / Kettle project founder: Data Sets and Unit Tests PDI plugin
  • Tom Barber of Meteorite BI will talk about Saiku and managing metadata in a NoSQL world
  • Caio Moreno de Souza: Monitoring the BI Pentaho Server using Pentaho CE Audit and Performance Monitoring Plugin / Creating Maps with Saiku Chart Plus
  • Will Gorman - Pentaho Chief Architect will present something exciting!
  • Antonio García-Domínguez and Inmaculada Medina-Bulo: ArtifactCatalog: Better Descriptions and Hierarchical Tagging for Pentaho Resources
  • Roland Bouman: Will talk about PHASE (Pentaho Analysis Editor) and PASH (Pentaho Analysis Shell).
  • Miguel Cunhal: Will present 15-20 top tips and tricks for PDI
  • Sébastian Jelsch: Bigdata MDX with Mondrian and Apache Kylin
  • Pedro Vale (Webdetails): All the secrets behind Pentaho 6.0
  • Jens Bleuel: Everything you wanted to know about PDI 6.0
  • Know BI: Metadata injection driven map-reduce
  • Diogo Mariano (Webdetails): How to easily embed your cTools dashboard in your web application
  • Julio Costa (Webdetails): Responsive design with cTools
  • Francesco Corti and Alberto Mercati: transparent and trusted authentication between an external application and Pentaho. (If you've not seen Francescos presentations before you're in for a treat!)
  • Marc Batchelor (founder and VP of Engineering Pentaho): Community Contribution Guidelines and Process – How can the community contribute to Pentaho Development
  • Andre Simoes (XpandIT: Taming Big Data - Big data is getting mature, is your company ready to handle capture and orchestrate all the processes running within a cluster?

Business Stream

  • Nelson Sousa of Ubiquis Consulting will talk about Mapping and the benefits it can provide to the business
  • Owen Bowden Beating blood cancer with help from the Pentaho community
  • Mark Stubbs Pentaho Solutions Architect will talk about some of the most exciting Pentaho BigData projects currently running in London
  • Juanjo Ortilles Web Adhoc Query Executor (WAQE) A successor to WAQR.
  • Emilio Arias Analyzing Ashley Madison data with Pentaho
  • Marcello Pontes from oncase Customizing biserver with Tapa and some more plugin goodies. How to take advantage of the plugin whats reusable ans some more hot news for Dashboarders.

Sunday: Venue info, agenda, etc.

Location: central London

Agenda: the London sightseeing tour you wish all sightseeing tours would be like.

A guided tour of London not to be missed. Only 30 spots available, pre-registration required when you sign-in to the conference on Saturday.
Will last 2 hours approximately, covering the City of London and surrounding areas.

Hotels

Below are a few hotel suggestions.
Please note London is a very large city and commuting may be time consuming. We suggest you choose a hotel either close to the conference venue (Acton, White City, Sheperd's Bush) or closer to the social even on Saturday night (Covent Garden, Soho, Charing Cross).
London Underground is expected to start a 24 hour service during the fall on week-ends. The announced date was September 12, but the recent Tube strikes have pushed this back and there is no official date for commencement of the 24 service yet.

Central London

These hotels are close to the social events on Saturday night, but expect around 30 minutes to get to the conference venue on Saturday:

Acton/White City

Closer to the conference venue. They are located in zone 2 of the London transporation zone, about 15-20 minutes from Central London
See you there!

Viewing all 186 articles
Browse latest View live


Latest Images