Mostrando las entradas con la etiqueta Pentaho Dashboards. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Pentaho Dashboards. Mostrar todas las entradas

Probando Pentaho III: Introducción a Pentaho CTools

jueves, 5 de septiembre de 2013

Encontré un muy buen documento (Introducción...) que me ayudó a sintetizar todo lo leído y probado respecto la construcción de Dashboards con CTools. Comparto mi traducción y síntesis:

Pentaho CTools es un framework para crear y mantener dashboards en la versión Community de Pentaho business intelligence server (bi-server)

Una de sus características relevantes es la creación de dashboards interactivos, integrados con el bi-server. Todos los datos disponibles se pueden visualizar, aprovechando la configuración de seguridad del bi-server de Pentaho.

Está compuesto por:

1. Community Dashboards Framework (CDF)
2. Community Chart Components (CCC)
3. Community Data Access (CDA)
4. Community Dashboard Editor (CDE)

1. CDF: motor generador de dashboards. Estos dashboards están formados por COMPONENTES, conectados entre si.

Componente: es un objeto de javascript que encapsula otros objetos con propiedades y funcionalidades. Puede ser visual o no. Tienen interacción entre ellos, la más básica es que un componente puede re-dibujarse a partir del cambio de una variable.
Se puede customizar su comportamiento.

2. CCC: componentes gráficos que permiten la interacción del usuario,  basados en Protovis Raphaeljs


3. CDA: componente diseñado para recopilar, compaginar y distribuir información desde diferentes origenes.

Aunque CDF puede acceder a consultas SQL y MDX directamente, recomiendan el uso de CDA por asegurar accesos seguros, permitir joins de datos desde diferentes fuentes, exportar los datos de las queries fácilmente. También habilita la definición de las data sources y queries de SQL del lado del server. De esta manera, CDA disminuye el riesgo de inserción de código malicioso por medio de SQL injection (cuando la query esta almacenada del lado del cliente)

4. CDE: Editor que permite crear dashboards siguiendo estos pasos

    1. Crear el layout o presentación de la página.
    2. Especificar los data sources con la información a mostrar.
    3. Crear los componentes visuales específicos. Conectarlos a los datos y ubicarlos en el layout.
    4. Introducir más flexibilidad parametrizando los componentes y logrando interacción entre los mismos.

A continuación una descripción de las secciones de Layout, Components y Data Sources ...

Layout workspace

Formado por un área de estructura y otra de propiedades, relacionadas entre sí.




Layout Structure :

El layout mas simple esta formado por tres filas: Header, Contents y Footer.
Para modificar este layout, se pueden agregar columnas, filas, espacios, bloques de html, imágenes. Bloques de javascript.
Hay que tener en cuenta que las filas y columnas generadas están mapeadas a una estructura de <div> anidados, dentro de un archivo html generado en forma dinámica por el pentaho-CDE-plugin.

Properties:

Hay una lista de propiedades, describo las principales.
Nombre del elemento: se usa después para ubicar dentro del mismo los componentes gráficas.
Tamaños: toma blueprint css’ stylesheets. 'Width' se basa en las columnas de blueprint. 
Se puede ajustar, pero es mejor que estos tamaños sean dados por el componente en si.
Si los tamaños sumados de todos las columnas exceden el ancho de la página, tomarán la fila siguiente. Por otro lado, con blueprint los 'Heigths' son definidos por las alturas de lo que contiene, por eso, si una columna está vacía, queda invisible porque su altura es de 0 px.
Seleccion de color: área de color y saturación, pueden ser configuradas por el selector de colores.

Data source workspace



Hay once tipos de datasources, de los cuales probamos SQL Queries y MDX queries. 

Se puede seleccionar el acceso via JDBC ó JDNI.
Se recomienda acceder por JDNI en los casos en que se quiera acceder a mas de una tabla. Otra ventaja es que para setear JDNI se necesita solo el nombre de la datasource.
Dentro de las propiedades, se puede seleccionar un origen de datos creado anteriormente por Pentaho.
Al ingresar la consulta, se recomienda controlar la sintaxis de las consultas SQL o MDX en otro entorno. Un error en la consulta no se detecta fácilmente desde CDE.
También es útil probar la datasource creada por medio del Preview de CDA
Hay que guardar las modificaciones al datasource en cada cambio, y limpiar el cache de la CDA, entre una prueba/ corrección y prueba
Tener en cuenta que el cache del repositorio no es el mismo que el cache de la CDA.

