Transformaciones
Dentro de las transformaciones que podemos utilizar en un mapping nos encontramos con las siguientes:
-
Source Qualifier: Lee datos desde archivos planos y bases de datos relacionales.
-
Expression: Realiza cálculos a nivel de fila.
-
Filter: Filtra las filas de acuerdo a la condición especificada, eliminando las que no cumplan la condición.
-
Sorter: Ordena los datos.
-
Aggregator: Realiza cálculos de agregación.
-
Joiner: Realiza joins entre sources.
-
Lookup: Busca valores y los entrega a otro objeto.
-
Update Strategy: Realiza la inserción, actualización, eliminado o expulsión de los datos de acuerdo a cierta condición.
-
Router: Divide las filas de acuerdo a cierta condición.
-
Sequence Generator: Genera ids únicos.
-
Normalizer: Normaliza los registros desde sources relacionales o VSAM.
-
Rank: Filtra un rango de registros.
-
Union: Realiza la unión de varios flujos de datos en uno.
-
Stored Procedure: Realiza llamadas a un procedimiento almacenado.
Analicemos a continuación las transformaciones más comunes que podemos utilizar:
Source Qualifier
Realiza la obtención de datos desde bases de datos relacionales y archivos de texto plano. Este tipo de transformaciones son obligatorias en los mappings que contienen algún tipo de sources de los antes mencionados. Veamos en la imagen IX un ejemplo de este tipo de transformación:
Imagen IX. Edición de Source Qualifier
Este tipo de transformaciones es de vital importancia en bases de datos relacionales, ya que en la propiedad Sql Query permiten el filtrado de los datos que son obtenidos, para obtener un menor número de filas y por ende, una disminución en la carga del servidor.
Además, permite realizar joins entre tablas y el ordenamiento de los datos, disminuyendo el número de transformaciones dentro del mapping.
Expression
Las expresiones son las transformaciones que permiten realizar los cálculos sobre las filas, así como agregar variables y puertos. Este tipo de transformaciones de utilizan principalmente para realizar la conversión y limpieza de los datos. En la imagen X se puede ver un ejemplo de expression.
Imagen X. Ejemplo de Expression
Otro punto importante a tener en consideración es que los puertos que saldrán de la expresión son sólo aquellos que han sido marcados en la columna O (output), ya que los otros sólo serán utilizados en los cálculos o desechados desde este punto en adelante.
Los puertos generados como variables (columna V) se utilizan para realizar cálculos dentro de las expresiones y no pueden ser utilizados como salidas.
Filter
Los filtros corresponden a transformaciones que permiten eliminar ciertas filas que no cumplan la condición de filtro. Como se pueden ver en la imagen XI, la condición es definida con una expresión incluida en la propiedad Filter Condition y debe retornar sólo los valores TRUE o FALSE.
Imagen XI. Ejemplo de Filtro
Sorter
Esta transformación permite ordenar los datos que llegan a ella de acuerdo a los criterios seleccionados para cada puerto. En la imagen XII podemos ver un ejemplo.
Imagen XII. Ejemplo de sorter
Los puertos que serán ordenados deben ser marcados en la columna KEY y en la columna Direction indicaremos cómo serán ordenados los datos dentro del puerto, ascendente o descendentemente.
Otras propiedades que podemos configurar en el sorter las podemos ver en la imagen XIII, donde podemos indicar entre otros, si el ordenamiento es sensible a mayúsculas y minúsculas.
Imagen XIII. Propiedades de un sorter
Sorter Cache Size le indica al servidor de Informática cuánta memoria asignará al proceso de ordenamiento.
La opción Distinct indica a Informática que mientras realice el proceso de ordenamiento deseche todas aquellas filas que se encuentren duplicadas. Esta opción puede ser útil cuando se obtienen los mismos datos desde distintas fuentes.
Agreggator
La transformación de Aggregator permite que realices cálculos agregados, tales como promedios y sumas, y que realices cálculos sobre grupos. Las funciones agregadas se pueden utilizar sobre uno o más puertos de salida de la transformación. Algunas características específicas de la transformación de Aggregator incluyen:
-
Group-by port: Indica cómo crear los grupos. Pueden ser de entrada, entrada-salida, salida, o puerto variable. Al agrupar los datos, la transformación Aggregator hace salir la fila pasada de cada grupo salvo que se especifique lo contrario.
-
Sorted Ports option: Esta opción se recomienda altamente para mejorar el funcionamiento de la sesión. Al utilizar ordenamiento de puertos, se debe pasar los datos del Source Qualifier a la transformación clasificada por el puerto Group By, en orden ascendente o descendente. Si no, el servidor leerá y agrupará todos los datos primero antes de realizar cálculos.
-
Aggregate cache: El servidor almacena los datos en memoria hasta que termina la agregación requerida. Para reducir al mínimo la paginación al disco, se debe asignar una cantidad apropiada de memoria a los caches de los datos y del índice.
En la imagen XIV y XV podemos ver un ejemplo de agregación y sus propiedades.
Imagen XIV. Ejemplo de agreggator
Imagen XV. Propiedades de una agregación
En la siguiente imagen podemos ver la edición de la expresión de agregación:
Imagen XVI. Edición de expresión de agregación
Joiner
Esta transformación permite realizar el JOIN entre dos fuentes de datos, ya sean dos tablas de una base de datos relacional, dos archivos de texto plano o un archivo de texto plano y una tabla de base de datos. En la imagen XVII podemos ver un ejemplo de esta transformación.
Imagen XVII. Ejemplo de Joiner
Al realizar el join, se debe especificar cuáles serán los campos Master y cuáles serán los campos Detail. Por ejemplo, en el join Clientes y Cuentas los campos master serán los de la tabla Clientes y los campos detail los de la tabla Cuentas, dado que un cliente puede tener una o más cuentas. Esta operación se realiza seleccionando los campos en la columna M.
Para realizar el join es necesario indicar a la transformación cuáles serán los campos master y detail por los que debe realizar el join. Veamos la imagen XVIII.
Imagen XVIII. Condiciones de join
Es posible definir una o más condiciones, dependiendo de las claves por las que se desee unir los datos.
Además, es posible definir una serie de propiedades que se aplicarán en los datos al momento de realizar el join. Para ello veamos la imagen XIX.
Imagen XIX. Propiedades de un joiner
Una de las propiedades que se debe tener presente es el tipo de join que se realizará (Join Type), ya que en ella se indica qué datos serán los que se obtendrán, estos pueden ser:
-
Normal Join: Pasan todos los datos que poseen master y detail.
-
Master Outer: Pasan todos los datos del master y donde no se encuentren datos para el join, el master pasará nulo.
-
Detail Outer: Pasan todos los datos del detail y donde no se encuentren datos para el join, el detail pasará nulo.
-
Full Outer: Pasan todos los datos master y detail y donde no se encuentren datos para el join, pasará el master o detail nulos según corresponda.
Lo anterior es similar a Left Join y Right Join que se utilizan en consultas SQL.
En un mapping podemos tener algo como lo que podemos ver en la imagen XX.
Update Strategy
Esta transformación nos permite definir la forma en que se tratarán los datos al momento de ser enviados al target respectivo. Las opciones para esta transformación son insert, update, delete, reject. En la imagen XXI podemos ver un ejemplo.
Imagen XXI. Ejemplo de Update Strategy
El funcionamiento de esta transformación es definido por la expresión que se ingresa en la propiedad Update Strategy Expression.
La expresión es evaluada para cada fila y son marcadas de acuerdo a la lógica de la expresión. Los valores posibles que debe retornar la expresión son:
-
DD_INSERT: indica que el registro será insertado en el target
-
DD_UPDATE: indica que el registro será actualizado en el target
-
DD_DELETE: indica que el registro será eliminado en el target
-
DD_REJECT: indica que el registro no será desechado y no producirá cambios en el target.
Un ejemplo de una expresión para esta transformación podría ser:
IIF (puntaje > 50, DD_INSERT, DD_DELETE)
En esta expresión estamos indicando al Update Strategy que si el registro, en el campo puntaje posee una valor mayor a 50, se insertará en el target, en caso contrario será eliminado del target.
Este tipo de transformaciones son útiles para tablas o archivos que se cargarán en forma incremental.
En algunos casos será necesario utilizar una Lookup para que la Update Strategy pueda realizar su trabajo.
Router
Los router son transformaciones que permiten dividir las filas en múltiples direcciones de acuerdo a ciertas condiciones. En la imagen XXII podemos ver un ejemplo de este tipo de transformaciones.
Imagen XXII. Ejemplo de Router
Esta transformación divide los datos en grupos que son definidos a partir de una condición. Los datos que cumplan con la condición de algún grupo serán incluidos en él. Es importante destacar que pudiese haber filas que cumplan la condición de dos o más grupos, por lo que dichas filas se duplicarán para cada grupo.
Al incluir el router en nuestro mapping veremos algo similar a la imagen XXIII.
Imagen XXIII. Ejemplo de Router en un mapping
Como se puede ver, los puertos ingresarán por el grupo INPUT, que se genera automáticamente para recibir los datos. Los puertos de salida se deben enlazar en cada grupo que ha sido definido. El grupo DEFAULT es agregado automáticamente y en él se encontrarán todos los datos que no han cumplido la condición de ningún otro grupo.
Un router puede ser utilizado, por ejemplo, para obtener en forma separada los datos de operaciones que no cumplan un cierto umbral y que debieran ser analizadas en forma diferente.
Sequence
La transformación sequence permite agregar números secuenciales únicos a los registros. Se agregan en forma automática dos puertos NEXTVAL y CURRVAL. En la imagen XXIV podemos ver un ejemplo de esta transformación.
Imagen XXIV. Ejemplo de sequence
No se requieren puertos de entrada para esta transformación y los puertos NEXTVAL o CURRVAL, según se requiera, deben ser unidos con una transformación para generar la secuencia. En la imagen XXV se ven algunas de las propiedades que se pueden establecer para esta transformación.
Imagen XXV. Propiedades de una Secuencia
Comments
18 Comments
RSS