Datavin3

Construye y despliega 2: Desarrolla tus primeras canalizaciones en un flujo de trabajo

Escrito por Adalennis Buchillón Soris | 9 de octubre de 2024 8:01:34 Z

¡Hola a todos! ¡Bienvenidos de nuevo a nuestra serie "Construye y despliega"! En esta publicación, vamos a profundizar en Apache Hop construyendo dos canalizaciones esenciales y ejecutándolas en un flujo de trabajo.

Nota: Este artículo es una versión adaptada al español del original publicado en inglés por know.bi, en este caso dirigido a la comunidad de habla hispana. Nuestro objetivo es hacer que los recursos y conocimientos sobre Apache Hop sean más accesibles para los usuarios hispanohablantes, facilitando su implementación y comprensión.

💡 Antes de sumergirnos en este tutorial, asegúrate de haber completado la Parte 1 de nuestra serie "Construye y despliega". En la Parte 1, cubrimos la instalación de Apache Hop, la configuración de tu primer proyecto y la configuración de tu entorno, pasos fundamentales antes de avanzar en la construcción y ejecución de las canalizaciones en esta publicación.

Lo que aprenderás en esta publicación

  • Construir dos canalizaciones de datos en Apache Hop para la limpieza, transformación y agregación de datos.
  • Crear un flujo de trabajo para ejecutar canalizaciones de manera secuencial.
  • Aprender a utilizar varias transformaciones de Hop y gestionar la ejecución del flujo de trabajo.

Limpiaremos y transformaremos un conjunto de datos de vuelos (Flights) en la canalización 1 y luego agregaremos los datos transformados en la canalización 2. Finalmente, lo juntaremos todo en un flujo de trabajo que ejecuta estas canalizaciones en secuencia.

¡Así que, comencemos!

Canalización 1: Limpiar y transformar

Comenzamos con la canalización 1, que llamamos "clean-transform" (limpiar y transformar). Esta canalización se encargará de la limpieza y transformación de nuestros datos de vuelos.

Paso 1: Crea una nueva canalización en la interfaz de Hop y nómbrala "clean-transform".

💡 Recuerda que cada nombre de canalización en tu proyecto debe ser único.

Paso 2: El primer paso en esta canalización es leer nuestros datos de vuelos en bruto. Haremos esto utilizando la transformación de Entrada de Archivo de Texto.

En la configuración de Entrada de Archivo de Texto, especifica la ruta a tu conjunto de datos.

Asegúrate de obtener los campos correctamente según el esquema del conjunto de datos.

Paso 3: A continuación, necesitamos calcular la semana del año a partir de la fecha del vuelo. Para esto, utilizaremos la transformación de Calculadora.

En la transformación de Calculadora, añade un nuevo cálculo para derivar la semana del año. Elige el campo "FlightDate" (la fecha de vuelo) como entrada y selecciona el tipo de cálculo. Guarda este resultado como "flight_year_week" (semana del año).

Paso 4: Ahora, añadamos una transformación de JavaScript para crear dos nuevos campos: "OnTimeDep" (salida a tiempo) y "OnTimeArr" (llegada a tiempo). Estos campos determinarán si un vuelo salió y llegó a tiempo.

En el editor de JavaScript, escribe un script simple que verifique los campos "DepDelay" (atraso en la salida) y "ArrDelay" (atraso en la llegada). Si los valores son mayores que cero, establece "OnTimeDep" (salida a tiempo) y "OnTimeArr" (llegada a tiempo) a 'No'; de lo contrario, establece ambos a 'Yes'.

javascript
var OnTimeDep;
if (DepDelay>0){
OnTimeDep='No';
}else{
OnTimeDep='Yes';
}

var OnTimeArr;
if (DepDelay>0){
OnTimeArr='No';
}else{
OnTimeArr='Yes';
}
 

Paso 5: Finalmente, necesitamos guardar nuestros datos transformados. Utiliza la transformación de Salida de Archivo de Texto para escribir los datos en un nuevo archivo CSV.

Nombra este archivo algo como "transformed-flights" (vuelos transformados), especifica la ruta de salida y la extensión csv.

Asegúrate de obtener los campos correctamente según el esquema del conjunto de datos.

¡Y eso es todo para la canalización 1! Guarda tu canalización y pasemos a la canalización 2.

