Cómo transformar una compañía (IV): Desarrollar una metodología de ingesta de datos

AI of Things    30 junio, 2020

En la entrada anterior profundizamos en la estructura de la arquitectura de referencia y qué aspectos técnicos se deben tener en cuenta en su definición. Siguiendo con esta serie de artículos, vamos a hablar sobre las metodologías de ingesta de datos.

Los datos de una empresa son la pieza clave para el éxito futuro de una compañía. Como sabemos,  estos pueden servir para predecir las ventas futuras o analizar las ventas pasadas, construir recomendadores de productos o para captación de nuevos clientes, entre otras muchas. Toda empresa debería de contar con una robusta planificación para sacarle valor a todos sus datos.

Procesos ETL

Para que una empresa pueda basarse en sus datos para la toma de decisiones, es importante tener los datos disponibles cuando son requeridos. Para tener buena calidad de datos y una buena base para poder explotarlos, hay que tener procesos que extraigan los datos de una o varias fuentes, los transformen y los carguen en el almacenamiento adecuado. De esto se encargan los procesos ETL (Extract, Transform, Load).

En el pasado muchos de estos procesos se hacían manualmente.  Sin embargo, en estos últimos años han surgido herramientas que ayudan a la automatización de estas tareas y a realizarlas de una manera más rápida y sencilla. Las principales compañías de servicios cloud disponen de estas herramientas:

  • Amazon Glue (Amazon Web Services)
  • Azure DataBricks (Microsoft Azure)
  • Cloud Dataflow (Google Cloud Platform).

Además, existen herramientas open source para realizar ETLs como Apache Flume, Apache NiFi y Apache Kafka entre otras.

Pero esto no es todo, ya que para mantener un buen proceso ETL se debe contar con la infraestructura adecuada y necesaria en la empresa. Debido a la complejidad que conlleva la completa construcción de estos procesos, cada vez más empresas requieren la presencia de los ingenieros de datos (data engineers).

¿Qué es un Data Engineer?

Muchas personas solo conocen el trabajo del científico de datos (data scientist) y el trabajo de un data engineer resulta un tanto desconocido. Pero, gracias a él, las empresas pueden tener estrategias data-driven, descubrir fallos en sus suposiciones y basar la estrategia en sus propios datos.

¿Y cuál es la tarea específica de un data engineer en este ámbito?

Crear, automatizar y poner en producción la ingesta de datos, por medio de procesos ETL, donde se mueven datos de una o más fuentes de entrada a una de destino, para almacenarlos. Este proceso incluye también la transformación de los datos en el formato específico que se necesite antes de ser cargados. Estas transformaciones pueden ser múltiples y variadas:

  • unificar varias fuentes de datos en una sola
  • generar nuevos campos, calculados a partir de los campos originales
  • codificar valores, facilitando los cruces de información entre diferentes fuentes
  • transformar fechas
  • anonimizar datos, muy importante para cumplir con las regulaciones de protección de datos

El almacenamiento se puede realizar sobre bases de datos SQL (Structured Query Language) o NoSQL (not only SQL). Cuál de ellos elegir, dependerá de las necesidades concretas de cada compañía.

SQL vs NoSQL

Pero, ¿qué queremos decir cuando hablamos de SQL o NoSQL?

Una base de datos SQL, o base de datos relacional, es un conjunto de tablas que almacena datos estructurados. Los datos estructurados son presentados como tablas con filas y columnas donde están perfectamente definidas la longitud, el tamaño y el formato de los datos. Estos sistemas son los más extendidos en las empresas y llevan muchos años de madurez, lo que hace que encontrar profesionales expertos sea relativamente fácil.

Por el contrario, el término base de datos NoSQL o no relacional hace referencia a bases de datos en las cuales los datos que se almacenan son semiestructurados. Los datos semiestructurados son aquellos que siguen una estructura pero no tan definida como la de las bases de datos relacionales. Algunos ejemplos son los formatos XML (Extensible Markup Language) y JSON (JavaScript Object Notation). Estos sistemas son muy útiles en problemas Big Data porque pueden manejar grandes cantidades de información, pero llevan relativamente poco tiempo en el mercado y es por ello por lo que la búsqueda de profesionales expertos en este campo es más difícil y costosa.

ETL vs ELT

Además, los procesos ETLs son los encargados del control de calidad de los datos y de rechazar la ingesta si no se cumplen los requisitos de calidad. A menudo, los datos rechazados son cargados en una zona de almacenamiento diferente para su posterior diagnóstico y reintento de carga.

Las ingestas en estos procesos se pueden realizar de dos formas: batch y streaming.

  • batch: conocido como procesamiento por lotes (procesamiento batch), ya que divide los datos en lotes y los procesa por separado. Es habitual que este tipo de ingestas se realicen periódicamente una o varias veces al día o a la semana. Este tipo de procesamiento puede ser útil cuando una empresa quiere analizar las ventas en el último mes o año, puesto que no necesita la información al instante de su generación
  • streaming: conocido como procesamiento en tiempo real (procesamiento streaming). Esta técnica procesa los datos al momento de ser generados. La latencia (tiempo que tarda en transmitir un paquete de datos) es de unos segundos o incluso milisegundos. Este tipo de procesamiento es muy útil para empresas que deben de procesar datos al instante para tomar una acción inmediata frente al usuario. Algunos ejemplos son Netflix o Uber, así como la misma Google

Hemos hablado de los procesos ETL, pero existe otro paradigma más reciente denominado ELT (Extract, Load, Transform). En un proceso ELT no hay ningún requisito de transformación de los datos antes de cargarlos: los datos se ingestan en un data lake sin ninguna transformación y, una vez que los datos están cargados, se transforman solamente aquellos que se van a necesitar para un determinado análisis.

¿En qué se diferencian?

Estos procesos tienen varias diferencias con respecto a ETL, las principales son:

  • En ELT tenemos más flexibilidad a la hora de almacenar datos nuevos no estructurados, ya que son insertados sin pasar el proceso de modificación
  • Los procesos ETL ayudan a tratar con datos sensibles, puesto que podemos anonimizar estos datos antes de cargarlos, al contrario que en ELT
  • En un proceso ETL los datos son cargados en una base de datos o en un Data Warehouse y en un proceso ELT son cargados en un data lake
  • Los costes de la construcción de un proceso ETL son mayores que los de un proceso ELT

Conclusión

Como hemos visto, existen varias formas de que una compañía tenga sus datos preparados para extraer información. La elección de usar una base de datos SQL o NoSQL en un proceso ETL, o de construir procesos ELT en lugar de ETL dependerá de las propias necesidades de la empresa, del consumidor y del problema en particular.

Escrito por Ramón Casado.

Todos los post de esta serie:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *