Logo Talend

Tutorial Talend Open Studio. # 7 Componentes De Transformación De Datos

Componentes de generación de datos para probar desarrollos.

tRowGenerator: Generar datos automáticamente

Configuración row generator

Para desarrollar los procesos, es muy útil disponer de ciertos datos para hacer pruebas de laboratorio en un entorno controlado, para esa tarea Talend nos ofrece unos componentes para generar datos de manera automática y aleatoria del numero de registros que nos hagan falta, desde nombre de personas, correos electrónicos ciudades, cadenas de textos, números, etc…

También mediante la opción parameters podemos limitar la longitud de los campos generados. Por ejemplo. «Length_>6»

tFixedFlowImput: Generar datos manualmente

Este componente permite generar una tabla de datos en la que podemos introducir datos de manera manual.

Lo primero es  con el botón «Edit Schema» es generar el esquema que necesitemos para nuestra tabla de datos.

Y luego la forma más cómoda de introducir datos es usar la opción «Use Inline table» para ir introduciendo lo datos por columnas.

Entrada manual de datos

Componentes de separación y generación de múltiples flujos de datos

Hasta ahora en publicaciones anteriores, únicamente hemos visto jobs que trabajan con un único flujo de datos. Pero es posible separar un flujo en múltiples datos así como juntar diferentes flujos en uno único. 

Componentes de filtro y separación de flujos

tFilterRow: Filtro de datos

Este componente nos permite filtrar unos datos a partir de una o varias condiciones en las que podemos seleccionar el tipo de condición AND/OR. Este componente nos ofrece dos flujos de salida: 

  • El flujo de salida «Filter», es decir, el flujo que contiene los datos que cumplen la condición.
  • El flujo de salida»Reject», el flujo rechazado que no cumple la condición

El ejemplo de la imagen, se muestra la configuración del filtro del componente y los dos tipos de flujo de salida del componente tFilterRow.

Filter job y configuración

tSchemaComplianceCheck: Comprobación de los registros que cumplen el esquema que queremos utilizar. 

Este componente es el más usado para data quality. Es muy útil porque algunas veces nos encontramos en errores en el proceso debido a que determinados registros no cumplen el  esquema. Con este componente podemos separar los registros que no cumplen el esquema para solucionar la incidencia.

Este componente es de hecho un filtro pero con un criterio especial de filtro que es cumplir el esquema que indicamos.

El componente lo podemos configurar para este fin de dos maneras:

  • Custom defined: Cuando manualmente indicamos las columnas y datatype que queremos analizar.
  • Use another schema for compliance check: En esta opción podemos copiar el esquema actual y hacer los cambios que necesitamos y hacer pasar un check por todo el esquema, pero teniendo en cuenta que hay que seguir el mismo orden.

 

Cumplimiento de esquema

El subjob de la imagen muestra un ejemplo en el que vemos que el componente tiene dos salidas: La salida main con los registros correctos que cumplen el esquema y un flujo de rejects con los registros que no cumplen el esquema.

En el ejemplo creamos manualmente una tabla con una sola columna de tipo string y introducimos los siguientes registros:

«1»,»dos»,»3″,»4″ y le indicamos en la configuración del componente que la columna es de tipo «integer». En el flujo main nos desviará los registros que pude convertir a int, es decir 1,3,4 y en el flujo de rechazo el segundo registro con valor «dos» debido a que es un string que no puede convertir en número entero (Integer).

tReplicate: Replicar el flujo.

Este componente es utilizado cuando por motivo de proceso necesitamos que el flujo se replique, por ejemplo para hacer una misma salida de datos a una tabla de una base de datos y también a un fichero. O por ejemplo si necesitamos dos flujos, uno con todos sus registros para hacer una salida y la suma o valores agregados con la finalidad de realizar comprobaciones, etc…

 

Componentes de Unión de flujos

tUnite: Unir dos flujos

