En el episodio de hoy de Un podcast ninja sobre Big Data hablamos de ingeniería de datos. Tratamos el ciclo de vida del dato desde las fuentes de datos al momento en el que están disponibles para ser usados por especialistas de Machine Learning, analistas o científicos de datos.
En el episodio 14 hablamos de la importancia de recolectar datos que nos fueran de utilidad para resolver el problema que tuviéramos delante pero sin darle mucha importancia a cómo los obteníamos o a cómo los íbamos a almacenar.
En el caso en el que estemos jugando con un dataset que pueda ser manejado en un solo ordenador podemos entrenar un modelo de Machine Learning sin preocuparnos en exceso de cómo lo almacenamos.
Unas tablas de excel convertidas a fichero csv.
Unas carpetas con imágenes.
Directamente al ordenador y ya podríamos limpiar los datos y transformarlos según necesitemos.
Pero en el mundo real vamos a necesitar a un ingeniero de datos.
El ingeniero de datos es quién va a ponerse manos a la obra una vez se ha analizado bien el problema y sabemos qué datos necesitamos. También es quien se va a encargar de los pasos necesarios hasta que podamos empezar con el entrenamiento del modelo.
Básicamente la idea detrás de lo que hace un ingeniero de datos no dista mucho de los que hablábamos sobre conseguir datos, limpiarlos y transformarlos. Sin embargo, cuando estamos en el mundo real y queremos adentrarnos en Big Data hay que tener en cuenta algunas cosillas adicionales.
La ingeniería de datos se encarga de gestionar las fases por las que pasa un dato desde que lo capturamos hasta que está disponible para ser analizado por los analistas de datos o a formar parte de un dataset para entrenar a un modelo de Machine Learning.
Y ya que se dice por ahí que los datos son como el nuevo petróleo vamos a repasar el proceso haciendo una analogía con la refinación del crudo, desde que se extrae hasta que llega a nuestras estaciones de servicio de confianza.
Lo primero, igual que con el petróleo, es extraer los datos.
Y antes de extraerlo, igual que con el petróleo, hay que saber dónde están nuestras fuentes de datos.
Pueden ser datos generados por aplicaciones como los datos de los usuario de esa aplicación o los datos de los propios eventos generados por la app como logs, por ejemplo.
O podría tratarse de datos en tiempo real como los que podrían generar pequeños sensores de temperatura, humedad o lo que fuera… ya hablábamos de este caso en el episodio de aplicaciones de Big Data en agricultura o datos que metemos en el sistema en bloque como ficheros, imágenes, datos exportados de una base de datos…
Una vez tenemos claras las fuentes de datos con las que vamos a trabajar podemos proceder a extraerlos y siguiendo con la analogía de la planta de refinación de petróleo entran en una canalización.
Literalmente.
Los procesos que siguen los datos desde que se extraen en crudo hasta que se utilizan por analistas, especialistas de machine learning y demás gente que se dedica a obtener valor de los datos se llaman canalizaciones.
Y principalmente tenemos dos tipos de canalizaciones.
Ambas empiezan con una fase de extracción de datos.
Aquí es clave analizar cómo y con qué frecuencia se están generando los datos.
Igual se están generando continuamente como el caso de los sensores de los que hablábamos antes o tal vez son ficheros que nos pasan una vez al día o una vez al mes o con la frecuencia que sea.
Es bastante posible incluso que tengamos distintos tipos de fuentes de datos que tengamos que combinar.
Y después dependiendo de las necesidades del negocio tal vez necesitemos procesar estos datos a través de las canalizaciones en tiempo real. En estos casos de uso queremos que los datos estén disponibles cuanto antes. Por ejemplo, en el análisis del mercado de valores o en sistemas de recomendación.
También podría darse el caso en el que se procesan los datos puntualmente. Por ejemplo, en el caso en el que se procesaran todas las noches cuando los sistemas tienen menos carga porque no tenemos tanta prisa para pasarle un informe de análisis de ventas a la persona responsable del departamento.
Con todo esto en mente, volvemos al diseño de canalizaciones.
Las canalizaciones ETL se utilizan cuando las transformaciones de los datos son necesarias.
Recordad cuando hablábamos de transformaciones de datos en episodios anteriores y hacíamos referencia a transformaciones necesarias como las que tienen que ver con compatibilidades de datos.
Entre las transformaciones a las que sometemos los datos, tendríamos
En todas estas transformaciones es importante tener siempre en mente la lógica de negocio para ver que tiene sentido hacer y que no.
Una vez que los datos se han extraído de las diversas fuentes que tengamos y se han hecho todas las transformaciones que hemos considerado oportunas, se van cargando en un almacén de datos o data warehouse y ya desde ahí los especialistas de machine learning pueden utilizarlos para entrenar sus modelos o los analistas pueden usarlos para hacer sus análisis de cómo van las cosas.
En estos almacenes o datawarehouse los datos están consolidados y listos para consultarse. Como digo puede ser utilizado por especialistas de Machine Learning, por equipos de inteligencia de negocio y analistas o incluso por otros ingenieros de datos que vayan a realizar más transformaciones necesarias para otros casos de uso.
Y en las canalizaciones ELT tenemos la extracción de los datos y la posterior carga tal cual en el sistema de almacenamiento que tengamos.
En este caso se trata de un lago de datos o data lake. Desde aquí se procedería a la transformación de los datos.
En el datalake guardamos los datos en crudo por si vamos a necesitar después tal cual los hemos extraído por temas de auditoría, por ejemplo, o si aún no sabemos que tipos de transformaciones nos van a hacer falta.
A diferencia de un datawarehouse dónde los datos ya estarían preparaditos y limpitos, listos para usarse.
Volviendo a la analogía con la refinería de petróleo…
Un data lake sería como el tanque de almacenamiento de crudo, las transformaciones de los datos serían en nuestra analogía los procesos de refinación del petróleo crudo como la destilación al vacío del residuo o la eliminación del azufre o la etapa en la que se añaden aditivos para incrementar el octanaje.
Los datawarehouse o almacenes de datos serían donde se guardan los datos ya preparados para usar y en nuestra analogía se correesponden con los tanques de gasolina, los de diésel, el gas… e incluso podrían podrían pasarse por otras canalizaciones en las que después serían sometidos a diferentes procesos para transformarlos en otros derivados del petróleo que no sean combustibles sino plásticos o asfaltos.
Pues igual con los datos, pueden pasar por otras canalizaciones con otras transformaciones para ser almacenados en otros data warehouses para otros casos de uso… un modelo de Machine Learning que tenga un objetivo distinto o lo que sea…
Vamos que es lo más normal del mundo combinar canalizaciones de datos ELT y ETL según convenga para el caso de uso.
Y una vez los datos se han cargado en los data warehouses correspondientes pues ya los ingenieros de datos le pasarían el testigo a los especialistas de Machine Learning o a los analistas.
Espero que os guste el episodio
Si es así, no olvidéis dejar un «Me gusta» y algún comentario al episodio en Ivoox o una valoración de 5 estrellas del podcast en Apple podcasts, en Spotify, en Google podcasts o donde quiera que escuchéis el podcast.
Recordad que si tenéis cualquier duda o pregunta podéis contactar conmigo a través del formulario de contacto o podemos seguir la conversación en Twitter.
Muchas gracias por estar ahí y os espero en el próximo episodio de Un Podcast Ninja sobre Big Data.