El antes, durante y después de un proceso ETL
Los que llevamos un tiempo en el mundo de Business Intelligence (BI), sabemos que un buen proceso ETL es algo un poco más complejo de lo que parece. Cuando incursionamos en esta aventura de conocer BI, procesos de migración de datos o poblamientos de grandes estructuras, quedamos fascinados con las herramientas y la versatilidad de éstas para facilitarnos el desarrollo de procesos ETL. Por ende, he visto como desarrolladores, arquitectos y demás especialistas de BI pueden llegar a caer en un peligroso nivel de confianza, asumiendo que las herramientas resolverán todo el entorno, manejo y control de procesos y hoy en día estoy convencida que no es así.
Acá te dejo unos simples pasos que te orientarán como especialista técnico en el mundo de los ETL’s para que los procesos que diseñes, construyas u operes tengan un tiempo de vida útil y óptimo, los mejores tiempos de ejecución y la menor frecuencia de incidencias posibles.
El Antes de un proceso ETL
- Define tu proceso ETL, debes contemplar inicialmente si lo que vas a diseñar y construir pertenece a un proceso de simple de migración de datos, el poblamiento de una base de datos relacional, la creación de un modelo analítico, el poblamiento de un Data Warehouse, Data Marts, Data Lakes, etc. Esto es muy importante porque te permitirá dimensionar la envergadura y blindaje de tu proceso ETL. A partir de acá, ya se te abrirá la mente para saber qué tipo de orquestación, cálculos y estructuras tendrás de realizar para tener éxito.
- No estás solo, el entorno es importante: Valida los sistemas de origen, sus ventanas de acceso y la disponibilidad de los datos al momento de extraerlos de las fuentes. Dicen los expertos que el proceso de extracción ideal es el que apenas se nota, es por ello que siempre nos van a exigir que el proceso de extracción de datos desde las diversas fuentes cause el menor impacto posible. Por ejemplo, que no suponga ningún retraso a los empleados que, diariamente, trabajan con los datos y registros, que no genere contención dentro de una fuente transaccional, etc. Una extracción de un número demasiado grande de datos de una sola vez puede llegar a ralentizar e incluso colapsar, el sistema. Por este motivo, es importante valorar muy bien las necesidades y el alcance de la operación a realizar y, si es necesario, llevar a cabo la operación de forma escalonada en bloques de menor tamaño y/o en las fechas y horas más adecuadas para lograr ese mínimo impacto.
- Haz un levantamiento de los diversos tipos de fuentes que formarán parte del proceso de extracción: 1. Si son fuentes estructuradas: ambientes, servidores, bases de datos, tipos de acceso, propietarios (owners), esquemas, tablas, campos, meta datos. 2. Si son fuentes no estructuradas: apis, tokens, links, distintos tipos de archivos, etc. A todos éstos debes cederle un espacio formal a nivel de estaciones (stagings) o sistemas de archivo (filesystem) para luego proceder a la fase de transformación.
- La figura de Arquitecto de Información influye mucho porque el éxito de un proceso ETL radica en que la fase de carga (Load) se ejecute de manera correcta y para ello es imprescindible que los datos que se están cargando vayan a un destino con integridad referencial al 100% si aplica, en caso que no (si se tratase de un data lake por ejemplo) pues el destino debe tener un diseño y arquitectura lo suficientemente robusto que genere estabilidad de los datos conforme a su crecimiento.
- Recopila toda la información del punto anterior e identifica qué es variable y qué es fijo… ¡No te confíes! Más adelante sabrás por qué.
- Levanta las reglas de negocio: muchas de ellas aplicarán en el proceso de Extracción y las restantes en el proceso de transformación, esto dependerá del diseño del proceso, lo importante es no dejar de levantarlas. Aun así, si llegase a quedar por fuera alguna regla, como ya sabes que debes hacer tu proceso escalable (como un rompecabezas) no será muy difícil incorporar dicha regla.
- Cuando llegas a la transformación, tras la extracción de los datos y como paso previo a su carga, haz llegado al corazón del proceso. Allí debes plasmar todas las reglas negocio que le darán otra cara a los datos que se extrajeron. En esta fase, las herramientas de integración con las que trabajemos influyen mucho y nos brindan ciertas bondades para lograr este objetivo. ¿Qué se hace en esta fase? Por lo general operaciones como reformateo de datos, conversión de unidades, selección de columnas para su carga posterior, agregación (suma) de columnas, dividir una columna en varias, traducir códigos, obtener nuevos valores calculados, unir datos de varias fuentes, los llamados look ups: que es cuando se toma un dato y se lo compara con otro tipo de datos, cruzando información, lo que llaman pivoting: que es un proceso parecido a los looks pero con un grado mayor de complejidad, ya que se cruzan datos de distintas fuentes. Y para usted de contar. Lo importante es que cada operación sea óptima, puntual y finita.
El Durante de un proceso ETL
Al momento de construir un ETL considérate todo un maestro de las piezas, un arquitecto, un ingeniero de partes. Imagina que construyes una gran tubería por la que deban viajar datos y meta datos y deben llegar completos y estructurados a su destino. Toma en cuenta que la herramienta que estés utilizando tiene una gran importancia y un papel determinante en dicha construcción, pero… El protagonismo te lo llevas tú.
- Haz tu proceso escalable y flexible. Las extracciones con extracciones, las transformaciones con transformaciones, las cargas con las cargas. No mezcles estos procesos.
- Ajusta tu proceso a las ventanas de disponibilidad de los servicios, tanto a nivel de extracción (lectura de datos) como a nivel de carga (escritura de datos). Recuerda que muchas veces nuestra fuente y destinos no son administrados por nosotros, por lo que el proceso debe acoplarse de forma óptima a estas ventanas.
- Diseña bloques programados que realicen notificaciones de fallo vía correo o mensajes de texto, creación y mantenimiento de logs, etc., de cada paso o estación que se pueda construir dentro del proceso.
- Identifica todo desarrollo dentro del proceso ETL, identifica los jobs de extracción, los jobs de transformación, los jobs de carga, los Jobs de control.
- Documenta el proceso. Lo sé, esto no suele gustar, pero… documenta, documenta ¡documenta! No te arrepentirás.
- Parametriza todo dentro del proceso ETL, cuando te comenté en la sección del Antes del Proceso ETL que debes identificar de toda la información levantada y recopilada todo aquello que pueda ser variable o fijo es porque un buen desarrollador BI conoce un secreto: en el mundo de las Empresas, en el mundo de la informática, en el mundo actual… ¿Cuál es la única constante? El Cambio. Por tanto, es posible, probable, seguro, que en el pasar del tiempo cambien nombre de rutas, librerías, nombres de tablas, nombres de archivos, nombres de esquemas, etc. Por tanto, una excelente práctica durante la construcción de los procesos ETL es parametrizar todos los nombres y variables que sean posibles. Hoy en día, la gran mayoría (por no decir todas) de las herramientas de integración ETL permiten colocar parámetros de este tipo. Así que, no dejes de hacerlo.
- No te olvides de incorporar dentro del proceso todos aquellos puntos de control que hagan manejable y operativo el ETL, mecanismos de selección de frecuencias de ejecución, modalidades de ejecución: por ejemplo, si deseas ejecutar todo el proceso ETL, si deseas ejecutar solo Extracción y Transformación: ET, si deseas ejecutar solo Transformación y Carga: TL o cualquier combinación posible y efectiva.
El Después de un proceso ETL
¡Felicidades! Haz construido un proceso ETL… ¿Y ahora?
Déjame decirte si has llegado a esta etapa apenas tienes la mitad del camino recorrido. Si construiste un proceso ETL pensando que jamás fallaría, tú y tu proceso están destinados al fracaso, pero, si tomaste en cuenta todos los pasos anteriores, inclusive los que te voy a mencionar a continuación, entonces es altamente probable que logres tu objetivo y tu proceso ETL tenga un largo tiempo de vida útil y tenga adaptabilidad a la incorporación de nuevos productos dentro de su línea de ejecución.
El Después de un proceso ETL tiene existencia o razón de ser gracias al nivel de prevención que le otorgues antes y durante la construcción del mismo, por lo que el éxito vendrá en la fase de implementación en la medida que consideres lo siguiente:
- Creando políticas de respaldo de todos los componentes involucrados dentro del proceso ETL: Jobs, transformaciones, bases de datos intermedias (stagings), filesystem, etc., garantizas el no perder código de programación realizado durante la construcción.
- Realiza procesos de limpieza o depuración de datos, de esto dependerá el óptimo resultado de un proceso ETL. No es posible lograr un buen resultado final, acorde a los objetos marcados, sino se realiza previamente una buena limpieza de los datos. Sin esta etapa previa no es posible disponer de una base de datos de calidad que permite la toma de decisiones acertadas a nivel estratégico o ejecutivo. Esto da una idea de la enorme necesidad de tomarse muy en serio esta etapa, realizándola acorde a unos parámetros correctos y teniendo en cuenta las recomendaciones de los expertos.
- Minimiza fallos en cadenas de ejecución… ¿cómo? Sabemos que muchas veces los errores son inevitables, pero siempre se pueden amortiguar. Tu experticia como desarrollador e implantador de procesos ETL te ayudará a minimizar fallos, más si no eres experto, el tener una idea de qué podría fallar te alertará a prevenir estas incidencias. Existen dos tipos de incidencias que pueden afectar un proceso ETL: 1. Una falla dentro del proceso ETL: éstas debes evitarlas a toda costa porque es tu nombre o el de tu empresa el que saldrá a relucir al momento que ocurra la falla. 2. Una falla en algún componente externo que se involucre con el proceso ETL: interrupción eléctrica, fallos de funcionamiento en los discos de almacenamiento. ¡Es cierto! Acá ya no es tu responsabilidad, pero si estableciste políticas de respaldo respectivas, no tendrás problema al momento de recuperar.
- Han pasado 11 meses y tu proceso ETL se ejecuta correctamente, pero se acerca el cierre anual. ¿Estableciste todos los parámetros necesarios para un cambio de frecuencia? Esto no siempre ocurre, depende mucho del tipo de información que estés procesando dentro del ETL, sin embargo, establecer modos de frecuencia de ejecución permite reutilizar los componentes en diferentes instancias del tiempo, solo es cuestión que lo tomes en cuenta en tu fase de construcción y pasado un tiempo de la implantación no tendrás problema.
- ¿Tu proceso ETL es a prueba de Contingencia? En muchas empresas, sobre todo las más grandes, se realizan eventos de contingencia que pueden ser desde simulacros hasta mecanismos reales dada una situación particular. Los procesos ETL no deben estar exentos a este tipo de eventualidades, ya que muy seguramente forman parte un sistema mayor, ya sea en el proceso de extracción o carga de datos. Ahora bien, no es algo descabellado implementar contingencia a tu proceso y mientras más escalable lo hayas construido menos complicado será incorporar un bloque de contingencia que determine cómo será la ejecución durante dicho evento. La naturaleza de la Contingencia determinará en qué punto del ETL se colocará dicho bloque, que puede ser tan sencillo o complicado como consideres, es decir, desde una serie de comandos que introduzcas en la Base de Datos que leas como un archivo demonio que aparezca al momento de activar la contingencia y forcé al ETL a finalizar o tomar otro camino… la decisión es tuya.
Son muchos los caminos o vías que puedes tomar para construir un proceso ETL, pero considero que este abreboca te dará muchas ideas para que te destaques como desarrollador BI. Siempre que te apegues a un marco metodológico, a estándares de programación y dejar volar tu ingenio e imaginación.
Bibliografía:
https://blog.powerdata.es/el-valor-de-la-gestion-de-datos
Liz Davila
Ingeniero de Sistemas egresada de la Universidad Nacional Experimental Politécnica “Antonio José de Sucre” con más de 9 años de experiencia en el diseño, construcción e implantación de procesos ETL orientados tanto a sistemas de inteligencia de negocios, como sistemas transaccionales, específicamente dentro del sector bancario. Adicional a eso, Liz ha participado en diferentes proyectos tecnológicos como la implantación de modelos de datos maestros, construcción de data warehouses, cubos analíticos, entre otros. Cuenta con una certificación de la metodología ITIL, así como certificaciones técnicas de herramientas de integración, minería y reportería de datos, manejadores de Bases de Datos: Data Stage, Hyperion Intelligence, DB2 AiX, Microsoft SQL Server. Actualmente se desempeña como Líder Técnico dentro de Matrix CPM Solutions, Venezuela
Deja una respuesta