Logo Talend

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

En Talend se pueden utilizar dos tipos de variables:

Variables de contexto: Són variables que las utilizamos como parámetros que nos permiten diseñar varios escenarios o contexto de ejecución de nuestro job.

Variables globales: Son variables con una finalidad de más de ejecución interna del proceso, que las podemos generar y utilizar dentro de un mismo contexto:

Variables de contexto

¿Qué es un contexto en Talend?
Podemos entender un contexto como un conjunto de valores que nos definen una ejecución del subjob.

Quizás el caso más utilizado de contexto sea el de la conexión a una base de datos donde al mismo job lo podemos ejecutar en un entorno de desarrollo y de producción. Pero podemos utilizar 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?

 Como el resto de elementos que hemos visto, podemos crear contextos en el repositorio para ser reutilizados, pero también los podemos generar desde el propio subjob.

 

¿Como generar contextos en el repositorio?

Pues no demasiado diferente a crear el resto de elementos, 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 tenemos creado 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 definidas en el repositorio són comunes para todos los contextos, aunque no es necesario que en todos los contextos tengan valor todas las 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 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 incorporado y el job se ejecutará con los valores de las  variables correspondientes a cada contexto.

Contexto en un job

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

Pues podemos traspasar el valor de las variables a cualquier campo de configuración de los componentes de una manera muy sencilla pulsando crtl+space y se despliegan todas las variables que hay en el sistema. Como la lista es larga si escribimos «context.» y luego crt+ space solo nos mostrará las variables de contexto como muestra la imagen siguiente de la izquierda.

Pero también en un campo de texto que no corresponda a un campo de configuración, también podemos recuperar la variable 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 vemos como se incorpora la variable en la clausula WHERE de la query de un componente de imput de Base de Dato.

La variable quedará incorporada al campo y recuperará cuando se ejecute el job 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 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 en vez de enviar el caudal de datos a «chorro» lo frena y lo entrega registro a registro. Esto permite generar 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, punto y nombre del campo. 

Para poder explicar mejor el funcionamientos podemos preparar un ejemplo. En el ejemplo a partir de una tabla en donde tenemos el nombre y el correo electrónico, queremos enviar un correo electrónico a cada uno de los integrantes de la tabla de correo electrónico.

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 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, en nuestro caso tFlowToIterate, por ejemplo para filtrar variables empezamos a escribir tflow y CRTL+SPACE, y se nos muestra la lista de varibles filtradas, por lo que elegimos la variable  tFlowToIterate.mail que contiene el nombre del componente punto 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.

¿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.

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