Al abordar un proyecto de Business Intelligence es importante la correcta valoración de la herramienta ETL que vamos a utilizar. La herramienta en base a la cual vamos a implementar nuestros procesos de abastecimiento del Datamart , Datawarehouse o estructura de almacenamiento en base a la cual posteriormente explotaremos los datos. Se trata de una pieza fundamental para el diseño, construcción y posterior evolución de nuestro sistema B.I. Analizaremos únicamente cuestiones técnicas, sin entrar a los aspectos económicos o de otra índole (licencias, acuerdos, soporte técnico, evoluciones de la herramienta, etc..). Señalar que los procesos de ETL, van muy ligados a los procesos de data profiling y de calidad de datos, que aquí no vamos a considerar.
Brevemente y como inicio recordamos que ETL son las siglas en inglés de Extraer, Transformar y Cargar (Extract, Transform and Load). En base a estos tres pasos básicos en el diseño de los procesos, vamos a proponer aspectos a considerar en la selección de una herramienta de este tipo. Posteriormente veremos las cuestiones relativas a su explotación.
Diseño de los procesos
Extracción
El primer paso es la extracción de los datos desde los sistemas de origen que pueden ser múltiples y con múltiples formatos. Es importante en esta fase una correcta validación de los datos de origen y una homogeneización de los mismos. Es importante considerar el volumen que vamos a tratar y realizar este paso sin causar impacto en los sistemas de origen (procesos batch). Vamos a considerar en este paso tanto la extracción, como la validación de los datos leídos.
En lo que respecta a esta etapa, una herramienta ETL es conveniente que cumpla los siguientes aspectos:
- Conectividad: capacidad para mapear múltiples orígenes como diferentes SGDB, diferentes tipos de modelos (relacionales, no relacionales), tipos de ficheros y formatos (host, XML, Excel, etc..), tipos de sistemas origen (ERP’s, SCM, sistemas propios), formatos de mensajes estándar (ej. SWIFT), colas de mensajería, etc..
- Facilidades para el análisis y mapeos de los formatos o modelos de datos origen.
- Admitir múltiples frecuencias de actualización. Las múltiples fuentes de datos de origen tienen diferentes ciclos de recepción y de actualización. La frecuencia de recepción puede cambiar de una a otra, así como las necesidades de actualización. Importante, la capacidad de incluir puntos de control entre las fuentes en los que garanticemos su sincronización.
- Capacidad de incorporar datos de formatos no estructurados (documentos ofimáticos, e-mails, websites, logs, etc). El campo de los datos no estructurados es inmenso y en plena evolución, es complicado de evaluar.
- Gestión de las valiaciones técnicas: nulos, valores únicos, integridad referencial, campos obligatorios, rangos de valores, etc…y de las validaciones de negocio: reglas para comprobar las consistencia de los datos basándonos en los requerimientos de negocio.
- Gestión de errores. Detección de los mismos y aplicación de acciones.
- En caso de tratarse de una herramienta que desde la metadata genera código, ver la posibilidad de realizar ingeniería inversa: del código a la metadata.
Transformación
La fase de transformación consiste en realizar pasos de transformación o creación de nuevos datos en base a los recibidos y aplicando las reglas de negocio particulares de cada sistema. Existen pasos comunes a casi todos los procesos de transformación, tales como: selección de columnas a tratar, transformación de codificaciones (columnas codificadas de forma diferente en sistema origen respecto al sistema destino), calcular nuevas columnas en base a las columnas recibidas, realizar agregaciones, cruces de datos entre diferentes fuentes, etc…
- Componentes predefinidos que incorpora la herramienta para realizar diferentes tipos de transformaciones muy extendidas (filtrados, cruces, mapeos, etc..)
- Soporte para test y debugging que facilite el seguimiento de las transformaciones del proceso.
- Posibilidades de incorporar código externo (no generado por la herramienta).
- Posibilidad de crear procedimientos propios y utilizarlos otros procesos (reutilización de código/procesos).
- Posibilidades para optimizar los proceso de tratamientos de datos voluminosos o costosos ante problemas de rendimiento.
- Trazabilidad del dato. Disponer de un rastro de todas las transformaciones de un valor a lo largo del proceso. En el caso ideal, metadata consultable por el usuario, para que pueda realizar seguimiento en caso de detectar datos correctamente cargados, pero incoherentes de cara a negocio.
Carga
Esta última etapa, consiste en el volcado de los datos ya leídos, validados y tratados en la estructura analítica para su posterior explotación.
- Considerar diferentes tipos de tablas destino (en general objetos BBDD de almacenamiento).
- Considerar diferentes tipos de carga: borrado y volcado completo, carga incremental, etc…
- Creación de procesos de agregación. Considerar diferentes niveles de agregación y organización de los datos (cubos, BBDD multidimensional).
- Volcados de datos que consideren diferentes niveles de agregación y organización de los datos en las tablas destino (cubos, BBDD multidimensional).
- En esta etapa es igualmente importante el rendimiento: Procesamiento de volcados en paralelo para optimizar tiempos de volcado.
Una vez analizados los aspectos relevantes en el diseño de los procesos, revisamos los aspectos a considerar en la explotación y mantenimiento y evolución de la herramienta.
Explotación y mantenimiento de la herramienta
- Adaptación a las diferentes plataformas hardware y sistemas operativos existentes.
- Facilidad de uso. Interfaz intuitiva. Sencilla representación grafica de los objetos del repositorio, modelos de datos y flujos de datos.
- Posibilidad de realizar análisis de impacto. Ver las implicaciones que un cambio en el modelo de datos o en los procesos tiene en todo el proyecto.
- Versionado de código. Control de cambios. Gestión del trabajo en grupo.
- Posibilidades de documentación.
- Rapidez de consulta y actualización de la metadata o posibilidades de optimizarla (índices).
- Posibilidades para planificar jobs: planificaciones batch, ejecuciones basadas en eventos, disparadores, etc…
- Gestión de la cadena de ejecución. Dependencias entre procesos. Rearranque de jobs.
- Sistema de logs. Logs detallados de ejecución/errores y recolección de estadísticas de ejecución (logs de resumen de cargas: fecha carga, registros cargados, registros erróneos, etc..).
- Herramientas para monitorizar procesos y evaluar el rendimiento de los jobs (resource analyzer).
- Compatibilidad con CWM (Comun Warehouse Metamodel). Capacidad para exportar o importa metadatos a otras herramientas ETL.
- Actualización continua: El aumento de los volúmenes de datos pueden hacer que los lotes que se procesaban a diario pasen a procesarse en micro-lotes (varios al día) o incluso a la integración con colas de mensajes o a la captura de datos modificados (CDC: Change Data Capture) en tiempo real para una transformación y actualización continua.
- Integración con el resto de componentes de la plataforma analítica, con el resto de los componentes de la plataforma de integración de datos (data profiling, calidad de datos) y con los componentes más orientados a explotación, análisis y presentación (capa reporting, dashboards, minería de datos, etc..).
- Capacidad de adaptación a estándares que permitan el fácil intercambio de datos (ejemplo SOA).
- Capacidad de interoperabilidad con otras herramientas (ej. Vía API).
- Cuestiones de seguridad propias de cualquier herramienta.
Como es lógico, este breve compendio, trata aspectos generales que posteriormente deberán ser complementados con la problemática particular de cada sistema, infraestructura tecnológica, requerimientos de negocio y necesidades de información.