Explotemos la Tecnología

Primeros pasos con Talend

1. Introducción

Talend, es una ETL de código libre. Para los que no sepáis que es una ETL, es una herramienta que Extrae Transforma y Carga los datos (Extract-Transform-Load). Mediante herramientas de este tipo, podemos hacer transformaciones en los datos, fusionar campos, realizar cálculos matemáticos sobre campos, etc. Y todo esto, antes de cargarlos en la base de datos, facilitándonos la operación con ellos.

En esta introducción a Talend, pretendemos mostrar lo fácil que es trabajar con ella. Lo que deseamos hacer es cambiar el separador de campo por otro carácter. Vamos a partir de un fichero con los siguientes registros:

0|ALGERIA|0| haggle. carefully final deposits detect slyly agai|
1|ARGENTINA|1|al foxes promise slyly according to the regular accounts.|
2|BRAZIL|1|y alongside of the pending deposits. carefully special about the ironic forges.|
3|CANADA|1|eas hang ironic, silent packages. fluffily bold|
4|EGYPT|4|y above the carefully unusual theodolites.|

Cada campo, está separado mediante el carácter  ‘|’. Por lo que tenemos 5 campos (el último no contiene nada). Lo transformaremos de forma que cada campo este separado por el carácter ‘\t’ y además no tengamos este ultimo campo sin contenido.

2. Creación de la metadata

Vamos a empezar, con esta pequeña introducción a Talend, creando un nuevo  proyecto e indicamos  su nombre.

Desplegamos la opción Metadata y con el botón derecho pulsamos sobre “File Delimited” para que nos deje crear la metada (como está estructura el fichero delimitado). Nos aparecerá un asistente que consta de 4 pasos:

  1. Nombre del File Delimited que vamos a crear.
  2. Seleccionamos el fichero que deseamos tratar, y si está en formato Windows o Linux.
  3. Indicamos separador de campo usa el fichero, aparte podemos indicar el separador de línea, si el fichero tiene cabecera o si queremos sólo seleccionar n filas del fichero para trabajar. En el ejemplo, no tenemos cabecera y como carácter de separación usamos ‘|’. Estos son los parámetros que le tenemos que indicar al asistente. Pulsamos sobre “Refresh Preview” . Veremos una muestra del fichero en  diferentes columnas, una por cada campo que hay.
  4. En la última parte del asistente, podemos darles nombres a cada una de las columnas e indicar de que tipo de datos se trata. Igualmente si lo deseáramos podríamos desechar alguna de las columnas del fichero.

Con la estructura del fichero ya creada, la copiaremos como genérica, ya que esta es la que usaremos para el fichero de salida.  Desplegaremos la estructura del fichero de entrada, nos ponemos encima y pulsamos “copy to generic schema“, tal y como se ve en la imagen.

Con la metadata genérica creada, la editamos para eliminar el último campo (en el fichero de entrada, este campo no contenía nada). Desplegamos el nuevo esquema genérico creado y con el botón derecho hacemos click en “Edit Generic Schema”. Nos aparecerá un asistente muy parecido al anterior, vamos al paso 2 y nos posicionamos sobre la columna que deseamos borrar, en este caso la última y pulsamos el icono con la X roja.

3 . Creación del Job

Con las metadatas de entrada y salida definidas, pasamos a crear un job, podríamos definirlo como un proceso dentro de un proyecto de ETL. Para poder crear el Job, desde el repositorio pulsamos encima de “Job Design” con el botón derecho y vamos a la opción de crear nuevo Job. Le damos un nombre, que sea lo suficientemente descriptivo de su función.

Al crear el Job, nos aparece una parte de la pantalla en blanco, aquí es donde iremos arrastrando todos los componentes que vayamos a utilizar en este Job.

De nuestro repositorio, arrastramos la estructura que hemos creado para el fichero (NO el genérico), al soltarlo encima de nuestra pantalla de trabajo, nos aparecerá una ventana que nos pregunta que tipo de componente deseamos crear, le vamos a indicar “tFileInput Delimited“.

El siguiente paso, es añadir el componente para el fichero de salida, este lo arrastraremos de la lista de componentes de la derecha – sección “File” y escogemos “tFileOutputDelimited“.

Vamos a configurar las propiedades de este componente, las que indicaremos son donde se guardará el fichero y que carácter usaremos como separador de campo. Para poder modificar estas propiedades, seleccionamos el componente y en la parte inferior de la pantalla vamos a  la pestaña Component.

El siguiente paso, es colocar el componente que nos permita relacionar el componente de entrada con el de salida. El componente se llama “tMap“, y como su nombre nos puede hacer pensar sirve para mapear una entrada con  una salida. Lo vamos a encontrar en “Components – processing – tmap“. Lo colocamos entre el componente de entrada y el de salida.

Para unirlos,  seleccionamos el componente de entrada, y con el botón derecho lo arrastramos sobre el mapa. Ahora seleccionamos el mapa, botón derecho y lo arrastramos hacia el componente de salida, nos va a pedir un nombre, podemos ponerle “outNation“. Tendríamos de tener una pantalla como esta:

Indicamos las propiedades del componente de entrada,  seleccionamos el componente y en la pestaña component vamos a “Advanced settings” para poder marcar “trim all columns“.

Configuramos el componente “tMap“,  para esto pulsamos 2 veces encima suyo y nos aparecerá una pantalla que sirve para relacionar la entrada con la salida. A la izquierda tenemos la entrada y a la derecha la salida. En la salida tenemos que indicar cual es su esquema, vamos a usar el esquema genérico que pasos  atrás hemos creado. Para esto pulsamos sobre la llave que tenemos a la derecha , en “schema type” indicamos “repository“, en “repository id” escogemos el esquema genérico que hemos creado.

Ahora ya podemos mapear la entrada con la salida, si las columnas de la entrada y la salida tienen el mismo nombre, podemos pulsar el botón automap, que nos va a relacionar las columnas que tenga el mismo nombre o bien si lo deseamos podemos arrastrar cualquier columna de la izquierda con cualquier columna de la derecha. El resultado  tendría que ser:

Ahora ya sólo nos queda ejecutar el proceso, mediante el botón Run.

Como hemos visto en esta pequeña introducción a Talend, sin ningún esfuerzo hemos podido  modificar el separador de  campo de un fichero. En próximas entradas de este Blog mostraremos ejemplos de Talend más complejos.

Etiquetas: , , ,