Component workspace


El concepto de componente intenta simplificar la construcción de dashboards. Es un objeto de JavaScript que encapsula todas las propiedades y métodos. 

Destacamos:
  1. Genéricos: simple paramenter (javascript parameter), custom parameter(arrays, objetos, funciones), date parameter. Parametros con su inicialización, se usan para conectar los componentes entre si
  2. Scripts: funciones de javascript
  3. Otros. Usamos los botones, tablas.
  4. Charts: los componentes para gráficos específicamente. Pie chart, line chart, bar chart
  5. Selects: componentes usados para seleccionar valores. Permiten la interacción del usuario, desde text inputs hasta combos.
  6. Custom: Raphael component: Raphaeljs es una librería para Scalable Vector Graphics (svg).

Propiedades  de los componentes:
Cada tipo de componente tiene propiedades específicas, pero hay algunas comunes a todos que se pueden usar para controlar el ciclo de vida y comportamiento. Este cuadro resume el ciclo de vida de un componente y permite entender el sentido de las distintas propiedades.

















- executeAtStart: una variable booleana o (función que devuelva booleano). Indica si el componente será ejecutado (renderizado) en el load del dashboard o no.

Parameters: array de parámetros a pasar al componente, en general basados en el input del usuario. Permiten customizar (al data source que está detrás)
- Parameter: Parámetro de salida de la función 
Listeners: array de parámetros que disparan la ejecución y renderización del componente.
- PreExecution: función ejecutada antes de la inicializar o actualizar el componente. Si la función devuelve False, el componente no se actualiza.
- PostExecution: función que se ejecuta después del update del componente y se puede usar para indicar que la actualización terminó.
PreChange: function(v), siendo v el nuevo valor del componente. Tiene sentido para componentes de tipo selector, para validar los inputs. Si esta función devuelve F no se ejecuta el evento 'fireChange'
PostChange: se ejecuta después del cambio.
Click action: Si la  CCC charts es clickable ( Clickable = true), se ejecuta una función cuyo prototipo es:
function(s, c, v) { <body> }, cons = label of the seriesc = category label (value at the x-axis)v = value (value at the y-axis)

El uso más común de esta función es modificar el valor de un parámetro por medio de   Dashboards.fireChange(param, value). Pero se pueden crear interacciones más complejas con un popup, por ejemplo. Que permitan que el usuario tome distintas acciones.


-Height - Width: usar solamente si al ubicar el componente dentro del layout no se ajusta a lo 

que necesitamos.
-Datasource: la cda datasource definida antes.
-HtmlObject: es el id del html del layout, definido antes, que será reemplazado por el componente.
-Listeners: qué parámetros definidos previamente,  disparan el cambio del componente
- Priority: por default 5, si es menor el componente se ejecuta primero. Se usa en los casos en que se quiere dar un orden de ejecución.
-Cross tab mode y series in rows
están relacionados con la estructura del dataset y con la información a mostrar.

Cross tab mode: si la consulta generada esta compuesta por series y categorías, en general si la consulta es MDX o una SQL con la clausula group by.
Series in rows: determina si las filas corresponden a las series o no.
If series in rows = false los datos deben venir como Serie, Category, Data. If series in rows =
true deben ser Category, Serie, Data.

Si crosstab mode = False los column headers (nombres) no son parte del dataset, por ende no serán visibles en el dashboard.




-Extension points:

Permiten setear el font family, font-size, text-orientation de los distintos componentes de texto del chart. Se forman como 'ItemTipo_propiedad', por ejemplo titleLabel_font.

Cuadro con ItemTipo más usados,  propiedades y ejemplos de valores para las propiedades






Artículos relacionados:

Probando Pentaho I (Instalación de Pentaho Community)
Probando Pentaho II (Dashboard de ejemplo)


 









Leer más...

Probando Pentaho II -Creación de Dashboards

miércoles, 29 de mayo de 2013

Continuando con visualización ...

Es muy interesante ver presentaciones hechas por otros. Encontrar relaciones inesperadas, comprender y comparar datos. Es el momento en el que decimos manos a la obra! Fácil? No!