Este componente hace lo contrario al tReplicate, ya que une dos flujos de datos que tengan un mismo esquema, pero con alguna restricción, ya que no podemos unir un flujo que haya sido separado en el mismo subjob.

No combina registros, sino que simplemente junta un flujo de datos debajo del otro, tipo UNION de SQL.

tJoin: Join de flujos.

Lo cierto es que después de la potencia y optimización de proceso y otras capacidades que nos permite el componente tmap, lo cierto es que tJoin queda canivalizado por el tmap y su uso es menor.

Para configurar el componente primero debemos indicar cual es el flujo de principal. (Por ejemplo el que trae el flujo de ventas que trae las claves foráneas de cliente  y de producto) y cual es el flujo de lookup (que puede ser por ejemplo la tabla de clientes y productos cuyas claves primarias se unen a las foráneas del flujo principal).

Luego en la pestaña de configuración del componente  únicamente debemos indicar las claves de unión de los dos flujos, sea única o doble, así como los campos de la tabla de lookup que queremos mantener en el flujo de salida. Hay que tener en cuenta que los campos del flujo main se mantienen todos, dado que no es modificable su incorporación.

tMap: Un comodín que une con join, filtra y genera expresiones

Es una joya de Talend, la verdad es que de manera muy intuitiva conecta cualquier número de flujos de entrada y genera cualquier número de flujos de salida. El tMap, tiene un asistente gráfico que permite una configuración muy sencilla.

Como en el caso anterior del tJoin lo primero de todo es identificar que flujo es el principal, que siempre debemos elegir el flujo que nos trae la tabla de hechos con las medidas principales y las claves foráneas de las dimensiones, el resto de flujos necesariamente son flujos de lookup.

En segundo lugar editamos la configuración del componente y establecemos en los paneles de  la izquierda de imput de datos,  las relaciones entre los flujos. Estas relaciones las establecemos simplemente «drag and drop», es decir arrastrando el campo de la clave foránea de un flujo a la clave primaria del otro flujo.

Con el botón de la llave inglesa de cada flujo imput, podemos configurar el tipo de unión de cada flujo con el flujo main, puede ser de tipo «left outer», o «inner» es decir en «inner» no se incorporan los registros no coincidentes y el el «left outer» se mantienen todos los registros con clave de unión «null».

Después de crear las relaciones, ya podemos generar las tablas de salida de datos, que podemos generar los que necesitemos, creando los mismos con el «+» de la parte superior del panel derecho. Así nos devuelve este componente de 1 a n salidas «output».

Los campos de cada flujo de salida los podemos arrastrar de los flujos de origen, vemos que se nos generan unas líneas de relación entre los campos de los flujos de entrada y salida. Si seleccionamos un flujo, estas relaciones las vemos en amarillo y el campo de la tabla de origen lo vemos de color verde y si no está seleccionado la relación la vemos de color gris. 

Pero eso no es todo también podemos filtrar los datos y esto lo podemos hacer mediante el segundo botón de flecha y +. Una vez le damos al botón se nos abre un espacio para introducir la condición que la podemos escribir de manera asistida abriendo el editor pulsando el botón de la derecha de los tres puntos. Una vez introducida la condición (en el ejemplo filtramos la «zona_1») vemos que se nos establece una relación de color naranja con los campos implicados en la condición.

Configuración básica tmap

pero aquí no se acaba la cosa, no señor… desde el tMap podemos hacer más cosas, como por ejemplo generar nuevos campos con expesiones.

¿Cómo generar campos con expresiones en tMap? Pues lo primero que necesitamos es generar en el esquema de salida nuevos campos mediante la tecla «+» y configurar el tipo de datos que precisamos.

Podemos como ejemplo generar 3 campos nuevos que nos puden ser útiles:

  1. Una columna con un valor fijo constante
  2. Una fórmula que nos calcule el precio medio (Ventas / Unidades)
  3. Una tercera columna de time stamp, que nos marque la fecha y hora de creación del registro
  4. Otra columna  de clave primaria del flujo de salida, es decir una columna con la secuencia numérica que podamos utilizar como clave primaria de una tabla de datos