Canalización 2: Agregar datos

La segunda canalización, llamada "aggregate" (agregar), leerá los datos transformados, añadirá un ID de secuencia y luego agregará los datos para generar información.

Paso 1: Crea una nueva canalización utilizando la opción Nueva en la interfaz de Hop.

💡 Recuerda que cada nombre de canalización en tu proyecto debe ser único.

Nombra esta segunda canalización "aggregate".

Paso 2: Comienza utilizando la transformación de Entrada de Archivo de Texto para leer el archivo "transformed-flights.csv" que creamos en la canalización 1.

En la configuración de Entrada de Archivo de Texto, especifica la ruta a los datos transformados.

Asegúrate de obtener los campos correctamente según el esquema del conjunto de datos.

Paso 3: A continuación, necesitamos añadir un identificador único para cada registro.

Utiliza la transformación de Añadir Secuencia para generar un "id" de secuencia. Esto nos ayudará a identificar de forma única cada registro agregado.

Especifica el nombre de la transformación y el nombre del nuevo campo. La secuencia comienza en el valor 1 por defecto y el incremento también es 1 por defecto.

Paso 4: Ahora, agreguemos los datos. Utiliza la transformación de Agrupación en Memoria para esta tarea.

En la configuración de Agrupación en Memoria, especifica los campos por los que deseas agrupar, como "Operating_Airline" (aerolínea operativa), "OriginStateName" (nombre del estado de origen) y "OriginCityName" (nombre de la ciudad de origen).

Define el nombre del campo agregado, el campo utilizado para agregar y la función de agregación, "Number of Distinct Values (N)" (número de valores distintos) en este caso.

Paso 5: Finalmente, envía los resultados agregados a un archivo CSV utilizando la transformación de Salida de Archivo de Texto.

Nombra este archivo "aggregated-flights.csv", especifica la ruta y la extensión csv.

Asegúrate de obtener los campos correctamente según el esquema del conjunto de datos.

Puedes utilizar la opción "Get Fields" (obtener campos) para recuperar todos los campos y luego eliminar los que no deseas exportar. Guarda la canalización, ¡y has terminado con la canalización 2!

Creando el flujo de trabajo

Ahora que nuestras canalizaciones están listas, vamos a crear un flujo de trabajo para ejecutarlas en secuencia.

Paso 1: En la interfaz de Hop, crea un nuevo flujo de trabajo y nómbralo algo como "flights-processing" (procesamiento de vuelos).

Paso 2: Añade dos tareas de Ejecución de Canalización al flujo de trabajo.

Para la primera tarea, vincúlala a la canalización 1.

Luego, configura la segunda tarea para ejecutar la canalización 2.

Paso 3: Conecta las acciones, asegúrate de que el tipo de salto entre la canalización 1 y la canalización 2 sea condicional, asegurando que la canalización 2 se ejecute solo después de que la canalización 1 se complete con éxito.

Paso 4: Opcionalmente, puedes añadir pasos de notificación o registro para rastrear la ejecución del flujo de trabajo y manejar cualquier error.

Una vez que todo esté configurado, guarda tu flujo de trabajo y ejecútalo.

Observaciones

  • Acceso al conjunto de datos: El conjunto de datos utilizado en este tutorial se puede encontrar en este enlace, así que asegúrate de revisarlo si deseas seguirlo.
  • Configuración del proyecto: Recuerda que el conjunto de datos se almacena en la carpeta establecida como entrada en la variable de entorno INPUT. Asegúrate de que tu entorno esté configurado correctamente para evitar problemas.
  • Nombres de archivos: Cada canalización/flujo de trabajo debe tener un nombre único en tu proyecto. Esto evitará conflictos durante la ejecución.
  • Ejecución del flujo de trabajo: No olvides configurar tu flujo de trabajo para que la canalización 2 se ejecute solo después de que la canalización 1 haya completado con éxito utilizando un salto condicional.
  • Registro y notificaciones: Considera añadir registro y notificaciones a tus canalizaciones/flujo de trabajo para rastrear el proceso de ejecución y manejar cualquier error.

Conclusión

¡Y ahí lo tienes! Hemos construido y ejecutado con éxito dos canalizaciones dentro de un flujo de trabajo utilizando Apache Hop.