TodoBI TodoBI

Crosstabs en Pentaho Reporting

Nuestro compañero Juan Jose Ortilles, experto en pegarse con Eclipse Birt y Pentaho Reporting nos cuenta como crear Crosstabs con Pentaho Reporting, siguiendo las notas explicadas en este post y ver que, efectivamente funciona.
Una de las funcionalidades que hace que desestimemos Pentaho Reporting en muchas ocasiones en favor de Eclipse Birt son las tablas cruzadas.
Consideraciones previas:
Es una funcionalidad experimental por lo que hay que hacerlo todo por atributos olvidate de arrastrar y desplazar. Olvidate del layout.
Para abilitar la funcionalidad hay que realizar la siguiente combinación de teclas CTRL-ALT-O (parece un huevo de pascua). Te saldrá una advertencia de que has reiniciado el editor para ver las caracteristicas ocultas. Tiembla y dile que “vale”.
PRD1
Todavía no verás nada….. Espera…. Ahora vamos a poner la página apaisada….
FILE ==> PAGE SETUP ==> HORIZONTAL Y A-4
Todavía no verás nada…. Espera…. Vamos a ponerle la consulta, para ello vamos a tirar de nuestro querido SampleData:
select distinct
PRODUCTLINE,
T.MONTH_NAME,
sum(TOTALPRICE) as TOTALPRICE,
sum(QUANTITYORDERED) as QUANTITYORDERED
from PRODUCTS P inner join ORDERFACT O on (P.PRODUCTCODE = O.PRODUCTCODE)
inner join DIM_TIME T on (O.ORDERDATE = T.TIME_ID)
where T.YEAR_ID = 2004
group by PRODUCTLINE,
MONTH_NAME
order by PRODUCTLINE,
T.MONTH_ID
;
Si te fijas, ahora ademas de añadir un grupo puedes añadir un grupo de crosstab (en las pruebas que he hecho a veces tarda un poco en aparecer)
PRD2
Y… Tachan! Aquí tenemos nuestra nueva banda
PRD3
Queremos hacer una crosstab de los productline por los meses
Por lo que vamos a establecer las columnas:
crosstab-column-group-body –> crosstab-column-group y en la propiedad del grupo ponemosMONTH_NAME.
PRD4
Lo mismo para las filas:
crosstab-row-group-body –> crosstab-row-group, y en la propiedad del grupo ponemos PRODUCTLINE.
PRD5
Ya lo tenemos casi todo hecho….
Vamos a poner las cabeceras de los gruops… Eso se hace en añadiendo la elemento correspondiente en cada cabecera:
PRD6
y estableciendo su valor:
PRD7
Lo mismo para los PRODUCTLINE solo que se establecen como cabecera de filas.
Vamos ahora a por el contenido de la tabla. Mas de lo mismo:
Vamos a al detalle de la tabla y añadimos una etiqueta numérica ya que vamos a poner números y la establecemos como TOTALPRICE:
Y…. ya podemos ejecutar....
PRD9
Tachaaaan!!!!!
Bueno, vale, todavía falta pulirlo un poco, como poner los ecabezados en en negrita y reubicar las etiquetas de los encabezados le linea. Peeeero…. Ya tenemos nuestra primera Crosstab.