El Rincon del BI

Descubriendo el Business Intelligence…

17.4. Reporting en Pentaho con Pentaho Report Designer. Otras posibilidades de reporting (Birt y JasperReports).

Posted by Roberto Espinosa en 15 julio 2010


La plataforma Pentaho nos proporciona dos formas integradas de realizar reporting, ademas de permitir la utilización e integración de otras herramientas (como JasperReports o Birt). Las herramientas propias de Pentaho, como ya vimos, son las siguientes:

  • Web Ad Hoc Query and Reporting Client (WAQR): herramienta integrada en el portal que nos permite realizar querys y reporting adhoc de una forma intuitiva y sencilla, aunque con limitaciones.
  • Pentaho Report Designer (PRD): a través de una herramienta de diseño desktop, que nos permite definir y construir nuestros informes, y luego publicarlos en el portal de BI para que puedan ser ejecutados por los usuarios.

Vamos a ver un poco mas en profundidad en que consisten estas herramientas.

Web Ad Hoc Query and Reporting Client (WAQR).

EL WAQR es la herramienta de reporting ad-hoc integrada en el portal BI de Pentaho. Accedemos a la herramienta desde la opción de menú Archivo –> Nuevo –> Nuevo report o pulsando el correspondiente Icono en la barra de la aplicación. En ese momento nos aparece un asistente que nos permitirá la construcción de los informes a partir de la información del metadata definida en el sistema (que habremos preparado previamente utilizando Pentaho Metadata Editor, como vimos en la correspondiente entrada del blog).

El asistente dispone de 4 etapas, en las que realizaremos las siguientes acciones:

1) Select Data Source: realizaremos la selección del origen de datos que queremos utilizar. Dispondremos de tantos origenes de datos como Business Model o Modelos de negocio hayamos generado en la definición del Metadata. Seleccionaremos uno de los modelos y tendremos disponibles para los siguientes pasos todas las vistas de negocio y sus correspondientes campos incluidas dentro del modelo de negocio seleccionado. Además, podremos indicar un template o plantilla que nos determinará el formato que va a tener nuestro informe.

Asistente de la creacion de un informe de WAQR

2) Make Selections: a continuación, de todas las vistas de negocio incluidas en el modelo de negocio seleccionado, configuraremos la disposición de los resultados del informe, seleccionamos los campos oportunos de cada una de las vistas de negocio disponibles. Seleccionaremos uno a uno los campos y lo llevaremos a las secciones del informe que se encuentran en la parte derecha de este. Tenemos 3 posibles secciones: Groups (campos con los que realizaremos grupos de valores, pudiendo configurar hasta 5 niveles de agrupación), Details (campos que formaran el cuerpo del informe o detalle) y Filters (campos que se utilizaran para restringir los valores devueltos en la ejecución).

Selección de campos y configuración de secciones

3) Customize Selections: en esta tercera pestaña configuraremos aspectos del formato de cada una de las secciones del informe. Por ejemplo, en lo referente a las agrupaciones (Groups), podremos indicar aspectos generales de como se realiza el agrupado (nombre de nivel, repetición de cabecera de grupo, mostrar sumario de grupo, etiqueta para el total por grupo, ruptura de pagina o no en el grupo, ruptura de pagina antes o despues del grupo, alineación, etc), tal y como podeís ver en la imagen siguiente.

Propiedades de campos y secciones

Ademas, podemos indicar aspectos de formateo, como mascaras de edición, alineación, forma de ordenación del grupo, condiciones del grupo, etc, tal y como veis en la imagen. Basicamente, tenemos los mismos componentes de formato si estuvieramos modificando los campos seleccionados en la sección Details (detalles).

Propiedades de campos y secciones

Para los campos insertados en la sección Filters, podremos indicar constraints que serán condiciones que limitaran los resultados devueltos por el informe.

