Software libre para la integración de información en la Universidad de Cádiz
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Software libre para la integración de información en la Universidad de Cádiz

on

  • 229 views

 

Statistics

Views

Total Views
229
Views on SlideShare
229
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Software libre para la integración de información en la Universidad de Cádiz Presentation Transcript

  • 1. Software libre para la integración de información en la Universidad de Cádiz Quincena de la Ingeniería, 2014 /AntonioGarcía Domínguez @antoniogado
  • 2. Presentación
  • 3. ¿Quién soy? 2003/09 - 2008/07: Estudiante de Ingeniería Informática 2008/10 - 2010/11: Profesor sustituto 2010/11 - 2014/01: Becario predoctoral 2014/01 - sigue: Técnico investigador en la DGSI
  • 4. Proyectos y contribuciones PFC: (II CUSL) Investigación: servicios web e ingeniería dirigida por modelos : pruebas unitarias para WS-BPEL : ingeniería dirigida por modelos : mutación evolutiva para WS-BPEL : mi tesis : generación dinámica de invariantes para WS-BPEL ... y unos cuantos más :-) XMLEye BPELUnit Eclipse Epsilon GAmera SODM+T Takuan
  • 5. ¿Qué hacemos en la DGSI? DGSI = Dirección General de Sistemas de Información Intermediarios entre demandas de información y fuentes de datos: Desde fuera: Ministerio (SIIU) y Junta de Andalucía Desde dentro: Equipo de Gobierno, Ordenación Académica, Investigación, Innovación Docente... Ayudamos a organizar los sistemas de información de la UCA: PHP: con framework (p. ej. Symfony)... o sin él Django Restos de Zope/Plone Y un largo etcétera
  • 6. Datos ➯ Información
  • 7. Pasos
  • 8. Localizar las fuentes ¿Qué es lo que tenemos? ¿Quién es el responsable? ¿Cuándo se actualiza? ¿Cómo se mantiene? ¿De qué forma se almacena? En este paso pueden encontrarse problemas de calidad: puede haber que revisar el origen.
  • 9. Carga en el almacén de datos Es el repositorio central con toda la información. Debe estar bien organizado en áreas de interés. Los problemas de calidad de datos deben estar resueltos. Identificadores únicos y formatos de campos uniformes (p. ej. sexo o ID personal).
  • 10. Carga en el almacén de datos En resumen...
  • 11. Explotación de los datos ¿Y ahora qué? Depende del tipo de toma de decisiones, y del tiempo del destinatario. Operacionales: listados de operaciones cotidianas. Tácticas: cubos multidimensionales, top 10, estadísticas... Estratégicas: cubos y cuadros de mando (+ interactividad).
  • 12. Herramientas para carga
  • 13. Kettle Para definición de procesos ETL: Extract: leemos datos (SQL, JSON, XML, Access, Excel...) Transform: reordenamos, limpiamos, reemplazamos... Load: volcado a una tabla de una BD, un CSV, etc. Dispone de Spoon (editor gráfico), Kitchen y Pan (ejecutan desde CLI) y Carte (servidor) Basado en Java y muchas bibliotecas existentes (p. ej. Apache POI) Adquirido por Pentaho: ahora es Pentaho Data Integration Código disponible en Se puede descargar de Github Pentaho Community
  • 14. Kettle: ejemplo de transformación Aristas = flujos de filas
  • 15. Kettle: ejemplo de trabajo Aristas = flujos de control
  • 16. OpenRefine Originalmente Google Refine, ahora es un Es muy útil para hacer una primera inspección de un .xlsxy detectar problemas de calidad proyecto abierto
  • 17. LibreOffice Fuera esos .xls y .xlsx ☺ La biblioteca Apache POI en Kettle no maneja bien macros Excel Por suerte, implementa conversiones masivas: 150+ ficheros .xls, .ods y .xlsx Excel: listos en un par de minutos LibreOffice libreoffice--headless--convert-tocsv--outdirout*.xls*.xlsx
  • 18. Herramientas UNIX y scripting UNIX: ¡troceando texto plano desde los '70! Sólo con y ya se puede hacer muchísimo En casos más complejos , o resuelven el problema Ojo: no todo se resuelve a base de expresiones regulares grep sed Python Perl Ruby (?:(?:rn)?[t])*(?:(?:(?:[^()<>@,;:".[]000-031]+(?:(?:(?:rn)?[t] )+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[t]))*"(?:(?: rn)?[t])*)(?:.(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031]+(?:(?:( ?:rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[t])*))*@(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-0 31]+(?:(?:(?:rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)* ](?:(?:rn)?[t])*)(?:.(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031]+ (?:(?:(?:rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?: (?:rn)?[t])*))*|(?:[^()<>@,;:".[]000-031]+(?:(?:(?:rn)?[t])+|Z |(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[t]))*"(?:(?:rn) ?[t])*)*<(?:(?:rn)?[t])*(?:@(?:[^()<>@,;:".[]000-031]+(?:(?:(?: rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031]+(?:(?:(?:rn) ?[t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[t] )*))*(?:,@(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[t])* )(?:.(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031]+(?:(?:(?:rn)?[t] )+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[t])*))*) *:(?:(?:rn)?[t])*)?(?:[^()<>@,;:".[]000-031]+(?:(?:(?:rn)?[t])+ |Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[t]))*"(?:(?:r n)?[t])*)(?:.(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031]+(?:(?:(?: rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[t ]))*"(?:(?:rn)?[t])*))*@(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031 ]+(?:(?:(?:rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*]( ?:(?:rn)?[t])*)(?:.(?:(?:rn)?[t])*(?:[^()<>@,;:".[]000-031]+(? :(?:(?:rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(? :rn)?[t])*))*>(?:(?:rn)?[t])*)|(?:[^()<>@,;:".[]000-031]+(?:(? :(?:rn)?[t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)? [t]))*"(?:(?:rn)?[t])*)*:(?:(?:rn)?[t])*(?:(?:(?:[^()<>@,;:".[] ¿Alguien adivina qué hace esta bonita regexp?
  • 19. Vistas de BD y PL/SQL Más cerca del origen = mayor eficiencia SQL es muy conciso para ciertas cosas (para otras, no tanto) Con muchos datos (200k+ filas), es mejor hacer lo posible en BD Hay que tirar de EXPLAIN y revisar las estructuras de datos e índices que pueda haber
  • 20. Herramientas para explotación
  • 21. Pentaho BI Server Servidor de Inteligencia Empresarial y Analíticas de Negocio: punto de entrada a toda la información extraída del almacén Integración de muchos proyectos (GPL, EPL, MPL y demás) Código disponible en , binarios en Modelo de negocio "freemium" con dos ediciones: Community: de código abierto y sin soporte oficial Enterprise: con extensiones cerradas y soporte oficial (~30.000€/año) Gracias a la comunidad FLOSS, la edición Community tiene funcionalidad equivalente: (ahora parte de Pentaho Corp.) contribuyó muchas mejoras, conocidas como las "CTools" Github Pentaho Community WebDetails
  • 22. Pentaho BI Server Demo
  • 23. Pentaho Report Designer Aplicación de escritorio (Win/MacOS/Linux) para diseño de informes avanzados, basada en (otro proyecto abierto de Pentaho) Los informes pueden consumir consultas SQL, MDX, transformaciones Kettle, etc. Permite exportar los informes a PDF, HTML, Excel y CSV, entre otros Los informes pueden incorporar enlaces, gráficas, subinformes, etc. Una vez están listos, se publican al servidor y se visualizan desde ahí JFreeReport
  • 24. Pentaho Report Designer
  • 25. Cubos OLAP: Mondrian y Saiku Imaginemos que queremos estudiar las notas de los alumnos ¿Cómo las guardamos para cualquier estudio que se nos ocurra? Podemos tener en una tabla una fila por nota, con: Alumno (sexo, edad, años en la carrera, número de matrícula) Profesor (sexo, edad, categoría, área, departamento, centro, NIF) Estudios (titulación, plan, materia, curso, convocatoria) Nota obtenida (numérica y no numérica)
  • 26. Cubos OLAP: Mondrian y Saiku En el centro hay una tabla de hechos Cada hecho está en unas dimensiones Un almacén tiene muchos de estos "esquemas en estrella"
  • 27. Cubos OLAP: Mondrian y Saiku Podríamos intentar consultar estas estrellas con SQL, pero no sería práctico Hay un estándar de facto para esto: MDX, originario de Microsoft es un motor de código abierto que implementa un dialecto de MDX es un cliente cómodo para MDX que se integra en Pentaho Mondrian Saiku
  • 28. Cubos OLAP: Mondrian y Saiku You are using Saiku Community Edition, please consider
  • 29. Cuadros de mando: CDF + CDE Hay usuarios muy ocupados que no tienen tiempo de mirar informes ni trastear con Saiku Hay que darles la información ya lista, que deje explorar y que quepa en un pantallazo: un cuadro de mando El y el permiten elaborar cuadros de mando sin mucha complicación Community Dashboard Framework Community Dashboard Editor
  • 30. Cuadros de mando: CDF + CDE Type Resource Layout Structure About Documentation New Save Save as...
  • 31. REST para datos: CDA aporta los servicios Web REST que necesita CDF para los cuadros de mando Por lo demás, un cuadro de mando es un fichero JSON que se transforma a HTML + JavaScript Los servicios REST se pueden usar de forma independiente a CDA (para cualquier otra web) Community Data Access
  • 32. REST para datos: CDA Filename: /public/plugin-samples/pentaho-cdf-dd/cde_sample1.cda
  • 33. Validación automática: CDV permite comprobar automáticamente fuentes CDA Útil para detectar momentos en que las consultas fallan o tardan demasiado, o para detectar filas incorrectas Sólo hay que indicar la ruta al fichero de CDA, el nombre de la consulta, los parámetros y un trozo de JavaScript con la verificación Se pueden especificar expresiones cron para automatizar las comprobaciones Community Data Validator
  • 34. Validación automática: CDV Validations Alerts CDA Errors Search:
  • 35. En el punto de mira
  • 36. Sparkl es otro proyecto más de la gente de las CTools Permite crear extensiones para Pentaho usando transformaciones Kettle y cuadros de mando CDE Ya hay unos cuantos desarrollos nuevos subidos al Pentaho Marketplace: , un componente para CDE que implementa tablas OLAP al estilo de Saiku , para sincronizar el repositorio JCR de Pentaho con un directorio local , para gestionar registros locales Sparkl BTable Repository Synchronizer Log Manager
  • 37. CKAN es un proyecto de código abierto para portales de datos abiertos (como debe ser) Está siendo adoptado por varias universidades del entorno (por ejemplo, la Universidad de Granada) En la DGSI se está estudiando la posibilidad de abrir algunos conjuntos de datos al público, y podría ser una opción para organizarlos CKAN
  • 38. D3.js Lib. JavaScript para convertir datos en visualizaciones interactivas Sólo utiliza estándares abiertos: HTML, CSS, SVG y JavaScript mbostock’s block #5944371 Bilevel Partition Ejemplos: , ,radiales colisiones NY Times
  • 39. Fin de la presentación ¡Gracias a todos!