Juan Garcés

Personal Blog

Introducción a Informatica PowerCenter

septiembre 29th, 2013

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
  • jgarces says on: 23/01/2015 at 5:32 pm

     

    Hola Edgar, no he tenido tiempo de generar más material, pero puedes enviar tus consultas e intentaré ayudar en lo que pueda.
    Saludos.

  • Edgar Hernández Hernández says on: 20/01/2015 at 7:04 pm

     

    Buenas tardes Juan, espero que se encuentre bien recientemente me he topado con el uso de las transformaciones http transformation y web services consumer transformation, tendran material acerca de estos temas te lo agradecería.

    saludos

  • jgarces says on: 19/01/2015 at 5:34 pm

     

    Hola Oscar,
    Sí, todos los objetos se almacenan en la base de datos donde se encuentra instalado el servicio.
    Saludos.

  • OscarChaplin says on: 16/01/2015 at 2:49 pm

     

    Hola Juan que tal.

    Primero que nada déjame felicitarte por tan buen material acerca de IPC, a continuación te comento mi duda.

    Los objetos ETL IPC se guardan en la base de datos con la que se crea el servicio de repositorio ?

    De antemano gracias por tu atención

  • jgarces says on: 12/01/2015 at 2:11 am

     

    Puedes descargar la versión Express desde Versión Express

  • acisneros says on: 11/01/2015 at 10:12 am

     

    Hola Juan, pues mira buscando información encontré tu página, la verdad es que estoy muy interesado en aprender ETL con Informática, soy totalmente novato, espero me puedan ayudar y mi pregunta es, ¿Existe una licencia de estudiante? o como podría conseguir una con power center, no se tan cara

  • jgarces says on: 23/07/2014 at 9:54 am

     

    Hola Alejandro. Dejo las respuestas a tus consultas:

    1. El cliente, generalmente, viene incluido en el mismo ZIP o paquete de instalación, ya sea para Windows o Linux, busca la carpeta dentro cuando descomprimas. El cliente sólo se instala en Windows.

    2. El source qualifier es un objeto que convierte los tipos de datos desde el origen a los tipos de datos que utiliza Powercenter. Se utiliza para fuentes de BD como de Archivo Plano. Se inserta automáticamente cuando arrastras un Source al Mapping.

    3. La imagen IV son dos objetos que se utilizan como entrada y salida del mapplet. El primero se utiliza como entrada y el segundo como la salida. Estas transformaciones sólo tienen el nombre de los campos de entrada y salida, las demás transformaciones internas realizan las tareas. La imagen V es un ejemplo de mapplet.

    4. He utilizado desde la versión 7 hasta la 9 y hasta el momento no he tenido problemas de compatibilidad. Sólo he notado que algunas opciones han cambiado de ubicación, como por ejemplo, la creación de usuarios, que se movió desde el Repository Manager a la consola de administración.

    5. Powercenter Designer tiene un Debug que puedes utilizar para realizar seguimiento cuando tengas problemas, pero generalmente ejecuto y reviso los logs finales de los Workflows, ya que son muy detallados.

    Un saludo.

  • Alejandro Torres J (birkut) says on: 22/07/2014 at 7:01 pm

     

    Qué tal, felicidades por compartir este excelente tutorial, te dejo aquí algunas dudas, gracias.

    1. Deseo instalar ipc para hacer pruebas, ya bajé el servidor, ¿debo bajar el cliente? De hecho estoy a punto por instalar ipc en mi lap, incluso ya tengo un key que me envio Informatica.

    2. El Source Qualifier prácticamente siempre se usa cuando el origen de datos es Oracle o SQL Server, dado que son bases relacionales, ¿cierto?

    3. Me perdí un poco en el tema de Mapplet, no del uso, pero sí de la imagen IV a la imagen V, específicamente en la V no ubiqué dónde está el mapplet, o si todo ese es el Mapplet. Quizá cuando empiece a hacer pruebas me daré cuenta.

    4. Qué versión de ipc usaste ya que no sé si hay muchas versiones, y si de pronto tendré conflictos con eso. Me parece estar instalando Informatica PowerCenter Express 9.6.1.

    5. Estaba buscando algo sobre testing de etl para ipc, podrías comentarme a qué se podría referir este tema, o alguna pista por dónde buscar. De hecho me preguntaba si tiene que ver con el tema de validación.

    Saludos.

  • jgarces says on: 19/06/2014 at 12:10 pm

     

    Me alegra que continúes avanzando y que el material publicado sea de utilidad. Agradezco tu ofrecimiento de colaboración, cualquier aporte es bienvenido. Un saludo. Juan.

  • Edgar Hernández Hernández says on: 18/06/2014 at 5:43 pm

     

    Y gracias por poner un foro en con este tema muy util, si en algo puedo colaborar estoy a sus ordenes, tengo algo de experincia sin embargo aun hay cosas que aun me faltan aprender. Muchas gracias. Recientemente hice funcionar el java transformation

  • Edgar Hernández Hernández says on: 18/06/2014 at 5:26 pm

     

    Muchas gracias amigo Juan, el día de hoy he tenido la oportunidad de hacer un ejercion con un normalizer con un requerimiento que tube, aun me faltan cosas por aprender de configuracion pero por lo pronto ya normalicé. un saludo cordial

  • jgarces says on: 01/06/2014 at 6:31 pm

     

    Hola Edgar. Intentaré poner ejemplos en cuanto tenga un tiempo. Como observación, el normalizer es similar al source qualifier, se agregan automáticamente al agregar un tipo de origen de archivo VSAM (Cobol) y su utilidad es la misma, convertir los tipos de datos de la fuente al tipo de datos de Informatica. Un saludo. Juan.

  • Edgar Hernández Hernández says on: 20/05/2014 at 4:51 pm

     

    En este tutorial lo mencionas pero si nos brindas un ejemplo estaria de lo mejor.
    Saludos

  • Edgar Hernández Hernández says on: 20/05/2014 at 4:50 pm

     

    Buenas Tardes, muy buena información, te agradecería si subes algo sobre el normalizer considero un objeto muy util, sin embargo no cuento aun con el conocimiento, si tu tubieras algo sobre eso te lo agradeceria.

  • Abraham Sosa says on: 13/05/2014 at 1:58 pm

     

    Muchas gracias esta muy completa la información.

    Excelente aporte jgarces.

    Saludos

  • jgarces says on: 08/03/2014 at 8:50 pm

     

    Lo siento, sólo en la web.
    Un saludo.

  • dammler says on: 15/02/2014 at 1:11 am

     

    Hola amigo, ¿Tendrás este material excelente en PDF? Saludos.

  • jgarces says on: 19/10/2013 at 11:40 pm

     

    Dejen sus comentarios y aportes, trataré de incluir nuevos artículos relacionados a PowerCenter tan pronto me sea posible.

Juan Garcés

Personal Blog