Aquí tiene sentido tener en cuenta los consejos de otros. Uno de los gurúes en ese tema es Ben Shniderman., autor del  Visual Information-Seeking Mantra:
Overview first, zoom and filter, then details-on-demand.
Overview
'Visión de conjunto': Proveer un contexto general para entender los datos. Es el cuadro de la entidad completa que nuestra representación quiere mostrar. Muchos patrones en los datos solamente se pueden ver desde un punto de vista global.  La forma general de los datos en sí puede sugerir información subyacente.
Se pueden encontrar características significativas, para ser ser analizadas en forma particular. De la misma manera, la visualización de datos extraños nos permite no tenerlos en cuenta en el análisis.
Zoom
'Zooming' es una de las formas básicas de interacción con un gráfico. Es la técnica que permite salvar las limitaciones de resolución que para mostrar grandes cantidades de información.
Filtering
Otra de las formas básicas de interacción, permite achicar la cantidad de información mostrada por medio de un criterio de selección o búsqueda.
Details on Demand
. Permite proveer información adicional punto por punto, sin cambiar el enfoque. Es útil para poder relacionar el punto en particular con el resto del dataset, para identificar un elemento puntual entre varios o para relacionar atributos de varios datos. Brindando estos detalles por una acción simple, como 'mouse-over-selection', se puede mostrar información sin modificar el contexto general de la representación. Un ejemplo de información adicional en una base punto a punto son los 'tooltips'


Nos pusimos como objetivo mostrar datos por medio de gráficos con un poco de interacción.

Como comentamos en el artículo anterior, Pentaho resulta ser una buena opción Open Source. En particular, la opción de tableros de control o Dashbords.
Para esto, investigamos dos herramientas:
  • Pentaho Design Studio
  • WebDetails

Manos a la obra…con Pentaho Design Studio

Pentaho Desing Studio (PDS) es una herramienta de la suite Pentaho que se utiliza para describir y mantener Xactions. PDS está basado en el IDE de Eclipse (entorno integrado de desarrollo), esto nos da la pauta de que la UI (User Interface) es sumamente familiar e intuitiva.
Se puede bajar desde el mismo sitio en que se bajaron el resto de los componentes de Pentaho.
Para instalarlo, es conveniente descomprimir la carpeta de design-studio en el directorio 
…\design-tools\design-studio

Manos a la obra …con Pentaho y WebDetails

Por otro lado hay un framework creado por ‘Webdetails’,  disponible desde Pentaho (las últimas versiones)
Webdetails: es una compañía de 5 años de antigüedad, con base en Portugal, dedicada a desarrollar soluciones de Business Intelligence a medida para la plataforma de Pentaho.
Community Chart Components (CCC): es una librería de CTools,   sobre Protovis ( herramienta muy poderosa de visualización y open source) El propósito general de CCC es permitir incluir en los dashboards los gráficos básicos, sin perder extensibilidad. Heredan las propiedades de Protovis y permiten un alto nivel de customización.
Community Dashboard Framework (CDF) Proyecto que permite crear dashboards en forma amigable, poderosa y con ricas funcionalidades. Sobre Pentaho business intelligence Server. Es importante destacar que esta herramienta es mucho más amigable que la anterior (PDE) puesto que no exige grandes conocimientos de programación.
Algunos ejemplos que me gustaron son los dashboards de Webdetails.

Creación de Dashboards con CDE

Para crear el primer gráfico interactivo, fue muy útil el blog de Slawomir Chodnicki.
Tomamos varias ideas, incorporamos componentes no tradicionales e interacción.
Así salió un mapa de calor o 'heat-map' de las ventas por Internet de la base de Microsoft AdventureWorks. En el mapa de calor cada entrada tiene asignado un color de acuerdo con el valor asociado. De esta manera se pueden ubicar de un vistazo los regiones donde las ventas son mayores (amarillo), clickeando en el cuadro de la grilla es posible ver el detalle de ventas por región. Incorporamos así la interacción del usuario. El detalle a demanda está provisto por el tooltip sobre cada cuadro.

DashBoard: imagen inicial

Click cuadro valor chico





Click cuadro mayor valor, tooltip


Cómo llegar a esto?

1. Desde la consola general de Pentaho, Herramientas/ MarketPlace, hay una toolbar para instalar Saiku (C*Tools plug-ins). Se necesitan como mínimo  CDE, CDA y CDF .