4) Report Settings: este será el último paso en la preparación del reporte adhoc. En este paso final indicaremos la orientanción del informe, el tamaño de papel y la configuración de la cabecera y pie de pagina del informe. En este momento, el informe ya esta listo para su ejecución o para ser guardado y reutilizado posteriormente por los usuarios.

Configuracion del informe y de cabecera y pie de página

Hemos visto que es una herramienta muy fácil y sencilla de utilizar, y su potencia radica en que hayamos definido correctamente en el metadata los campos a utilizar con las relaciones definidas correctamente entre las tablas que son su origen. Aunque tiene muchas limitaciones, nos puede sacar de un apuro y puede ser sin duda facilmente utilizada por los usuarios finales. Ademas, los resultados del informe los pondremos tener en HTML, PDF, Excel o CSV.

Pentaho Report Designer (PRD).

Pentaho Report Designer es una herramienta de reporting que nos permite crear nuestros propios informes, bien para ejecutarlos directamente o para publicarlos en la plantaforma BI y que desde allí puedan ser utilizados por los usuarios. La herramienta es independiente de la plataforma y forma parte del conjunto de herramientas de la suite de Pentaho.

Antes de continuar, os hago una recopilación de la documentación que proporciona Pentaho en su portal Wiki con respecto al reporting.

User Guides

Blogs, Articles, How-Tos

Books

Developer Guides

A pentaho-reporting-sdk aimed at Java-Developers with simple demos, a detailed step-by-step guide and all the sources for all the libraries used in the demos is available from sourceforge.

Installation Guides

User Guides

Pentaho Report Designer nos permite trabajar con multiples origenes de datos (JDBC, Olap4J, Pentaho Analysis, Pentaho Data Integration, XML) incluido el metadata que tengamos definido en nuestro sistema. También nos permite modificar los informes ad-hoc que hayamos creado utilizando WAQR (de hecho es la única forma de modificarlos). El motor de reporting de Pentaho esta basado en JFreeReports y ha sido totalmente rediseñado en lo que llaman PRD (Pentaho Report Designer). PRD es un generador de informes del tipo Banded (en contraposición de los generadores orientados a flujo),  en los que un informe se divide en secciones o grupos de datos en los que los elementos del informe pueden ser posicionados. Esta forma de trabajar tiene algunas limitaciones, que se pueden superar con el uso de subinformes. El resultado de los informes que vamos diseñado se puede ver con las opciones de previsualización, y nos permite la salida de resultados en diferentes formatos como PDF, HTML, XLS, RTF y CSV.

Interfaz de usuario de PRD

A continuación vamos a realizar un ejemplo de utilización conectandonos a una base de datos Oracle para obtener diferentes informes de ventas, que nos permitira ver las funcionalidades básicas de PRD, así como todos los elementos que forman su interfaz de usuario.

Estructura de los informes.

Tal y como vemos en la imagen anterior, cuando creamos un informe partimos de una estructura estandar que incluye una serie de secciones que podremos utilizar o no. Las secciones mas habituales son las siguientes:

  • Page Header/Page Footer: el contenido indicado en estas secciones sera visible en cada una de las páginas del informe, en cabecera o pie de página según la sección seleccionada.
  • Report Header/ Report Footer: el contenido indicado será visible solo una vez, al principio del informe o al final de este. Puede ser utilizado para indicar un titulo o un resumen del informe (en la primera página) o para presentar totales o conclusiones en la última página.
  • Group Header/ Group Footer: cuando estamos trabajando con grupos de información, disponemos de estas dos secciones para abrir o cerrar cada grupo de información (sacar titulo al inicio o al final, subtotales, etc).
  • Details Body: es la seccion que contiene la información detallada (fila por fila) recuperada de la base de datos. Tambien incluye las secciones Details Header y Footer para incluir cabeceras o titulos y pies.
  • No Data: es una sección especial que se visualizara en el informe en el caso de que el set de resultados del informe este vacio.
  • Watermark: es una sección especial que nos permite definir una marca de agua (o fondo) que se imprimira como base del informe en cada página de este.

