Saltar al contenido

Transformaciones Avanzadas en Apache Hop: Normalización de Filas

En este tutorial, exploraremos cómo utilizar la transformación "Normalizador de Filas" de Apache Hop.

Screenshot 2024-03-19 at 21.25.16

La transformación "Normalizador de Filas" es ideal para estandarizar datos de una tabla pivote o desnormalizada, permitiendo ajustes en las relaciones de filas al convertir columnas en filas.

¿Qué encontrarás aquí?

Escenario de caso de uso

Consideremos un escenario donde tenemos películas (film) listadas en una columna, junto con sus respectivos años (year) y los ingresos generados por cada película (film) por trimestre (quarter).

Screenshot 2024-03-20 at 15.06.46 

Observa que cada trimestre (quarter) es una columna.

Screenshot 2024-03-19 at 21.31.03

Puede que necesitemos reestructurar los datos de ingresos basados en trimestres para cada película (film). Necesitamos convertir los datos de este formato:

Screenshot 2024-03-19 at 21.32.13
 

En este formato:

Screenshot 2024-03-19 at 21.33.23
                                                 ...
 

Paso a paso

Para lograr esto, podemos utilizar la transformación "Normalizador de Filas" para normalizar los datos pivote.

Los datos han sido generados utilizando una cuadrícula de datos (data grid).

Screenshot 2024-03-19 at 21.34.53-Photoroom.png-Photoroom

Aunque hemos demostrado esto con un ejemplo simplificado, es importante tener en cuenta que la fuente de datos puede estar en cualquier formato, como Excel, tablas, etc.

Para comenzar, cubriremos los pasos involucrados en este escenario de caso de uso:

Paso 1: Agregar y conectar la transformación "Normalizador de Filas".

Screenshot 2024-03-19 at 21.39.12-Photoroom.png-Photoroom

Paso 2: Configurar la transformación "Normalizador de Filas".

Screenshot 2024-03-19 at 21.52.10

  • Nombre de transformación (Transform name): Define un nombre de transformación (normalize-rows).

  • Campo tipo (Type field): Especifica un nombre para el campo de salida (quarter).

  • Nombre de Campo y Tipo (Fieldname and Type): elecciona los campos deseados de la cuadrícula de datos. Mantenemos los campos ("Fieldname") namely quarter1, quarter2, quarter3 y quarter4 y el Tipo (Type) con el mismo nombre. De esta manera, el campo de salida trimestre tendrá estos tipos como los valores de salida.

  • Nuevo campoNew field: Define un nuevo campo para los ingresos (revenue).


Al previsualizar la transformación normalize-rows, verás los datos transformados, logrando el formato de salida deseado.

Screenshot 2024-03-19 at 21.47.39-Photoroom.png-Photoroom
 
Después de la normalización, puedes exportar el conjunto de datos a diferentes formatos según tus requisitos.
 
¡Pero en nuestro ejemplo simplificado, eso concluye el proceso! Hemos transformado efectivamente los datos en la cuadrícula de datos en un formato normalizado.
 

Screenshot 2024-03-19 at 21.50.12

¿Cómo funciona?

En resumen, así es como lo hicimos:

  1. Creamos un pipeline y mapeamos los datos de entrada utilizando un normalizador.

    Screenshot 2024-04-18 at 09.19.35
  2. El campo "quarter" fue designado como el campo de tipo, creando una nueva columna para los trimestres.

    Screenshot 2024-04-18 at 09.31.28
  3. Bajo "Fieldname" especificamos los nombres de columna fuente que queríamos normalizar, que en este caso eran: quarter1, quarter2, quarter3 y quarter4.

    Screenshot 2024-04-18 at 09.31.58
  4. Para el "Type" (Type), definimos los valores para la nueva columna como cadenas de texto, coincidiendo con los nombres de los trimestres originales: quarter1, quarter2, quarter3 y quarter4. Alternativamente, podríamos haber elegido etiquetas diferentes como Q1, Q2, Q3, Q4, o primero, segundo, tercero, cuarto.

    Screenshot 2024-04-18 at 09.32.05
  5. El "nuevo campo" (new field) representa el valor de los ingresos (revenue), lo que resulta en la creación de una nueva columna de ingresos  (revenue).

    Screenshot 2024-04-18 at 09.32.11

El resultado es la salida normalizada:Screenshot 2024-04-18 at 09.47.41Ahora, en lugar de tener 4 columnas de trimestre (quarter) que contienen los datos de ingresos (revenue), tenemos una nueva columna de trimestre (quarter) y una nueva columna de ingresos (revenue).

💡 Consejo importante: Al combinar varias columnas con diferentes tipos (como Cadena e Entero) en un nuevo campo, no se realiza ninguna conversión automática de tipo. En su lugar, se conserva el tipo inicial. Esta falta de conversión podría causar problemas con las transformaciones de filas de datos posteriores. Se recomienda encarecidamente asegurar la alineación de los tipos de datos para los valores que se fusionan en el mismo campo antes de la normalización.

Resumen

  • Entiende el propósito: La transformación "Normalizador de Filas" en Apache Hop está diseñada para estandarizar datos de tablas pivote o desnormalizadas al convertir columnas en filas.
  • Considera la estructura de tus datos: Antes de usar el "Normalizador de Filas", evalúa si tus datos necesitan reestructurarse, especialmente si involucra estructuras similares a pivotes.
  • Utiliza los campos adecuados: Al configurar la transformación, selecciona los campos apropiados de tu conjunto de datos, asegurándote de incluir aquellos relevantes para el proceso de normalización.
  • Previsualiza antes de finalizar: Siempre previsualiza los resultados de la transformación para asegurarte de que se alineen con tus expectativas y requisitos.
  • Opciones de exportación: Una vez que se completa el proceso de normalización, puedes exportar el conjunto de datos transformado a varios formatos de destino, adaptándote a tus necesidades y preferencias específicas.