Blog!

Busqueda de información

Parámetros dinámicos con OdiTools y Odi Procedures

Ratio: 3 / 5

Inicio activadoInicio activadoInicio activadoInicio desactivadoInicio desactivado
 

Durante el desarrollo con ODI es muy común que nos encontremos con hacer operaciones más allá que una simple integración de datos, dichas operaciones pueden ser obtener los datos y prepararlos para formar parte de un data source. En algunos casos dichas operaciones se pueden realizar mediante el toolkit de herramientas  proporcionado por ODI (OdiTools) que nos permiten trabajar con archivos y en dado caso de que estas herramientas no incluyan la operación que deseamos podemos hacer uso un procedimiento ODI.

El problema comienza cuando queremos referenciar una URL, nombre de archivo, Password, nombre de usuario, driver, etc. de manera no estática. Por ejemplo la herramienta OdiFileCopy necesita las direcciones de los archivos origen y destino.

Existen 2 maneras para evitar el problema que generan los parámetros estáticos, la primera manera es haciendo uso de variables ODI y la segunda es con el uso de la Substitution API de Sunopsis.

Caso 1: Código dinámico con variables ODI

  

Supongamos que deseamos copiar un archivo de un directorio1 a un directorio2.

 

 

En este ejemplo los directorios serán los siguientes:

Directorio origen: D:\ODI\IN

Directorio destino: D:\ODI\PROCESS

A continuación crearemos las siguientes variables

 

  • SOURCE_FILE
  • TARGET_FILE

 El siguiente paso es colocar el objeto OdiFileCopy dentro del paquete y colocaremos las variables en los parámetros que del objeto. Para evitar problemas con el nombre de variables usaremos el editor de comandos de OdiTools. Para esto seleeccionaremos la pestaña comando dentro del objeto OdiFileCopy.

Y añadiremos los siguientes parámetros "-FILE=" "-TOFILE="; dentro del parámetro File colocaremos la variable SOURCE_FILE y dentro del parámetro TOFILE colocaremos la variable TARGET_FILE (dar clic en el icono del lápiz para obtener el nombre de las variables).

 

Quedará de la siguiente forma:

 

Con esta configuración estamos diciendo que copiaremos del directorio D:\ODI\IN\ el archivo SOURCE.txt y lo colocaremos en el directorio D:\ODI\PROCESS renombrándolo por TARGET.txt.

En este ejemplo estamos colocando el valor del nombre del archivo usando el campo de valor por defecto, sin embargo no hay que olvidar que este valor se puede obtener por medio de una consulta SQL usando actualización de variables. Este método lo podemos usar en cualquier objeto de OdiTools donde se necesite configurar un parámetro dinámicamente.

  

Caso 2: Código dinámico con Substitution API

Supongamos que deseamos descargar el contenido de una tabla en un archivo por medio de la herramienta OdiSqlUnload; pero desconocemos los datos de conexión de la base de datos donde está alojada la tabla, sin embargo se nos mencionó el esquema lógico que tiene la conexión a dicha tabla.

Para esto crearemos un procedimiento de ODI en el cual usaremos la herramienta OdiSqlUnload para descargar el archivo.

En la parte destino del procedimiento ingresaremos los siguientes valores

·         Tecnología: ODI Tools

·         Contexto: [Contexto con el cual queremos se ejecute el procedimiento]

Y dentro de la parte origen colocaremos los siguientes valores:

·         Tecnología: Oracle

·         Contexto: [Contexto con el cual queremos se ejecute el procedimiento]

·         Esquema: [Nombre del esquema donde está alojada la tabla]

DESTINO

ORIGEN

 

Dentro del comando de la sección de Destino tenemos los siguientes parámetros:

 

  1. FILE: es el nombre del archivo donde se descargará los registros; como puede notarse se reutilizó la variable creada en el ejemplo anterior para mostrar otro ejemplo del uso dinámico de OdiTools.
  2. DRIVER: es el driver para conectarnos a la base de datos donde se encuentra alojada la tabla; el código <%=odiRef.getInfo("SRC_JAVA_DRIVER")%> es parte de los métodos de Substitution API de Sunopsis que nos regresa el driver con el que se debe conectar a la base de datos, esto es posible gracias a la configuración de esquema que colocamos en la sección origen del procedimiento ODI.
  3. URL: es la conexión a la base de datos donde se encuentra alojada la tabla que deseamos consultar; el código <%=odiRef.getInfo("SRC_JAVA_URL")%> servirá para obtener la URL a partir del esquema lógico.
  4. USER: es el usuario con el cual nos conectamos a la base de datos donde se encuentra alojada la tabla que deseamos consultar; el código <%=odiRef.getInfo("SRC_USER_NAME")%> servirá para obtener el USER NAME a partir del esquema lógico.
  5. PASS: es el Password el cual se necesita para conectarse a la base de datos donde se encuentra alojada la tabla que deseamos consultar; el código <%=odiRef.getInfo("SRC_ENCODED_PASS")%> sirve para obtener el Password que se necesita para conectarse a la base de datos a partir del esquema lógico.
  6. FILE_FORMAT: indica que formato tendrá el archivo, la parabra FIXED se refiere a que estamos usando un formato especial que nosotros asignamos.
  7. ROW_SEP: Se refiere al token que usaremos para separar las filas en este caso es un tabulador y un salto de línea los que nos indican que termino el registro.
  8. DATE_FORMAT: Indica el formato de la fecha, si extraemos un capo tipo fecha tendrá el formato de este parámetro.
  9. CHARSET_ENCODING: codificación con la cual se guarda el archivo

 

 

Log in