{"id":659,"date":"2018-05-31T17:39:34","date_gmt":"2018-05-31T17:39:34","guid":{"rendered":"http:\/\/matrixcpmsolutions.com?p=659"},"modified":"2018-07-17T17:37:39","modified_gmt":"2018-07-17T17:37:39","slug":"el-antes-durante-y-despues-de-un-proceso-etl","status":"publish","type":"post","link":"https:\/\/matrixcpmsolutions.com\/es\/el-antes-durante-y-despues-de-un-proceso-etl\/","title":{"rendered":"El antes, durante y despu\u00e9s de un proceso ETL"},"content":{"rendered":"<p>Los que llevamos un tiempo en el mundo de Business Intelligence (BI), sabemos que un buen proceso ETL es algo un poco m\u00e1s complejo de lo que parece. Cuando incursionamos en esta aventura de conocer BI, procesos de migraci\u00f3n de datos o poblamientos de grandes estructuras, quedamos fascinados con las herramientas y la versatilidad de \u00e9stas para facilitarnos el desarrollo de procesos ETL. Por ende, he visto como desarrolladores, arquitectos y dem\u00e1s especialistas de BI pueden llegar a caer en un peligroso nivel de confianza, asumiendo que las herramientas resolver\u00e1n todo el entorno, manejo y control de procesos y hoy en d\u00eda estoy convencida que no es as\u00ed.<\/p>\n<p>Ac\u00e1 te dejo unos simples pasos que te orientar\u00e1n como especialista t\u00e9cnico en el mundo de los\u00a0<em>ETL\u2019s<\/em>\u00a0para que los procesos que dise\u00f1es, construyas u operes tengan un tiempo de vida \u00fatil y \u00f3ptimo, los mejores tiempos de ejecuci\u00f3n y la menor frecuencia de incidencias posibles.<\/p>\n<p>El Antes de un proceso ETL<\/p>\n<ul>\n<li>Define tu proceso ETL, debes contemplar inicialmente si lo que vas a dise\u00f1ar y construir pertenece a un proceso de simple de migraci\u00f3n de datos, el poblamiento de una base de datos relacional, la creaci\u00f3n de un modelo anal\u00edtico, el poblamiento de un\u00a0<em>Data Warehouse, Data Marts, Data Lakes<\/em>, etc. Esto es muy importante porque te permitir\u00e1 dimensionar la envergadura y blindaje de tu proceso ETL. A partir de ac\u00e1, ya se te abrir\u00e1 la mente para saber qu\u00e9 tipo de orquestaci\u00f3n, c\u00e1lculos y estructuras tendr\u00e1s de realizar para tener \u00e9xito.<\/li>\n<li>No est\u00e1s 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\u00f3n ideal es el que apenas se nota, es por ello que siempre nos van a exigir que el proceso de extracci\u00f3n de datos desde las diversas fuentes cause el menor impacto posible. Por ejemplo, que no suponga ning\u00fan retraso a los empleados que, diariamente, trabajan con los datos y registros, que no genere contenci\u00f3n dentro de una fuente transaccional, etc. Una extracci\u00f3n de un n\u00famero 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\u00f3n a realizar y, si es necesario, llevar a cabo la operaci\u00f3n de forma escalonada en bloques de menor tama\u00f1o y\/o en las fechas y horas m\u00e1s adecuadas para lograr ese m\u00ednimo impacto.<\/li>\n<li>Haz un levantamiento de los diversos tipos de fuentes que formar\u00e1n parte del proceso de extracci\u00f3n: 1. Si son fuentes estructuradas: ambientes, servidores, bases de datos, tipos de acceso, propietarios (<em>owners<\/em>), esquemas, tablas, campos, meta datos. 2. Si son fuentes no estructuradas:\u00a0<em>apis<\/em>,\u00a0<em>tokens<\/em>, links, distintos tipos de archivos, etc. A todos \u00e9stos debes cederle un espacio formal a nivel de estaciones (<em>stagings<\/em>) o sistemas de archivo (<em>filesystem<\/em>) para luego proceder a la fase de transformaci\u00f3n.<\/li>\n<li>La figura de Arquitecto de Informaci\u00f3n influye mucho porque el \u00e9xito 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\u00e1n cargando vayan a un destino con integridad referencial al 100% si aplica, en caso que no (si se tratase de un\u00a0<em>data lake<\/em>\u00a0por ejemplo) pues el destino debe tener un dise\u00f1o y arquitectura lo suficientemente robusto que genere estabilidad de los datos conforme a su crecimiento.<\/li>\n<li>Recopila toda la informaci\u00f3n del punto anterior e identifica qu\u00e9 es variable y qu\u00e9 es fijo\u2026 \u00a1No te conf\u00edes! M\u00e1s adelante sabr\u00e1s por qu\u00e9.<\/li>\n<li>Levanta las reglas de negocio: muchas de ellas aplicar\u00e1n en el proceso de Extracci\u00f3n y las restantes en el proceso de transformaci\u00f3n, esto depender\u00e1 del dise\u00f1o del proceso, lo importante es no dejar de levantarlas. Aun as\u00ed, si llegase a quedar por fuera alguna regla, como ya sabes que debes hacer tu proceso escalable (como un rompecabezas) no ser\u00e1 muy dif\u00edcil incorporar dicha regla.<\/li>\n<li>Cuando llegas a la transformaci\u00f3n, tras la extracci\u00f3n de los datos y como paso previo a su carga, haz llegado al coraz\u00f3n del proceso. All\u00ed debes plasmar todas las reglas negocio que le dar\u00e1n otra cara a los datos que se extrajeron. En esta fase, las herramientas de integraci\u00f3n con las que trabajemos influyen mucho y nos brindan ciertas bondades para lograr este objetivo. \u00bfQu\u00e9 se hace en esta fase? Por lo general operaciones como reformateo de datos, conversi\u00f3n de unidades, selecci\u00f3n de columnas para su carga posterior, agregaci\u00f3n (suma) de columnas, dividir una columna en varias, traducir c\u00f3digos, obtener nuevos valores calculados, unir datos de varias fuentes, los llamados\u00a0<em>look ups<\/em>: que es cuando se toma un dato y se lo compara con otro tipo de datos, cruzando informaci\u00f3n, lo que llaman\u00a0<em>pivoting<\/em>: 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\u00f3n sea \u00f3ptima, puntual y finita.<\/li>\n<\/ul>\n<p>El Durante de un proceso ETL<\/p>\n<p>Al momento de construir un ETL consid\u00e9rate todo un maestro de las piezas, un arquitecto, un ingeniero de partes. Imagina que construyes una gran tuber\u00eda 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\u00e9s utilizando tiene una gran importancia y un papel determinante en dicha construcci\u00f3n, pero\u2026 El protagonismo te lo llevas t\u00fa.<\/p>\n<ul>\n<li>Haz tu proceso escalable y flexible. Las extracciones con extracciones, las transformaciones con transformaciones, las cargas con las cargas. No mezcles estos procesos.<\/li>\n<li>Ajusta tu proceso a las ventanas de disponibilidad de los servicios, tanto a nivel de extracci\u00f3n (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 \u00f3ptima a estas ventanas.<\/li>\n<li>Dise\u00f1a bloques programados que realicen notificaciones de fallo v\u00eda correo o mensajes de texto, creaci\u00f3n y mantenimiento de\u00a0<em>logs<\/em>, etc., de cada paso o estaci\u00f3n que se pueda construir dentro del proceso.<\/li>\n<li>Identifica todo desarrollo dentro del proceso ETL, identifica los jobs de extracci\u00f3n, los jobs de transformaci\u00f3n, los jobs de carga, los Jobs de control.<\/li>\n<li>Documenta el proceso. Lo s\u00e9, esto no suele gustar, pero\u2026 documenta, documenta \u00a1documenta! No te arrepentir\u00e1s.<\/li>\n<li>Parametriza todo dentro del proceso ETL, cuando te coment\u00e9 en la secci\u00f3n del Antes del Proceso ETL que debes identificar de toda la informaci\u00f3n 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\u00e1tica, en el mundo actual\u2026 \u00bfCu\u00e1l es la \u00fanica constante? El Cambio. Por tanto, es posible, probable, seguro, que en el pasar del tiempo cambien nombre de rutas, librer\u00edas, nombres de tablas, nombres de archivos, nombres de esquemas, etc. Por tanto, una excelente pr\u00e1ctica durante la construcci\u00f3n de los procesos ETL es parametrizar todos los nombres y variables que sean posibles. Hoy en d\u00eda, la gran mayor\u00eda (por no decir todas) de las herramientas de integraci\u00f3n ETL permiten colocar par\u00e1metros de este tipo. As\u00ed que, no dejes de hacerlo.<\/li>\n<li>No te olvides de incorporar dentro del proceso todos aquellos puntos de control que hagan manejable y operativo el ETL, mecanismos de selecci\u00f3n de frecuencias de ejecuci\u00f3n, modalidades de ejecuci\u00f3n: por ejemplo, si deseas ejecutar todo el proceso ETL, si deseas ejecutar solo Extracci\u00f3n y Transformaci\u00f3n: ET, si deseas ejecutar solo Transformaci\u00f3n y Carga: TL o cualquier combinaci\u00f3n posible y efectiva.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>El Despu\u00e9s de un proceso ETL<\/p>\n<p>\u00a1Felicidades! Haz construido un proceso ETL\u2026 \u00bfY ahora?<\/p>\n<p>D\u00e9jame decirte si has llegado a esta etapa apenas tienes la mitad del camino recorrido. Si construiste un proceso ETL pensando que jam\u00e1s fallar\u00eda, t\u00fa y tu proceso est\u00e1n destinados al fracaso, pero, si tomaste en cuenta todos los pasos anteriores, inclusive los que te voy a mencionar a continuaci\u00f3n, entonces es altamente probable que logres tu objetivo y tu proceso ETL tenga un largo tiempo de vida \u00fatil y tenga adaptabilidad a la incorporaci\u00f3n de nuevos productos dentro de su l\u00ednea de ejecuci\u00f3n.<\/p>\n<p>El Despu\u00e9s de un proceso ETL tiene existencia o raz\u00f3n de ser gracias al nivel de prevenci\u00f3n que le otorgues antes y durante la construcci\u00f3n del mismo, por lo que el \u00e9xito vendr\u00e1 en la fase de implementaci\u00f3n en la medida que consideres lo siguiente:<\/p>\n<ul>\n<li>Creando pol\u00edticas de respaldo de todos los componentes involucrados dentro del proceso ETL: Jobs, transformaciones, bases de datos intermedias (<em>stagings<\/em>),\u00a0<em>filesystem<\/em>, etc., garantizas el no perder c\u00f3digo de programaci\u00f3n realizado durante la construcci\u00f3n.<\/li>\n<li>Realiza procesos de limpieza o depuraci\u00f3n de datos, de esto depender\u00e1 el \u00f3ptimo 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\u00e9gico o ejecutivo. Esto da una idea de la enorme necesidad de tomarse muy en serio esta etapa, realiz\u00e1ndola acorde a unos par\u00e1metros correctos y teniendo en cuenta las recomendaciones de los expertos.<\/li>\n<li>Minimiza fallos en cadenas de ejecuci\u00f3n\u2026 \u00bfc\u00f3mo? Sabemos que muchas veces los errores son inevitables, pero siempre se pueden amortiguar. Tu experticia como desarrollador e implantador de procesos ETL te ayudar\u00e1 a minimizar fallos, m\u00e1s si no eres experto, el tener una idea de qu\u00e9 podr\u00eda fallar te alertar\u00e1 a prevenir estas incidencias. Existen dos tipos de incidencias que pueden afectar un proceso ETL: 1. Una falla dentro del proceso ETL: \u00e9stas debes evitarlas a toda costa porque es tu nombre o el de tu empresa el que saldr\u00e1 a relucir al momento que ocurra la falla. 2. Una falla en alg\u00fan componente externo que se involucre con el proceso ETL: interrupci\u00f3n el\u00e9ctrica, fallos de funcionamiento en los discos de almacenamiento. \u00a1Es cierto! Ac\u00e1 ya no es tu responsabilidad, pero si estableciste pol\u00edticas de respaldo respectivas, no tendr\u00e1s problema al momento de recuperar.<\/li>\n<li>Han pasado 11 meses y tu proceso ETL se ejecuta correctamente, pero se acerca el cierre anual. \u00bfEstableciste todos los par\u00e1metros necesarios para un cambio de frecuencia? Esto no siempre ocurre, depende mucho del tipo de informaci\u00f3n que est\u00e9s procesando dentro del ETL, sin embargo, establecer modos de frecuencia de ejecuci\u00f3n permite reutilizar los componentes en diferentes instancias del tiempo, solo es cuesti\u00f3n que lo tomes en cuenta en tu fase de construcci\u00f3n y pasado un tiempo de la implantaci\u00f3n no tendr\u00e1s problema.<\/li>\n<li>\u00bfTu proceso ETL es a prueba de Contingencia? En muchas empresas, sobre todo las m\u00e1s grandes, se realizan eventos de contingencia que pueden ser desde simulacros hasta mecanismos reales dada una situaci\u00f3n 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\u00f3n o carga de datos. Ahora bien, no es algo descabellado implementar contingencia a tu proceso y mientras m\u00e1s escalable lo hayas construido menos complicado ser\u00e1 incorporar un bloque de contingencia que determine c\u00f3mo ser\u00e1 la ejecuci\u00f3n durante dicho evento. La naturaleza de la Contingencia determinar\u00e1 en qu\u00e9 punto del ETL se colocar\u00e1 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\u00e9 al ETL a finalizar o tomar otro camino\u2026 la decisi\u00f3n es tuya.<\/li>\n<\/ul>\n<p>Son muchos los caminos o v\u00edas que puedes tomar para construir un proceso ETL, pero considero que este abreboca te dar\u00e1 muchas ideas para que te destaques como desarrollador BI. Siempre que te apegues a un marco metodol\u00f3gico, a est\u00e1ndares de programaci\u00f3n y dejar volar tu ingenio e imaginaci\u00f3n.<\/p>\n<p>Bibliograf\u00eda:<\/p>\n<p>https:\/\/blog.powerdata.es\/el-valor-de-la-gestion-de-datos<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-145 wp-user-avatar wp-user-avatar-145 alignnone photo\" src=\"http:\/\/matrixcpmsolutions.com\/wp-content\/uploads\/2018\/04\/09-150x150.jpg\" alt=\"Liz Davila\" width=\"145\" height=\"145\" \/><\/p>\n<div class=\"autor-info\">\n<h3 class=\"autor-nombre\">Liz Davila<\/h3>\n<p class=\"autor-descripcion\">Ingeniero de Sistemas egresada de la Universidad Nacional Experimental Polit\u00e9cnica &#8220;Antonio Jos\u00e9 de Sucre&#8221; con m\u00e1s de 9 a\u00f1os de experiencia en el dise\u00f1o, construcci\u00f3n e implantaci\u00f3n de procesos ETL orientados tanto a sistemas de inteligencia de negocios, como sistemas transaccionales, espec\u00edficamente dentro del sector bancario. Adicional a eso, Liz ha participado en diferentes proyectos tecnol\u00f3gicos como la implantaci\u00f3n de modelos de datos maestros, construcci\u00f3n de data warehouses, cubos anal\u00edticos, entre otros. Cuenta con una certificaci\u00f3n de la metodolog\u00eda ITIL, as\u00ed como certificaciones t\u00e9cnicas de herramientas de integraci\u00f3n, miner\u00eda y reporter\u00eda de datos, manejadores de Bases de Datos: Data Stage, Hyperion Intelligence, DB2 AiX, Microsoft SQL Server. Actualmente se desempe\u00f1a como L\u00edder T\u00e9cnico dentro de Matrix CPM Solutions, Venezuela<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Los que llevamos un tiempo en el mundo de Business Intelligence (BI), sabemos que un buen proceso ETL es algo un poco m\u00e1s complejo de lo que parece. Cuando incursionamos en esta aventura de conocer BI, procesos de migraci\u00f3n de datos o poblamientos de grandes estructuras, quedamos fascinados con las herramientas y la versatilidad de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":906,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[],"class_list":["post-659","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/posts\/659","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/comments?post=659"}],"version-history":[{"count":1,"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/posts\/659\/revisions"}],"predecessor-version":[{"id":660,"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/posts\/659\/revisions\/660"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/media\/906"}],"wp:attachment":[{"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/media?parent=659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/categories?post=659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matrixcpmsolutions.com\/es\/wp-json\/wp\/v2\/tags?post=659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}