Ejemplo de informe donde podemos ver las secciones que lo forman

En la imagen podeis ver un ejemplo de informe donde se utilizan algunas de las secciones descritas anteriormente (Cabecera de página para incluir el log de una empresa, Report Footer para incluir un gráfico resumen de los datos, cabecera y pie de grupo, detalle, etc). Podeis igualmente ver en la parte derecha del informe la sección Data que veremos mas adelante para definir los origenes de datos, la query que utilizaremos para recuperar datos, así como las funciones y fórmulas para hacer cálculos.

Componentes.

En la parte izquierda de la pantalla, disponemos de una barra de herramienta en las que tenemos los diferentes componentes que podemos utilizar al definir un informe (tal y como vemos en la imagen siguiente). Vamos a ver en detalle cada uno de ellos (de derecha a izquierda según aparecen en la imagen):

Componentes de la barra de herramientas

  • Etiqueta (label): elemento básico para añadir texto estático o etiquetas de columna en un informe.
  • Campo Texto (text-field): para visualizar el contenido de campos de texto recuperados del dataset del informe.
  • Campo Numérico ( number-field): para visualizar el contenido de campos numéricos recuperados del dataset del informe.
  • Campo Fecha (date-field): para visualizar el contenido de campos de fecha recuperados del dataset del informe.
  • Campo Mensaje (message-field): campo avanzado que nos permite combinar texto, referencias a campos y funciones en una única celda de datos. Por ejemplo, podremos definir un campo de este tipo con el contenido: «Cliente: $codigo_cliente domiciliado en: $poblacion». Los campos precedidos por $ se refieren a campos del dataset.
  • Etiqueta de recurso (resource-label): basandonos en un fichero de recursos, PRD puede traducir etiquetas de textos a otros idiomas.
  • Campo de recurso (resource-field): idem que el anterior, pero para campos.
  • Mensaje de recurso (resource-message): idem que el anterior, pero para mensajes.
  • Campo Imagen (content-field): para visualizar campos del dataset que sean imagenes (recuperados, por ejemplo, de la base de datos).
  • Imagen (image): visualiza una imagen proveniente de un archivo o de una URL.
  • Elipse (ellipse): dibuja una elipse en el informe.
  • Rectangulo (rectangle): dibuja un rectangulo en el informe.
  • Linea horizontal (horizontal-line): dibuja una linea horizontal en el informe.
  • Linea vertical (vertical-line): dibuja una linea vertical en el informe.
  • Gráfico de escala (survey-scale): para dibujar un mini-grafico para representar una escala de 1 a 5.
  • Grafico (char): inserta un gráfico de análisis, que se podrá editar mediante el correspondiente editor. Nos permite crear gráficos de barras, de área, de tarta, de lineas, de burbujas, de anillo, radar, etc.

Editor de gráficos

  • Código de barras (simple-barcodes): traduce el contenido de un campo a un código de barras que podrá ser leido por un lector apropiado.
  • Bar-sparkline,Line-sparkline, Pie-sparkline: para crear mini gráficos de barras, lineas o tarta.
  • Banda (band): elemento para agrupar varios elementos y facilitar su formato de forma conjunta.
  • external-element-field: válido para cargar subreports externos, desde una URL o desde una ubicación de archivos.
  • SubInforme (subreport): nos permite incluir un subinforme dentro de la ejecución de un informe (y al que podremos pasar también parámetros del propio informe padre).

Definición de datasets.

La parte más importante cuando estemos creando un informe es la definición del dataset, pues va a determinar los datos que vamos a poder utilizar dentro de nuestro informe. PRD nos deja trabajar con varios tipos de origenes de datos, como son JDBC, el Metadata de la plataforma BI,  Pentaho Data Integration, origen de datos OLAP, fichero XML, etc. Vamos a ver un ejemplo sencillo utilizando JDBC como origen de datos.

