Logo Talend

Tutorial Talend Open Studio. # 6 Variables globales y de Contexto.

En Talend encontramos dos tipos de variables: Variables de contexto y Variables de tipo global.

Variables de contexto: Són variables que las utilizamos como parámetros predefinidos que nos permiten diseñar varios escenarios. Estos distintos escenarios en Talend se denominan contextos. Los contextos son ciertamente muy útiles, ya que nos permiten ejecutar un mismo job con diferentes parámetros. 

Estas variables de contexto que nos permiten ejecutar un mismo job con diferentes parámetros preestablecidos , las podemos guardar en el repositorio para ser reutilizadas en  diferentes jobs.

Variables globales: A diferencia de las anteriores, estas variables no las predefinimos como parámetros fijos, sino se generan y utilizan  dentro del proceso de un job.

Variables de contexto

¿Qué es un contexto en Talend?
Podemos entender un contexto como un conjunto de parámetros que nos definen un escenario de ejecución del subjob.

Quizás el caso más utilizado de contexto sea el de la conexión a una base de datos. Podemos utilizar distintos contextos  dentro del mismo job, por ejemplo para ejecutar el proceso en unos casos en entorno de desarrollo y en otros de producción. Simplemente cambiando de contexto muy útil. Pero podemos utilizar contextos para muchas otras cosas, como por ejemplo que se ejecute el job  para un determinado año o con un determinado filtro etc..

¿Cómo generamos un contexto?

 La fórmula no difiere en absoluto a la de creación de otros elementos en el repositorio de Talend.  Un contexto en el repositorio nos permite disponer de un conjunto de parámetros que pueden  ser reutilizados. También  podemos generar contextos desde el propio componente del job.

 

¿Como generar contextos en el repositorio?

Pues ya casi lo hemos visto en tutoriales anteriores, pus no difiere demasiado de la creación de los otros elementos del repositorio, es decir: Botón derecho en el nodo de «Contexts» y luego «Create Context Group». Como en cualquier otro elemento del repositorio, le damos nombre, propósito, descripción, versión y status y se nos abre una tabla en la que podemos añadir dos tipos de datos:

Contextos: Son los escenarios  globales que definimos. Por defecto existe un contexto llamado «Default» que lo podemos usar junto a tantos otros que podemos ir creando.

Variables de contextos: En cada uno de los contextos que disponemos podemos dar distintos valores a cada una de las variables, las cuales, una vez definidas en el repositorio, són comunes para todos los contextos. 

No es necesario que en todos los contextos tengan valor todas las mismas variables.

Para crear un nuevo contexto , clic en el signo + del vértice superior derecho que la tabla. Tal como muestra la imagen anterior se nos abre una ventana, clic en  «New» damos un nombre al contexto.

Una vez creado el contexto tenemos una tabla que nos permite introducir distintos valores de las variables en la columna Default como en la que hemos llamado New_context.

Para crear nuevas variables, clic en el signo + que encontramos en el vértice inferior izquierda de la tabla. Si queremos eliminar alguna variable lo podemos hacer con el aspa roja.

¿Cómo incorporar contextos en un job?

Tenemos dos opciones. La primera opción es a partir del botón de contexto de la parte inferior izquierda del panel. En este caso podemos seleccionar las variables y contextos que tengamos guardados en el repositorio de contextos.

La segunda opción es entrar los contextos y las variables manualmente con los botones + de manera idéntica al proceso explicado en la creación de contextos del repositorio.

En el desplegable «Default context environtment» podemos seleccionar uno de los contextos que hemos creado, así el job se ejecutará con los valores de las  variables correspondientes al contexto que hayamos seleccionado.

Contexto en un job

¿Cómo incorporar las variables de contexto para que tengan efecto?

