Upload
erik-munoz-bravo
View
67
Download
4
Embed Size (px)
Citation preview
GENERACIÓN DE INFORMES MEDIANTE HERRAMIENTAS OPENSOURCE
Informes opensource 2
Ficha Curso
Código Curso ___Nombre Curso GENERACIÓN DE INFORMES MEDIANTE HERRAMIENTAS OPENSOURCEFechasDuración 16 horasAulaProfesores
Area de Negocio [email protected]: 944272119
Informes opensource www.zylk.net 3
Índice
● Introducción
● Soluciones del mercado.
● Soluciones Opensource
● Arquitectura general y del curso.
● Introducción a los informes multidimensionales
● iReport
● Conexión JDBC
● Creación de una consulta
● Publicación en JasperServer
● Estructura de un informe
● Parámetros
● Gráficos
● Subreports
● Análisis multidimensional
● Subdataset
● Crosstab
● Ejercicios
Informes opensource www.zylk.net 4
Introducción
● Todos los proyectos requieren indicadores● Según crecen los proyectos la necesidad de
los indicadores crece en prioridad● Suele ser complicado definir a priori los
indicadores y sus informes asociados● Se suelen añadir como requisitos de baja
importancia. ● Tamaño del proyecto
Informes opensource www.zylk.net 5
Análisis de las necesidades del proyecto● La mayoría de los proyectos no se
dimensionan correctamente en la parte que atañe a los informes. (ej: q34 partía con 10 informes predefinidos y se terminaron haciendo 60)
● La mala elección puede producir grandes desviaciones
● proyectos para empresa pequeña a medida se ha optado muchas veces por xml + xsltfo
● (API – jasper) o (Spring + jasperserver)
Informes opensource www.zylk.net 6
Soluciones Posibles I
● La mayoría de los productos optan por explotar su modelo de datos por medio de la programación directa. (sql + xslt || program)– arquitectura poco escalable– arquitectura poco administrable– el modelo es rápido al principio pero lento en el
mantenimiento● Proyectos pequeños (desarrollo a medida)
también optan por la solución anterior
Informes opensource www.zylk.net 7
Soluciones posibles II
● Uso del un API para creación de informes. – Lo mismo que se usan otros APIs para otras partes
de proyectos, (librerías de componentes gráficos etc..) sería conveniente reducir el uso de sql + programación para la generación de informes.
– Proyectos pequeños (necesidades de informes bajas), se pude utilizar iReports como herramienta de modelado y usar el API para integrar dichos informes.
– Mayor mantenibilidad y escalabilidad
Informes opensource www.zylk.net 8
Soluciones propuestas III
● Integrar toda una plataforma de informes como solución horizontal para una empresa.
● Todas las aplicaciones generan datos que hay que consumir– mantenimiento centralizado – acceso controlado– integración de distintos orígenes de datos– puerta hacia el BI (minería de datos)
Informes opensource www.zylk.net 9
Soluciones del mercado
● Existen multitud de herramientas de reporting en el mercado, muchas de ellas integradas dentro de soluciones más complejas de Bussiness Intelligence. Podríamos indicar algunas:
– Microsoft SQL Server Reporting Services– Crystal Reports– BEA Portal Reporting Solutions– MicroStrategy Report Services– Actuate BIRT (Business Intelligence and Reporting Tools)– ...
Informes opensource www.zylk.net 10
Soluciones OpenSource
● Algo similar podríamos decir de las herramientas open source:
– Pentaho Report Designer– OpenRPT para PostgreSQL– Eclipse BIRT– JasperReports– ...
Informes opensource www.zylk.net 11
Ejemplos con iReport
● Ejemplo de informe generado con JasperReports. Para su diseño usaremos la herramienta iReport.
Informes opensource www.zylk.net 12
Arquitectura general de los informes
● En los tres modelos de generación de informes propuestos la arquitectura subyacente es la misma.– modelo de datos– acceso a los datos– presentación de los datos
● La propuesta es, no repetir de este modelo mas que lo estrictamente necesario en cada caso.
Informes opensource www.zylk.net 13
Arquitectura general
● Un ejemplo de la arquitectura general del sistema sería:
cliente 2web
cliente 3web
cliente 1iReport
servidorjasperserver
tomcatmysqlservidor/es BD
Informes opensource www.zylk.net 14
Arquitectura del curso
● La arquitectura sobre la que trabajaremos en el curso es la siguiente:
iReport
Tomcat (jasperserver)
mysql (sugarcrm, foodmart)
Windows XP
ubuntuServer (vmware)
Informes opensource www.zylk.net 15
Introducción a los informes multidimensionales
● En el análisis multidimensional, los datos se representan mediante dimensiones como producto, territorio y cliente, por ejemplo. Por lo regular las dimensiones se relacionan en jerarquías, por ejemplo, continente, país, región, estado, ciudad. El tiempo es también una dimensión con su propia jerarquía como año, trimestre, mes, semana y día si se requieren.
Informes opensource www.zylk.net 16
Introducción a los informes multidimensionales
● Para facilitar un análisis complejo, el análisis multidimensional presenta una visión empresarial sencilla de los datos. Un usuario empresarial puede acceder a los ingresos por departamento y tienda para los último cuatro trimestres, para un conjunto dado de productos, por algún vendedor en especial... Los resultados se pueden girar para cambiar los ejes y la perspectiva. Además, los usuarios empresariales pueden navegar por las dimensiones profundizando u obteniendo resúmenes a lo largo de los elementos de una dimensión, o penetran a través de las dimensiones para ver otras perspectivas.
Informes opensource www.zylk.net 17
Introducción a los informes multidimensionales
● El procesamiento analítico se usa para "entender lo que ésta sucediendo en la empresa" y promete análisis del tipo "¿qué pasa si ...?" e "¿y ahora qué?".
● El procesamiento analítico se emplea para análisis complejos, con amplia manipulación (análisis de datos dinámicos), así como planeación a futuro y pronósticos el pasado como prólogo del futuro.
● Al procesamiento analítico o análisis multidimensional se le conoce también como procesamiento analítico en línea (OLAP).
● (Fuente: Data Warehousing La integración de información para la mejor toma de decisiones, Autores: Harjinder S. Gill y Prakash C. Rao, Editorial: Prentice Hall)
Informes opensource www.zylk.net 18
Otros elementos de JasperServer – JasperIntelligence
● JasperReports. Motor de informes, librería Java de generación de informes definidos a partir de un XML (jrxml)
● JasperServer. Framework web, repositorio de informes
● iReport. Herramienta visual para el diseño de informes. Se obtienen los archivos JRXML sin necesidad de conocer su sintaxis.
● JasperETL. Plataforma de integración de datos (ETL = Extract, Transform, Load) implementada sobre Talend*.
Informes opensource www.zylk.net 19
iReport
● Herramienta de diseño de informes JRXML
Informes opensource www.zylk.net 20
iReport
● Definir DataSource(s)● El asistente de informes (reports)● Estructura de un informe● Parámetros● Gráficos● Subreports
Informes opensource www.zylk.net 21
Conexión JDBC
NOTA: iReport sólo incluye por defecto los drivers JDBC de MySQL y HSQLDB. Cualquier otro requeriría incluir el JAR correspondiente en el directorio lib de iReport
● Lo primero que tendremos que hacer es conectar a la base de datos vía JDBC.
● Para ello haremos lo siguiente:
➢ menú data > connections/datasources
➢ Se le indica el driver y la url (por ejemplo "com.mysql.jdbc.Driver" y "jdbc:mysql://127.0.0.1:3306/sugarcrm")
➢ El usuario y la password (por ejemplo "jasperadmin", "jasperadmin")
Informes opensource www.zylk.net 22
Conexión JDBC
Informes opensource www.zylk.net 23
creación de una consulta
● Iniciamos el asistente indicando:– data source (definido en el paso anterior)– consulta a B.D. (SQL): select * from users
Informes opensource www.zylk.net 24
creación de una consulta
● indicamos los campos que usaremos
Informes opensource www.zylk.net 25
creación de una consulta
● si los vamos a agrupar con algún criterio:
Informes opensource www.zylk.net 26
creación de una consulta
● selección del tipo de presentación (layout)
Informes opensource www.zylk.net 27
creación de una consulta
● se nos muestra el diseño del informe creado.● finalmente lo guardamos como un fichero jrxml
en nuestro equipo.● en este caso lo llamaremos
“usuariosPorTitulo.jrxml”
Informes opensource www.zylk.net 28
creación de una consulta
● menu Construir(Build) > Ejecutar informe (usando conexión activa), mostrará el resultado en el JasperViewer:
Informes opensource www.zylk.net 29
publicación en jasperserver
● para ver el resultado desde el jasperServer nos conectaremos con un usuario con los permisos necesarios y daremos de alta el informe usando el asistente desde Manage Repository > Add New (JasperServer Report).
Informes opensource www.zylk.net 30
publicación en jasperserver
● tras ponerle el nombre, localizamos el archivo jrxml generado desde iReport
Informes opensource www.zylk.net 31
publicación en jasperserver
● seguimos los pasos por defecto y le indicamos el datasource
Informes opensource www.zylk.net 32
publicación en jasperserver
● seguimos los pasos y guardamos, obteniendo el siguiente resultado:
Informes opensource www.zylk.net 33
estructura de un informe
● Los informes se dividen en áreas horizontales llamadas “bandas”
Informes opensource www.zylk.net 34
estructura de un informe
● Bandas:– title: Aparece sólo al inicio del informe.
– pageHeader: En la parte superior de cada página
– columnHeader: Nombres de los campos del informe
– detail: Valores de los campos del informe
– columnFooter: Información resumida de los campos del informe
– pageFooter: En la parte inferior de cada página
– lastPageFooter: En la parte inferior de la última página
– summary: Información resumida al final del informe
Informes opensource www.zylk.net 35
estructura de un informe
● Elementos básicos de un informe:– Line
– Rectangle
– Ellipse
– Static text
– Text field (o simplemente Field, campo)
– Image
– Subreport
– Crosstab
– Chart
Informes opensource www.zylk.net 36
estructura de un informe
● Modificamos el diseño del informe generado automáticamente dejando:– en columnHeader los nombres de
los campos
– en titleHeader el valor del campo de agrupación
– en detail los valores de los campos
Informes opensource www.zylk.net 37
estructura de un informe
● el resultado es:
Informes opensource www.zylk.net 38
estructura de un informe
● para modificar propiedades del informe del menú “Edit” la opción “report properties”:
Informes opensource www.zylk.net 39
estructura de un informe
● todos los elementos del informe tienen una serie de propiedades básicas comunes:– banda a la que pertenecen– top, left, width, height– color del texto y del elemento– si es o no transparente– eliminar lineas en blanco– diferentes opciones de impresión– etc
Informes opensource www.zylk.net 40
parámetros
● veamos como pasar un parámetro a un informe:
– partamos del informe anterior– con view > parameters > new :
● le añadimos un parámetro de tipo String (por ejemplo “tituloMaster”)
● le ponemos un valor por defecto (“VP sales”)● marcamos la casilla “use as prompt”
– con edit > view query :● modificamos la consulta a: “SELECT * FROM users
where title = $P{tituloMaster} order by title”– eliminamos elementos decorativos (title, pagefooter, ...)
Informes opensource www.zylk.net 41
parámetros
● modificación de la consulta y declaración del parámetro
Informes opensource www.zylk.net 42
parámetros
● informe modificado:
Informes opensource www.zylk.net 43
parámetros
● prompt y resultado:
Informes opensource www.zylk.net 44
parámetros
● si queremos ver cómo se usaría en JasperServer:● Administracion > repositorio > reports > samples ● addNew > jasperServer report● nombre y etiqueta: “usuariosPorTitulo2”● From File system: “usuariosPorTitulo2.jrxml”● Le añadimos un control tipo texto con addControl, llamado
necesariamente “tituloMaster”, esto es el nombre que le habíamos dado al parámetro en el jrxml
● escogemos el DS: “/olap/datasources/SugarCRMDataSource”● finalizamos y vemos el informe en el listado
Informes opensource www.zylk.net 45
parámetros
● al editar este informe primero nos pedirá el “tituloMaster”:
Informes opensource www.zylk.net 46
parámetros
● y luego lo mostrará:
Informes opensource www.zylk.net 47
gráficos
● Para añadir gráficos a un informe JasperServer usa la librería JFreeChart.
● Crearemos un ejemplo de informe:– Con el asistente, usaremos la consulta: “select
count(title) as cargo, title from users group by title”– seguimos los pasos del asistente y obtenemos un
resultado como el siguiente:
Informes opensource www.zylk.net 48
gráficos
● informe
Informes opensource www.zylk.net 49
gráficos
● resultado
Informes opensource www.zylk.net 50
gráficos
● modificamos el informe y le añadimos un gráfico:
– nos situamos en la banda “summary”– con Edit >insert element > chart
● con doble click sobre el gráfico, podremos en la pestaña “chart” editar las propiedades con el botón “edit chart properties”
● pulsando este botón en la pestaña “details” de la pestaña “chart data” introduciremos lo siguiente:
– en “key expression”: $F{title}– en “value expression”: $F{cargo}
Informes opensource www.zylk.net 51
gráficos
Informes opensource www.zylk.net 52
gráficos
● el informe modificado
Informes opensource www.zylk.net 53
gráficos
● el resultado
Informes opensource www.zylk.net 54
subreports
● Crearemos un ejemplo de informe:– Con el asistente, usaremos la consulta: “select
count(title) as cantidad, title from users group by title”
– seguimos los pasos del asistente y obtenemos un resultado como el siguiente:
Informes opensource www.zylk.net 55
subreports
● report
Informes opensource www.zylk.net 56
subreports
● resultado
Informes opensource www.zylk.net 57
subreports
● modificando el report e insertando el subreport:
Informes opensource www.zylk.net 58
subreports
● con doble click sobre el subreport, en el asistente:
– le asignamos el report que usamos para los parámetros (“usuariosPorTitulo2.jasper”)
Informes opensource www.zylk.net 59
subreports
– observamos que usa el parámetro que definimos (“tituloMaster”)
Informes opensource www.zylk.net 60
subreports
● con doble click sobre el subreport ● le asignamos el parámetro “tituloMaster” a $F{title}
Informes opensource www.zylk.net 61
subreports
● resultado con las modificaciones
Informes opensource www.zylk.net 62
subreports
● si queremos formatear algún campo:– editamos el campo con “properties” y en la pestaña “text field” modificamos en
“text field expression” el valor que tenga por el que queramos poner.
– en el subreport del ejemplo cambiaríamos: “$F{phone_home}” por “($F{phone_home}==null)?new String("Sin telf."):$F{phone_home}”
Informes opensource www.zylk.net 63
subreports
● para añadir variables:
– del menú view > variables > new– añadiremos 2 variables suma al report maestro– la 1ª sumará los usuarios de la página
(“sumaCantidadPagina”)– la 2ª sumará los usuarios totales (“sumaCantidaTotal”)
Informes opensource www.zylk.net 64
subreports
● por página ● por report
Informes opensource www.zylk.net 65
subreports
● el informe ahora quedaría así:
Informes opensource www.zylk.net 66
subreports
● el resultado:
Informes opensource www.zylk.net 67
análisis multidimensional
● como aproximación demos un vistazo a uno de los ejemplos que se instalan en el JaperServer, el “Sugar CRM sample unit 1”
● veamos que este tipo de report permite una modificación dinámica de los resultados, esto es podemos ver la información de múltiples maneras.
● para ver el informe: tras logearse en el JasperServer, en el repositorio, olap > views.
● elegimos “Sugar CRM sample unit 1” y obtenemos:
Informes opensource www.zylk.net 68
análisis multidimensional
Informes opensource www.zylk.net 69
análisis multidimensional
● lo primero que podemos destacar es la barra de herramientas que aparece en la parte superior del informe
● podremos mostrar el mismo informe de múltiples formas:
– filas por columnas– expandircontraer las jerarquías– ocultarver dimensiones y medidas– mostrar gráficos– imprimirlo– exportarlo a excel ...
Informes opensource www.zylk.net 70
análisis multidimensional
● filas por columnas:
Informes opensource www.zylk.net 71
análisis multidimensional
● desplegar
Informes opensource www.zylk.net 72
análisis multidimensional
● ocultar
Informes opensource www.zylk.net 73
análisis multidimensional
● eliminar measures y añadir gráfico
Informes opensource www.zylk.net 74
subdataset (gráfico)
● para la creación de un subdataset creemos primero un report en blanco con “File > new Document”
● con “Data > report query” le añadimos la query siguiente: “select count(*) as num_total from sales_location”
● en “edit > subdatasets” pulsar “new” y seguir los pasos:
– data source name: “SubDataset1” (por ejemplo)– query: “select country, count(*) as num_country from
sales_location group by country”● añadimos un “chart” de tipo “pie 3D” en detail.
Informes opensource www.zylk.net 75
subdataset (gráfico)
● editamos el gráfico y hacemos lo siguiente:
– en “properties > chart > chart data > dataset”:● dataset run: “SubDataset1”● connection/data source expression > use connect
expresion : “$P{REPORT_CONNECTION}”– en “properties > chart > chart data > details”:
● key expression: “$F{country}”● value expression: “$F{num_country}”● label expression: “$F{country}”
Informes opensource www.zylk.net 76
subdataset (gráfico)
● añadimos el campo “$F{num_total}” con el texto “Total”● guardamos y ejecutamos
Informes opensource www.zylk.net 77
subdataset (gráfico)
● el resultado:
Informes opensource www.zylk.net 78
crosstab
● para la creación de un crosstab creemos primero un report en blanco con “File > new Document”
● con “Data > report query” le añadimos la query siguiente: “select * from sales_location”
● en “edit > subdatasets” pulsar “new” y seguir los pasos:
– data source name: “SubDataset1” (por ejemplo)– query: “select count(*) as num,close_year,country,state from
sales_fact,sales_location,sales_date_of_close where sales_location.id=sales_fact.sales_location_id and sales_date_of_close.id = sales_fact.sales_date_of_close_id group by country,state,close_year”
Informes opensource www.zylk.net 79
crosstab
● dejamos sólo las bandas de “title” y “summary”● desde la barra de herramientas añadimos un “crosstab”● siguiendo el asistente:
1.subdataset: “SubDataset1” (el hecho antes)
2.row group 1: “country”
3.column group 1: “close_year”
4.detail field: “num” con function: “sum”
5.siguiente y finalizar● guardamos y ejecutamos
Informes opensource www.zylk.net 80
crosstab
Informes opensource www.zylk.net 81
crosstab
Informes opensource www.zylk.net 82
ejercicios
1.crear un informe en formato tabular con los datos de la tabla sales_location de la base de datos sugarcrm, ordenados y agrupados por country y state.
1.1. A partir del resultado anterior, eliminar el detalle y mostrar únicamente el total de registros en cada grupo. Hacerlo usando las variables predefinidas para cada nivel de agrupación y también usando nuevas variables definidas manualmente. Comprobar que los resultados coincidan.
1.2. Añadir al informe anterior un gráfico que se muestre al final del mismo, que represente en una tarta los puntos de venta (sales_location) por países.
2.crear un informe de la tabla “sales_location” de la base de datos sugarcrm, que agrupe las ciudades por su inicial y las muestre en 3 columnas
Informes opensource www.zylk.net 83
ejercicios
3.crear un informe que muestre el totales de “amount”, “time_to_close” y la media (avg) de “probability” de la tabla “sales_fact” agrupando estos cálculos por “country” y “state” de la tabla “sales_location” (base de datos sugarcrm). Resolverlo de dos formas: 1) agrupando y calculando en la SQL y 2) agrupando los datos en el report y calculando los totales mediante variables.Comparar ambos resultados.
4. Crear un informe que muestre dos gráficos de tipo PieChart que representen los puntos de venta (sales_location) en uno por paises (country) y en el otro por estados (state).
Informes opensource www.zylk.net 84
enlaces relacionados
Portal desarrollo JasperSoft BI Suite http://www.jasperforge.org/
JasperSoft home http://www.jaspersoft.com
Descarga de iReport http://sourceforge.net/projects/ireport/
Informes opensource www.zylk.net 85
licencia
Este documento ha sido creado por zylk.net
Esta obra está bajo una licencia ReconocimientoCompartir bajo la misma licencia 2.5 España de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/bysa/2.5/es/ o envie una carta a Creative Commons, 171 Second
Street, Suite 300, San Francisco, California 94105, USA.
Los screenshots que aparecen en los ejemplos han sido recogidos de las webs de los productos explicados
Informes opensource www.zylk.net 86
Gracias por su asistencia