“Si estamos en una migración de base de datos de diferentes tecnologías; estas tareas podrían simplificarse y hasta automatizarse, reduciendo el tiempo de elaboración de complejos scripts y horas hombre en la validación de la data”
Víctor Gutiérrez
Especialista en Integración de Datos ETL – Data warehouse
Clientes: Entel / Delosi / Mibanco
Ya sea que estemos implementando una malla o haciendo cambios en una de ellas, siempre nos enfrentamos al reto de validar que los datos se hayan cargado consistentemente, o que el proceso que se ha modificado evidencie que los procesos construidos están dejando la data cuadrada.
Si estamos en una migración de base de datos de diferentes tecnologías y necesitamos validar que no se haya perdido la precisión en las columnas numéricas; estas tareas podrían simplificarse y hasta automatizarse, reduciendo el tiempo de elaboración de complejos scripts y horas hombre en la validación de la data.
En los procesos de ETL siempre se nos presenta el escenario de la cuadratura de los datos o la evidencia de cómo demostrar que no se están desechando registros. De igual manera, que la fuente haya recibido una determinada cantidad de registros y que el flujo de datos sea capaz de evidenciar y aislar los registros inconsistentes.
Esta tarea se lleva a cabo mediante la suma de partes de códigos de PL/SQL o la implementación de una herramienta especializada de ETL.
Quiero compartir con ustedes esta herramienta, que, a lo largo de mi experiencia profesional, me ha dado muy buenos resultados y grandes satisfacciones, además de ser de fácil construcción.
Consideraciones:
Muchas veces nos encontramos con flujos de datos implementados en diferentes ETL, cuyos pasos terminan con un OK o con ERROR. En estos casos, necesitamos saber en qué parte de la malla se está produciendo el error y cuál es su capacidad de reacción para volver a lanzarse, siempre y cuando no sea un error de conectividad o caídas originadas en el hardware (crecimiento de los datos).
A continuación, les presento un Flujo de Datos con control de errores y envío de mensajes al operador ante una caída:
Se puede observar…
- Que existe un paso llamado Control Proceso, encargado de detener la malla en cuanto se produzca un error en el flujo de datos.
- Que existe una notificación de error
- Que existe una notificación de término.
- Que al terminar un proceso/reproceso exista un paso de validación de la calidad de datos.
Restricciones:
Imaginemos ahora que se debe evaluar la calidad de los datos. Para ello, vamos a suponer que la malla lee 10,000 documentos y que a su término genera solo 9,500 ¿en qué punto de la malla fueron rechazados los 500 faltantes? ¿fue por ‘joins’ o validaciones de negocio?
Es aquí donde necesitamos incluir banderas que nos permitan identificar, al final del flujo, en qué momento fueron descartados dichos documentos e informar al usuario el porqué del descarte.
Para aplicar el ‘check sum’ que les planteo, las tablas deberán contar con al menos una columna numérica.
Aplicación:
El ejercicio presentado a continuación está desarrollado en Oracle Database, donde lo que buscamos básicamente es la definición de la tabla. De esta manera, se obtendrá el número de filas y la suma de los campos numéricos. Con esta información podremos validar que las cargas hayan insertado las filas requeridas y que las columnas tengan valores.
El script solicita dos parámetros:
- OWNER: Que es el esquema donde existe la tabla física.
- TABLA: Es el nombre de la tabla a la que se hará check sum
Para nuestro ejemplo usaremos la siguiente tabla:
Al ejecutar el script del check_sum, se genera el siguiente select, que al ejecutarlo obtendremos el siguiente resultado:
Ahora, ejecutaremos el proceso de carga y al terminar el proceso lanzaremos nuevamente el script:
Se observa que el nuevo proceso no ha generado la misma cantidad de filas. Por consiguiente, las columnas no cuadran. En este caso, debemos revisar el proceso (los join, los where, los registros rechazados) para encontrar el error y aliviarnos de la tarea de cuadrar tablas.
Fuente: Muchas noches y sábados y domingo en cuadrar migraciones y procesos ETL complejos.
Victor Gutierrez
Es actualmente Especialista en productos Oracle, para empresas como ENTEL, Mibanco y Delosi. Cuenta con más de 6 años de experiencia en Diseño e implementación de ETL y Data warehouse; así como más de 20 años trabajando en proyectos de consultoría en implementación de ERP y desarrollo de sistemas en plataformas Web y Cliente Servidor. Capacitador de Talleres en Gora.