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
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).
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).
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
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
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
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
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
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