Una vez creados los 3 nuevos campos en el esquema ya podemos generat  la expresión, que en nuestro caso será con la ayuda del botón de los 3 puntos que nos abre el asistente de expresiones.

La primera columna es muy sencilla de crear pues simplemente debemos indicar el valor de la constante incorporamos en el campo (en el ejemplo una constante de valor int 1).

La segunda si utilizamos el asistente es muy sencillo, arrastramos o doble clic en los cuadros de los campos que necesitamos en nuestra expresión al cuadro de expresiones utilizando los botones de las operaciones que necesitemos:

Arrastramos el campo row1.ventas, pulsamos el botón del operador división / y arrastramos el campo row1.unidades, quedando la expresión como en la imagen siguiente:

Expresión fórmula tMap

Para la tercera columna de crear una columna que nos indique el sello de tiempo utilizaremos las funciones que nos ofrece el asistente. Buscamos en la categoría de funciones TalendDate y elegimos la función getDate. Al seleccionar nos aparece en la pantalla de expresión la función con un patrón de fecha-hora.

De igual manera actuamos para obtener la columna con la secuencia numérica. Seleccionamos la categoría «Numeric» y seleccionamos la función «Sequence». «S1» es el contador de la numeración, si queremos tener más de un contador que no siga la misma numeración tenemos que crear otro contador, por ejemplo «S2»

Columna Time Stamp

Componentes para «data quality».

Este grupo de componentes, se utilizan para transformar los datos para cumplir los requisitos de un esquema. Estos componentes están muy relacionados con el componente que vimos en el grupo de fitros que era el tSchemaComplianceCheck que nos separaba en un flujo diferente al principal aquellos registros que incumplían los requisitos del esquema.

En el ejemplo que se utilizó, separaba el registro «dos» debido que es un dato de cadena de texto » string» que no cumplía el  ser un número entero «integer».

Lo que podemos hacer es cambiar el registro con «dos» por otro con «2». Esto lo podemos hacer con el componente tReplace.

El componente tReplace permite buscar una cadena de texto y substituirla por otra. Le podemos indicar si substituye toda la palabra si es «case sensitive» es decir si discrimina o no Mayúscula/minúscula. También tenemos la opción en Advanced mode en utilizar expresiones regulares.

En el ejemplo le indicamos que busque «dos» y lo substituya por «2», con lo que una vez sustituido, tenemos ya todos los datos numéricos que podemos convertir de string a int. Esta conversión la podemos hacer con el componente  tConvertType.

El componente tConvertType nos permite establecer un esquema y mediante la opción «Autocast» convertir los tipos de origen al «datatype» establecido en el esquema. También si no queremos convertir todo el esquema, podemos hacerlo manualmente de algunas columnas mediante la opción «Manual Cast».

 

job condición rechazo

El ejemplo muestra como el componente de tSchemaComplianceCheck rechaza los registros que no cumplen. El componente tReplace substituye los valores para que cumpla («dos» por «2». Por último el componente tConvertType, cambia el datatype (En el ejemplo de «string» a «integer».)

El componente tFilterColumns, nos ayuda a eliminar las columnas del esquema que no sean necesarias, simplemente modificando el esquema.

Otros componentes de transformación

Componente tAggregate: Nos permite agregar registros a partir de uno o varios campos y unas funciones de agregación de forma idéntica al «group by» SQL. En la parte superior indicamos los campos que queremos agregar y en la inferior los campos con las funciones de agregación.

Deja un comentario

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

Información básica sobre protección de datos Ver más

  • Responsable Buconda,S.L..
  • Finalidad  Moderar los comentarios. Responder las consultas.
  • Legitimación Tu consentimiento.
  • Destinatarios  webempresa.
  • Derechos Acceder, rectificar y suprimir los datos.

Esta web utiliza las cookies de wordpress . Puedes ver aquí la política de cookies. Si continuas navegando estás aceptando.    Más información
Privacidad