Guía para diseñar un pipeline de datos eficiente
POR EDITH MONTES, DATA ENGINEER -DATASCOUTS
A la hora de construir un lago de datos (datalake) y/o un datawarehouse es importante diseñar y construir pipelines de datos confiables que se encuentren totalmente automatizados, que sean escalables y que se puedan estar monitoreando fácilmente.
Dicha tarea queda a cargo del equipo de ingeniería de datos y puede volverse una tarea compleja si no se toman en cuenta los componentes esenciales que los conforman.
¿Qué es un pipeline de datos o canalización de datos?
Un pipeline o canalización de datos hace referencia al proceso de mover datos de un lugar a otro de forma automatizada.
A pesar de que esta definición parezca algo sencilla, este proceso conlleva por detrás todo un análisis a realizar, ya que de ello dependerá la calidad de los datos a entregar.
Veamos a continuación los pasos para desarrollar un pipeline de datos eficiente:
Primeramente es necesario identificar el origen de los datos (datasource) y el tipo de datos que se van a mover (si son estructurados, semi-estructurados, no estructurados). Para ello, podemos realizar preguntas como:
- ¿La información proviene de bases de datos transaccionales?, ¿de una API?, ¿de archivos almacenados en la nube?, ¿o de streams?
- ¿Cuál es el tipo de archivo origen?: ¿mp4?, ¿mp3?, ¿png?, ¿pdf?, ¿csv?, ¿json?
El siguiente paso es determinar la frecuencia y el volumen en el que se moverá la información y preguntarse: ¿se requiere en tiempo real o puede tener una latencia (ej. mes/semana/día/hora)? De lo anterior, podemos deducir si el pipeline será por lotes (batches) o streaming.
Una vez definido lo anterior es necesario establecer la serie de transformaciones que se le aplicarán a los datos conforme al requerimiento solicitado. Este es uno de los puntos más importantes de analizar, ya que de ello dependerá el tipo de procesamiento o enfoque a realizar a la hora de mover los datos:
- ETL (Extract, Transform, Load): es el método tradicional donde los datos son extraídos, transformados y finalmente almacenados en su destino final.
- ELT (Extract, Load, Transform): este método emergente consiste en extraer los datos para enseguida moverlos directamente a su destino final y una vez ahí aplicarle las transformaciones que se requieran.
Dentro de las transformaciones antes mencionadas encontramos agregaciones (sumatorias, totales, promedios, etc.), generación de nuevos datasets a partir de relaciones entre diferentes orígenes de datos (joins), filtrado de información, limpieza de datos, etc.
Como siguiente punto debemos establecer el destino final de los datos y su acceso (permisos):
- ¿Se almacenarán en la nube (datalake)?, ¿con qué formato?, ¿cuáles serán sus particiones?
- ¿Se almacenarán en un datawarehouse o en bases de datos transaccionales?
- ¿Quién o quiénes deben acceder a estos datos?
Una vez concretado todo lo anterior, debemos generar el flujo de tareas y el orden (secuencia) en el que se ejecutarán, así como programar su ejecución, de manera que todo se encuentre automatizado.
Finalmente, se debe contar con validaciones que permitan asegurar el correcto traslado de los datos y su constante monitoreo para una rápida respuesta a fallos.
Tomando en cuenta los puntos anteriores, el diseño de un pipeline de datos nos asegurará una correcta implementación, además de que también evitaremos desperdiciar tiempo durante el proceso de desarrollo del mismo.