GENERACIÓN DE INFORMES MEDIANTE HERRAMIENTAS …³n+de+informes...Informes opensource 2 Ficha Curso...

86
GENERACIÓN DE INFORMES MEDIANTE HERRAMIENTAS OPENSOURCE

Transcript of GENERACIÓN DE INFORMES MEDIANTE HERRAMIENTAS …³n+de+informes...Informes opensource 2 Ficha Curso...

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 + xslt­fo

● (API – jasper) o (Spring + jasper­server)

  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– expandir­contraer las jerarquías– ocultar­ver 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 Reconocimiento­Compartir bajo la misma licencia 2.5 España de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by­sa/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