En primer lugar, configuraremos el origen de datos al que nos vamos a conectar utilizando JDBC. A continuación, definiremos las querys que van a determinar los datos devueltos desde el origen de datos, tal y como vemos en la imagen.

Configuración de Dataset - Origen JDBC

Para la construcción de las querys, tenemos un asistente que nos permite ver las tablas disponibles e ir construyendo las diferentes secciones de la sentencia SQL (Select, From, Where, Group By, Having, Order by). Disponemos la opción Preview para ir visualizando los resultados que devolvería la ejecución de la query.

Editor de querys

Una vez concluida la definición de la query, nos aparece en la parte derecha de la aplicación, en la sección Data (tal y como vemos en la imagen siguiente). Tendremos todas las querys que hayamos definido y la lista de campos que devuelve la query, para poder ser utilizados en las diferentes secciones y controles del informe.

Sección Data en PRD

Uso de parámetros y funciones.

Para poder definir restricciones a los datos que devuelvan los informes, PRD nos permite trabajar con parametros, que se nos pediran en el momento de ejecución del informe y que se podrán incluir en las condiciones de las querys definidas. Podremos definir diferentes tipos de parametros, desde lista simple, lista multiple, casilla de selección, radio button, etc. Los valores a mostrar en los filtros también se pueden hacer que sean determinados por el resultado de ejecución de una query contra base de datos (por ejemplo, una lista de provincias para determinar los resultados que queremos mostrar).

Editor de Parametros

Para incluir los parametros en la ejecución de las querys, utilizaremos la notación ${nombre_parametro} en el lugar apropiado. Por ejemplo:

SELECT DISTINCT
‘dim_date_en_us’.’year4′,
‘dim_date_en_us’.’quarter_name’,
‘dim_date_en_us’.’month_number’,
‘dim_date_en_us’.’month_name’
FROM
‘dim_date_en_us’
WHERE
‘dim_date_en_us’.’year4′ = ${param_year}
AND ‘dim_date_en_us’.’quarter_name’ IN (${param_quarter})

Observar el uso de un parametro que es una lista de valores en la ultima linea de la sentencia SQL, utilizando el operador IN para que un campo de una tabla se compare contra una lista de valores.

PRD también nos permite la utilización de funciones para realizar calculos y operaciones complejas (incluyendo la utilización de formulas al igual que vimos con PDI).

Editor de fórmulas

Uso de subinformes.

Otra característica interesante de PRD es la posiblidad de utilizar un informe dentro de otro informe (lo que llaman subinformes). Esto nos puede permitir superar las limitaciones que tiene un generador de informes del tipo Banded. Por ejemplo, lo podremos utilizar para mostrar diferentes vistas del mismo conjunto de datos. Cuando incluimos un subinforme dentro de otro, al hacer doble click accedemos al informe hijo para realizar su modificación y diseño.

Todos los elementos vistos hasta ahora tienen sus correspondientes tablas de propiedades donde podemos configurar su compartamiento, propiedades de formato y visualización, calculos, etc. Disponemos igualmente de una opción de previsualización para ver como quedaría el resultado del informe tras la fase de diseño.

Publicación y ejecución de informes.

Los informes que hayamos creado se pueden ejecutar directamente desde PRD o bien publicarlos en la plataforma BI, momento en el que ya estarán disponibles para ser usados por los usuarios (habrá que acordarse previamente de refrescar la cache del  metadata en la plataforma para que tenga en cuenta y sea accsesible el nuevo informe).

Otras alternativas. Birt y JasperReports.

Ademas de las herramientas propias de Pentaho, la plataforma nos permite integrar con otras de las herramientas de reporting Open Source mas conocidas, como son Birt y JasperReports. Os dejo algunos links donde se explica la forma de configurar y ejecutar informes de Birt y Jasper en la plataforma BI de Pentaho.

  • Ejecución de informes BIRT en la plataforma de Pentaho: link.
  • Ejecución de informes JASPER en la plataforma de Pentaho: link.