2. Estamos consultando la base de datos de pruebas de Microsoft, AdventureWorksDW. Crear una conexión a la misma, usando el driver para SQL. Recordar instalarlo en:
...\biserver-ce\data\lib\jtds-1.3.0.jar

3. Crear un nuevo dashboard (New CDE Dashboard). Está compuesto por Layout, Components, Data Sources.

Dashboard -->Datasources:



Las queries para las dos consultas CustomerSales y RegionSales son:
 
SELECT EnglishProductcategoryName,EnglishCountryRegionName,SUM(salesamount)as sales 
FROM  dbo.FactInternetSales fs 
INNER JOIN DimCustomer c on fs.CustomerKey= c.CustomerKey
INNER JOIN DimProduct p on p.ProductKey = fs.ProductKey
INNER JOIN DimGeography g on g.GeographyKey = c.GeographyKey
INNER JOIN DimProductSubcategory ps on ps.ProductSubcategoryKey = p.ProductSubcategoryKey
INNER JOIN DimProductCategory dpc on dpc.ProductCategoryKey = ps.ProductCategoryKey
GROUP BY EnglishCountryRegionName,EnglishProductcategoryName

SELECT g.StateProvincename as State,
 cast(SUM(salesamount)/1 as int) as Sales 
FROM  dbo.FactInternetSales fs 
INNER JOIN DimCustomer con fs.CustomerKey= c.CustomerKey
INNER JOIN DimProduct p on p.ProductKey = fs.ProductKey
INNER JOIN DimGeography g on g.GeographyKey = c.GeographyKey
INNER JOIN DimProductSubcategory ps on ps.ProductSubcategoryKey = p.ProductSubcategoryKey
INNER JOIN DimProductCategory dpc on dpc.ProductCategoryKey = ps.ProductCategoryKey
WHERE EnglishProductcategoryname =${categoria} 
AND EnglishCountryRegionName = ${region}
GROUP BY StateProvincename

Los filtros de la segunda query dependen de dos parámetros. Es necesario crearlos previamente e ingresarlos en la propiedad Parameters del DataSource.

4. DashBoard-->Componentes:

Los componentes son los elementos que serán ubicados en el  layout.

  • CCC Heat Grid
  • Parameters 
  • Table




Hay dos parámetros, categoría y región. Se usaran en la tabla de valores para filtrar la segunda consulta armada.
Hay una tabla, que tiene como parámetros región y categoría, como datasource 'RegionSales' y está ubicada en el elemento 'DetalleTabla' del html.
Finalmente un Chart, la tabla de doble entrada o Heat Grid.
No tiene parámetros. El datasource es 'CustomerSales'.
Hay dos colores asociados a máximo y mínimo valor.
Cómo se da la interacción en esta grilla?
Está definida como clickleable, y en el click action la siguiente función:
 
function f(scene){
    
var nuevaategoria=this.scene.atoms["series"].value;
var nuevaregion=this.scene.atoms["category"].value;
document.getElementById('vecategoria').innerHTML=nuevacategoria;
document.getElementById('veregion').innerHTML=nuevaregion;
 region=nuevaregion;
Dashboards.fireChange('categoria',nuevacategoria);
}
Dashboards.fireChange--> modifica el contenido del parámetro y el contenido de la tabla. Importante: la tabla debe tener los 'Listeners' configurados.
Tenemos dos elementos, con ids 'vecategoria' y 'veregion', que son actualizados con la última selección en la grilla.
El valueFormat de la grilla está asociado a una función que divide y agrega la unidad de medida, en este caso 'mil'
 
function f(scene){var sales=scene/1000 ; return sales.toFixed(0) +' K'}
5. Dashboard --> Layout


Para mostrar la categoría seleccionada en el click de la grilla, hay usamos el elemento 'vecategoria' . De la misma manera, está definido el elemento 'veregion'.



Quiero destacar el uso de dos 'Resources' que son .css asociados a la imagen. Se usaron para los colores de los encabezados, y en particular para customizar la tabla con el detalle por estado. Teniendo en cuenta que 'DetalleTabla' es el nombre asignado en la solapa layout para el contenedor de la tabla.

#DetalleTabla   tr
{  background-color:transparent;}
#DetalleTabla   td
{ background-color:transparent;font:"15px Arial"} 










Leer más...