Podemos incorporar el valor de las variables a cualquier campo de configuración de los componentes de una manera muy sencilla. Pulsando crtl+space se despliegan todas las variables que hay en el sistema. Como la lista es larga, vamos más directos si escribimos «context.» y luego crt+ space. Así solo nos mostrará las variables de contexto como muestra la imagen siguiente de la izquierda.

Por otra parte también podemos recuperar la variable de contexto dentro de una query o en el texto de un correo electrónico mediante el mismo procedimiento pero encerrando la variable entre «+..+»  En la imagen de la derecha se muestra como ejemplo, como se incorpora la variable de contexto en la clausula WHERE de la query de un componente de imput de Base de Datos.

La variable quedará incorporada al campo y se recuperará cuando se ejecute el job, según sea el valor que le corresponda a ese contexto. 

variable contexto
Ejemplo de variable de contexto en query

Variables globales

A diferencia de las variables de contexto que funcionan como parámetros pre-establecidos, las variables globales se generan y utilizan de forma dinámica dentro de un proceso de un job.

¿Cómo podemos obtener variables globales?

Para generar las variables podemos utilizar dos componentes totalmente diferentes, pero con resultados similares:

1. Mediante el componente tFlowToIterate

2. Mediante el componente tSetGlobalVariables

¿Cómo Funciona tFlowToIterate?

Este componente cambia el tipo de flujo de tipo «main» a tipo «iterate». Es decir,nos cambia el tipo de flujo de manera que en vez de enviar el caudal de datos a «chorro» lo frena y lo entrega registro a registro. Esto permite a partir de ese momento recuperar el dato de cada uno de los registros en variables. Las variables generadas así, estarán identificadas por el nombre del componente, seguido de un punto y luego el nombre del campo. 

Para poder explicar mejor el funcionamientos hemos preparado un ejemplo:  

A partir de una tabla en donde tenemos registros con el nombre y el correo electrónico por ejemplo de clientes, queremos enviar un correo electrónico a cada uno de los clientes de la tabla.

Pues tal como muestra la imagen siguiente, a partir de un imput de datos, el componente tFlowToIterate nos cambia el flujo de datos a iterate, por lo que podemos recuperar las variables en el componente de enviar correos electrónicos de talend que es  tSendMail.

En la configuración del componente de envio de correo, en el campo «To» empezamos  a escribir el nombre del componente que genera la variable mediante el flujo iterate. Como hemos visto el nombre del componente es  tFlowToIterate, por ejemplo para filtrar variables empezamos a escribir tflow y CRTL+SPACE, y se nos muestra la lista de varibles filtradas que dependen de ese componente, así encontramos facilmente la variable  tFlowToIterate.mail que contiene tras el nombre del componente y un punto, el nombre del campo de la tabla a incorporar, como muestra la imagen siguiente:

Ejemplo de selección variables

Una vez seleccionada la variable veremos que en el campo no nos refleja el nombre de la variable sino de la siguiente expresión java:

((String)globalMap.get(«row1.mail»))

Que recupera el valor de la variable del campo mail que circula por el flujo row1 del job.

¿Cómo funciona tSetGlobalVariables?

Pues de forma similar pero incluyendo manualmente las claves de cada campo de la siguiente manera:

Global variables subjob

En el campo variables hacemos clic en el + y vamos añadiendo los nombres de las variables que en este caso son Key_name y key_mail y como valor el nombre del flujo que en este caso es row1, un punto y el nombre del campo, es decir:

row1.name y row1.mail.

El proceso es un poco más manual. El resultado es que cargamos de datos las variables que hemos llamado: Key_name y Key_mail

Linkedin

Antoni Lisbona: Director de BuConDa 

Volver índice contenidos tutorial

Siguiente tema: #7 Componentes

 Ante cualquier necesidad de soporte o formación adicional proyectos, contactar con nosotros o comprar un paquete de soporte o formación en nuestra tienda on-line.

https://buconda.com

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.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a webempresa que actúa como encargado de tratamiento.
  • 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