Tutorial Talend Open Studio. # 8 Jobs De Gestión masiva De Ficheros.
En este tutorial vamos a ver como diseñar un proceso de carga masiva de ficheros a partir de un conjunto de archivos de hoja de cálculo que se depositan en una determinada carpeta.
Tenemos dos opciones de diseño del job:
- Que el job esté siempre en ejecución esperando a que se introduzca el fichero en la carpeta para arrancar el proceso.
- Que el job se ejecute periódicamente de manera programada.
Para la primera opción utilizaremos un componente de la famila «wait for» (tWaitForFile,tWaitForSocket, tWaitForSqlData) estos componentes están permanentemente escuchando cada período que les indiquemos, para comprobar que se dé un determinado suceso. En nuestro ejemplo, utlizaremos tWaitForFile dado que estamos esperando la entrada de ficheros a un directorio.
Lo configuramos indicando el directorio que debe escanear, el tiempo en segundos de cada iteración y si queremos que solo detecte un tipo de fichero, podemos usar la mascara de la opción file mask. mediante el uso del caracter * podemos por ejemplo filtrar que nos saque ficheros csv («*.csv) o de excel («*.xls*» ).
Al arrancar el job vemos que el proceso queda latente hasta que dejamos un fichero que cumple las condiciones en el directorio.
En ambos diseños de proceso necesitamos un componente que nos liste todos los ficheros que hay en la carpeta. Esta lista de ficheros nos lo genera el componente tFileList que lo podemos conectar con el flujo iterate del componente tWaitForFile.
La configuración del tFilelist no difiere demasiado del tWaitForFile:
Primero indicamos el directorio en donde encontramos los ficheros. También le confirmamos si queremos que nos liste archivos o directorios (carpetas). Generar error si no encuentra nada. Máscara de entrada de ficheros, con la posibilidad de utilizar expresiones regulares
Ahora lo siguiente es incorporar un fichero de imput que lea los ficheros. En nuestro ejemplo utilizaremos tFileImputExcel y le indicaremos en el campo File Name la variable del componente tFileList «CURRENT_FILEPATH» la manera más rápida de encontrar la variable como vimos en el tutorial 6 es empezar a escribir tFile + CRTL+SPACE.
Con un resultado final ((String)globalMap.get(«tFileList_1_CURRENT_FILEPATH»))
Para poder leer todos los datos de los diferentes ficheros, tenemos que cambiar el flujo a iterate como también vimos en el tutorial 6. Para ello utilizamos el componente tFlowToIterate ya que necesitamos que los registros estén cargados uno a uno en las variables.
El siguiente paso es volver a unir los flujos iterate en un flujo main. Esto lo hacemos mediante el componente tIterateTo Flow
Para ello copiamos el esquema y mapeamos en el apartado mapping los campos del esquema con las variables que nos genera el componente anterior de tFlowToIterate.
En el ejemplo anterior vemos como se mapean a las columnas contenidas en el esquema las diferentes columnas del imput Excel que viene por el flujo Row1 con los campos de los ficheros Excel. Y también en la columna «SegundaCol» el nombre del fichero que se obtiene directamente del componente tFileList.
Antoni Lisbona: Director de BuConDa