Explotemos la Tecnología

Talend – Como actualizar una tabla (update)

1. Presentación

El este tutorial veremos como actualizar una tabla vía talend. Nuestro escenario será el siguiente, queremos actualizar la tabla clientes los campos latitud y longitud, para posteriormente poder ubicarlos en el mapa. Estos valores los obtendremos de un fichero de texto delimitado.. La estructura de la tabla y del fichero son:

  • Tabla Clientes(IdCliente, Nombre, esp_comunidad, esp_provincia, esp_municipio, latitud, longitud)
  • Fichero de texto delimitado (comunidad, provincia, municipio, latitud, longitud)

Para hacer el update en la tabla clientes se tiene que cumplir (respecto al fichero de texto) que, esp_comunidad = comunidad, esp_provincia = provincia, esp_municipio = municipio.

2. Creación del Job

Para realizar esta tarea en Talend, necesitaremos crear primero la metadata en el repositorio:

Conexión a la Base de Datos: Guarda que tipo de base de datos y sus parámetros de conexión, además de con que objetos de la Bd podremos trabajar. Para crear la conexión vamos a Metadata – DbConnections  y sobre DbConnections con el botón derecho escogemos Create Connections y nos aparecerá un asistente, donde nos guiará en todo el proceso.  Una vez creada la conexión, tendremos un nuevo elemento en nuestro repositorio. Nos colocamos encima de este nuevo elemento y con el botón derecho indicamos Retrieve Schema, para poder recuperar todos los objetos (tablas) con las que deseamos trabajar.

Asistente conexión Base de Datos

Generic Schema: Este tipo de elemento, podríamos definirlo como plantilla de esquemas, que podrá ser usado por cualquier elemento que use esquemas. En nuestro ejemplo podríamos haber usado tipo FileDelimited pero queremos mostrar la funcionalidad del esquema genérico. Para su creación, nos ponemos encima Generic Schema y pulsamos el botón derecho Create Generic Schema. Nos aparecerá un asistente donde indicaremos que campos va a tener nuestro esquema.

Asistente Generic Schema

El siguiente paso es crear un Job y poner en él, los componentes necesarios. Para crear el Job, nos ponemos encima de Job Design y pulsando botón derecho le damos a Create Job. Arrastraremos al Job los siguientes componentes, configurándolos de la siguiente forma:

tFileInputDelimited: Indicaremos el fichero de entrada y cual es su separador de campo. En este componente le asociaremos el esquema genérico que hemos creado anteriormente.

Componente tFileInputDelimited

tMap:  Nos servirá para mapear los campos de entrada con una estructura de salida que va hacia a un componente. En nuestro ejemplo, el componente que recibe esta salida será el componente tLogRow.

tLogRow: (opcional) Nos sirve solo para ver un log de los registros después de un procesamiento.

Componente tLogRow

tMSSQLRow: Este componente sirve para ejecutar sentencias SQL. En este ejemplo la consulta a ejecutar será un update, recibiendo como parámetros los valores de un flujo de salida de otro componente.

Una vez tenemos en el Job estos componentes, tenemos que unirlos tal y como se ve en la imagen:

Screenshot Job

Para unir cada uno de los componentes, nos ponemos encima y lo arrastramos en el siguiente orden:

  • tFileInputDelimited hacia tMap.
  • tMap a tLogRow, nos pedirá un nombre, a la salida podemos nombrarla por ejemplo outUpdate
  • tLogRow a tMSSqlRow

Una vez tenemos los componentes unidos, configuramos los componentes que nos quedan para configurar (tMap y tMSSQLRow).

tMap,  seleccionamos en la salida el esquema genérico y mapeamos la entrada con la salida, tal y como podemos ver en la imagen.

Componente tMap

tMSSQLRow: Indicamos los parámetros de conexión a la base de datos y la tabla con la que trabajaremos. Para esto lo hacemos mediante Property Type: Repository y seleccionar la conexión que hemos creado anteriormente. Como query usaremos la siguiente:

 "update dbo.clientes " +
"set dbo.clientes.latitude = " + row10.latitud + ", dbo.clientes.longitud = " + row10.longitud +
"  where dbo.clientes.esp_municipio = '" + row10.municipio +
"' and dbo.clientes.esp_provincia = '" + row10.provincia +
"' and dbo.clientes.esp_comunidad = '" + row10.comunidad + "'"

Donde el parámetro row10, hace referencia al flujo que entra a tMSQLRow, si este flujo tiene otro nombre, pues en la consulta Sql tendremos que modificar este parámetro con el nombre que tenga este flujo.el nombre de la salida que va de tLogRow a tMSSQLRow y ya tenemos terminado nuestro job.

Componente tMsSqlRow

Con todo esto, ya tenemos el proceso de actualización de una tabla, como hemos visto no es un proceso complejo de construir.

Etiquetas: , ,