Mostrando entradas con la etiqueta Jaspersoft. Mostrar todas las entradas
Mostrando entradas con la etiqueta Jaspersoft. Mostrar todas las entradas

martes, 11 de octubre de 2011

Uso de parámetros en Jasper


Cuando hacemos un informe con Jasper Reports, es muy normal que utilicemos parámetros. De esta forma podemos enviar datos al informe que serán utilizados a la hora de generarlo. Los casos más habituales quizá sean el mostrar directamente el valor del parámetro, o el usarlo a su vez como parámetro para la consulta SQL que ejecutamos dentro de report. En este caso sólo tenemos que definir el parámetro en la sección correspondiente de iReport, y hacer referencia a él con el formato $P{nombre_parametro}, como se muestra en la imagen.



Pero podemos ir más allá. Por ejemplo podríamos recibir como parámetro la sentencia SQL a ejecutar, o alguna de sus cláusulas. En este caso buscaríamos hacer algo como esto.



Pero si tratamos de ejecutar un informe con este formato no funcionará, y nos mostrará una excepción:

net.sf.jasperreports.engine.JRException: Error executing SQL statement for : report1


Para entender por qué pasa esto, tenemos que entrar en detalle y ver qué hace Jasper cuando procesa los parámetros.

Cuando en la definición de la consulta de un Jasper utilizamos un parámetro con el formato $P{nombre_parametro}, lo que la herramienta genera es realmente una consulta SQL con parámetros. Es decir, tendríamos una consulta tal que select * from tabla where campo = ?.

Ahora bien, si lo que vamos a recibir como parámetro es una sentencia que queremos inyectar directamente en la consulta SQL, esta forma de trabajo no funcionaría. En este caso tenemos que cambiar el formato con el que hacemos referencia al parámetro por $P!{nombre_parametro}. De esta forma le indicamos a la herramienta que no queremos pasar un parámetro a la consulta SQL, sino que queremos directamente incluir el valor textual del parámetro como parte de la consulta.

viernes, 18 de febrero de 2011

Jasper Server

En las últimas semanas he comenzado a trabajar en un nuevo proyecto que, además de demasiados cambios a nivel personal (como demuestra que me halle escribiendo aquí a estas horas), me ha proporcionado algunas interesantes novedades a nivel profesional.

Una de ellas es el haber comenzado a trabajar con Jasper Server. Ya había utilizado anteriormente la tecnología de JasperSoft para crear informes, siempre a través de la herramienta iReport, pero nunca había llegado a tocar el servidor.

En mi caso me lo encontré ya montado y funcionando, pero me tocó hacer algunas modificaciones a los informes que contenía. La gran duda me surgió nada más empezar. ¿Cómo me bajo un reporte para poder editarlo? Lo primero que me indicó mi instinto fue que bichease la interfaz Web buscando una opción que lo permitiese, pero para mi sorpresa no la había, o estaba muy bien escondida.

Así que tiré del plan B, y rebuscando por iReport encontré una vista hasta entonces desconocida: el repositorio JasperServer.

Cuando se activa, esta vista muestra un panel desde el que se pueden configurar conexiones a servidores Jasper simplemente dando los parámetros necesarios mediante un wizard.


Una vez establecida la conexión, es posible navegar por el contenido del servidor hasta localizar los ficheros jrxml en él publicados. Basta entonces con hacer clic derecho sobre ellos y seleccionar la opción 'Open in editor' para tener el informe en el editor, y en una carpeta temporal de nuestro ordenador. Desde ahí no tenemos más que guardarlo donde nos interese.

Si tras hacer modificaciones queremos realizar el proceso inverso, actualizando la versión del servidor a partir de nuestra copia local, no tenemos más que volver a hacer clic derecho, y seleccionar en este caso 'Replace with current document' (lógicamente con el informe modificado abierto y activo en el editor).

Todo esto dicho para la versión 3.7.0 de iReport.

domingo, 2 de mayo de 2010

Business Intelligence

Hoy doy una pequeña introducción a uno de esos conceptos que se ponen muy de moda en el mundo de la informática, y con el que en principio trabajaré en mi trabajo final de máster: la Inteligencia Empresarial, o Business Intelligence, que los términos ingleses siempre se imponen.

El objetivo del BI sería explotar la información almacenada en los distintos sistemas de información de una empresa u organización, con el fin de ayudar en la toma de decisiones. Para ello se siguen procesos ETL (Extract, Transform, Load), en los que se obtienen datos de distintas fuentes, se procesan (se combinan, filtran, transforman, homogeneizan...), y finalmente se cargan en un nuevo almacen de datos.

Las fuentes de datos de las que se parte pueden ser completamente heterogéneas, tanto a nivel técnico como en cuanto a la información que almacenan: bases de datos de clientes, hojas excel con datos financieros...

Una vez realizadas las transformaciones, se definen Indicadores (KPI, Key Performance Indicators) que son datos que nos ofrecen información interesante para la toma de decisiones. Por ejemplo, ¿en qué grado se ajustan los resultados de los proyectos a las previsiones realizadas? ¿en qué porcentaje se exceden los costes de los proyectos? ¿cuál es el índice de errores detectados para nuestros sistemas en producción?...

Por último, podríamos definir Cuadros de Mando, que serían informes en los que se presentan resúmenes de esta información de una forma rápida y visual, sirviendo, como se ha dicho, de apoyo a la hora de tomar decisiones en la organización.

Esta sería, a grandes rasgos, la idea detrás de la Inteligencia Empresarial. Si todo va bien, en próximas entradas entraré en mayor detalle proporcionando algunos ejemplos concretos, e introduciendo el uso de herramientas como Pentaho y Jaspersoft BI Suite.