Igualmente, os dejo otros links interesantes donde hablan de la integración de Pentaho con estas herramientas y algunos posibles problemas o cosas a tener en cuenta:

  • Todobi.com: Integrando BIRT con Pentaho.
  • Eclipse BIRT 2.5 and Pentaho 3.5 Integration and Configuration: link.

Con el uso de PRD y estas dos herramientas alternativas de reporting quedan mas que cubiertas las necesidades de reporting en la plataforma.

9 respuestas to “17.4. Reporting en Pentaho con Pentaho Report Designer. Otras posibilidades de reporting (Birt y JasperReports).”

  1. Victor said

    Excelente post, me sirvio de mucho, gracias.
    Pude implementar Pentaho Reporting en la empresa donde trabajo, pero el problema que tengo es que existe una intranet hecha en asp.net y los reportes deben abrirse desde esta aplicacion, llego a un reporte desde su url pero no puedo resolver el problema de la autentificacion dado que me redirecciona al login.
    Pude ver como hacerlo desde java pero en Net no lo encontre.

    Porfa me podrias guiar en este tema?

    gracias.

    • Lo siento, no puedo ayudarte sobre ese tema…no es mi especialidad.

      Un saludo.

    • René Pereira said

      Recién comencé con Pentaho, estoy partiendo con DI haciendo mis ETLs. Y aquí he visto que puedes hacer llamas a páginas y te permite entregar usuario y clave para la autenticación. Imagino que a la altura de tu página la autenticación fue realizada y esos valores están en variables de session. Tal vez funcione, pero creo que podrías hacer una página .Net donde llegue sin autenticación y dentro de ella iniciarlas con valores para que tu página del reporte reciba valores en esas variables y sea válido sin enviarte a la página de login. Espero se entienda el objetivo 🙂
      Saludos,
      René Pereira
      Santiago, Chile.

  2. Alex said

    Hola

    Una duda: En mi WAQR, en el paso «4) Report Settings» el botón de Next siempre está deshabilitado ¿Qué puedo hacer?

    Gracias

  3. Juan said

    HOLA

    estoy haciendo un reporte, y dentro de este hago un subreport en el cual importo parametros del reporte padre, pero a la hora de exportarlos no soy capaz, no me funciona bien y me gustaria saber como se haria. Quiero hacer la suma de los valores de una columna (los valores vienen del sub-repor, pero no puedo hacer la suma en el report porq entra varias veces (una por fila))

    otra duda es si se pueden poner los label o textos en posicion vertical(abajo a arriba, por ejemplo)

    gracias

  4. miwesly said

    La aplicación que suelo manejar para hacer informes es crystal report. He bajado ésta de pentaho y la he estrado trasteando con fuego real. Me parece una basura francamente difícil de igualar. Comparada con crystal es lamentable. Supongo que birt será mejor, voy a probarlo. Ya de paso indicar que también me parece una basura el pentaho bi server, el jpivot y todo lo de pentaho que no sea kettle. Kettle sí es bastante buena, el resto me parece insufrible.

    • Totalmente de acuerdo contigo. Excepto Kettle, el resto me parecio totalmente infumable. Yo lo compare con Microstrategy, y estan a años luz de hacer algo decente.

      Un saludo.

      • miwesly said

        Mis primeras impresiones con BIRT son muy buenas. Tengo la impresión de que me puede dar mucho juego.

      • miwesly said

        Pues un día y medio ha tardado el dichoso birt en dejar de funcionar en mi pc, y mira que en cuanto a funcionalidad me ha parecido bastante potable. De pronto y sin saber ni cómo ni por qué, cuando se lanza el visor de informes da un error 505 diciendo no sé qué de la versión de apache commons-logging. Pero si el pc está igualito que ayer!!! Estas herramientas de bi de software libre más bien parecen enemigas de la productividad.

Deja un comentario