
En un articulo anterior yo les comentaba como hacer parsing the una bitacora de un servidor web Apache utilizando Java y PostgreSQL; También les comentaba que con SQL tenemos una flexibilidad increible para obtener y manipular los datos. Sin embargo, para que la presentación de los datos luzcan un poco más profesionales deberíamos usar un generador de reportes; De esa manera trabajamos menos y podemos repetir los resultados con otro tipo de reportes.
¿Porqué utilizar un generador de reportes? La razón más sencilla es que usted tiene cosas más importantes que hacer que generar un reporte que se vea bonito, usted debe concentrarse en solucionar problemas como administrador; Por otro lado, usando un generador de reportes usted puede fácilmente controlar el aspecto de sus datos (convirtiendolos en información) mientras utiliza lo obtenido ya sea para solucionar problemas o para comunicarle algo importante a sus clientes en un lenguaje que ellos puedan entender.
Empecé evaluando varias aplicaciones. La primera que traté de usar se llama ‘DataVision‘.
Yo tuve unos cuantos problemas usandolo con PostgreSQL y JDBC:
- Manejo de el tipo de datos CIDR. No es texto, así que si quieren ver la dirección IP de la máquina en cuestion, deberán convertirlo a texto utilizando la función host (por ejemplo: select host(ip_addr) from http_log). Para más información, vean aquí las rutinas de manipulación de datos de tipo CIDR.
- Bajese la última versión del manejador de JDBC para su base de datos. Yo tuve problemas con una versión vieja, asi que me busque el manejador para PostgreSQL 7.4.
El manual de DataVision es bastante preciso en cuanto a como proceder para obtener los reportes y para controlar la apariencia de los resultados. La mejor forma de probarlo es convertir uno de los SQL que escribimos anteriormente al reporte. Voy a utilizar uno sencillo:
-- Count all IP addresses (including repetitive hits from the same IP address) that have visited the site for each day SELECT log_date as Date ,count(ip_addr) AS "Visits" FROM http_log GROUP BY log_date ORDER BY log_date DESC;
En mi caso, salida de esta consulta me retorna lo siguiente:
Date Visits
2005-03-25 246
2005-03-24 868
2005-03-23 743
2005-03-22 780
2005-03-21 824
2005-03-20 673
2005-03-19 644
2005-03-18 311
El primer golpe al usar esta herramienta, es que no soporta ‘Groub By‘ en el SQL. Si usted quiere agrupar los datos, deberá dejar que sea Datavision quien lo haga. Eso puede que sea un inconveniente serio, dependiendo de la complejidad de el SQL. Como no puedo utilizar ‘group by’, entonces debo cambiar mi estrategia para contabilizar los totales por día; Eso no me agrada mucho, ya que yo quisiera concentrarme lo menos posible aprendiendo la herramienta, y más tiempo resolviendo el problema que tengo a la mano, asi que lo mejor es seguir buscando.
Revisando SourceForge otra vez, consigo que existe otro generador de reportes llamado ‘JasperReports‘. Parece ser que esta herramienta cuenta con un soporte inmenso de la comunidad Open Source, y decido bajarme una interfaz gráfica para la herramienta llamada Ireport.
Usando un ‘Wizard’ obtuve mi primer reporte en 30 minutos. Increible, justo lo que yo quería, sin limitaciones en el SQL:

Lo que sale en la pantalla es el reporte, el cual puede ser guardado en varios formatos (HTML, PDF, etc). Increiblemente conveniente, flexible. Justo lo que un SA con tiempo limitado necesita.
La creación de el reporte se limito a escoger la fuente de datos (no limitada a bases de datos), el diseño de la plantilla, compilarla y finalmente ejecutarla. Luego de correr el reporte, este se puede guardar en el disco duro en el formato de salida que se desee, además de que la plantilla de el reporte se puede guardar para una futura ocasión.
Puede bajarse mi reporte desde aquí.
Sin categoría
Comentarios recientes