Cómo hacer Insert/Update/Delete en mappings de Informatica

A la hora de escribir en una tabla hay que tener en cuenta si los registros que queremos insertar existen ya o no. Si ya existen lo normal sería actualizarlos, y lo que no existen insertarlos. Informatica permite definir este comportamiento basándose en los campos que definamos como claves para saber si un registro ya existe o no, y si hay que actualizar o insertar.

La opción més sencilla es definir los campos que van a hacer de clave primaria para que la herramienta ETL pueda decidir si ya existe o no, y actualizar o insertar en consecuencia. Para ello hay que definir a nivel de sesión la opción ‘Update’ en ‘Treat all source rows as’, y en el tabulador del mapping, en el target marcar el check ‘Update else insert option’. Después, en el nivel de mapping, hay que marcar las columnas que identifican los registros como ‘Primary Keys’

Pero si se quiere contemplar todas las opciones hay que tener en cuenta también los registros que hayan dejado de existir en las tablas origen y que, por tanto, haya que marcar o eliminar en las tablas destino. Entonces la opción más completa es utilizar un ‘Full joiner’ para unir origen y destino, y después una transformación de Router para crear un camino o grupo para cada caso, uno para los que no existan en destino (caso insert), otro para los que existan en origen y destino (caso update), y otro para los que existan en destino, y en origen ya no (caso delete).

Para el insert sólo hay que conectar directamente el target, y para los otros dos hay que pasar por una transformación de ‘estrategia de actualización’, una para actualizar y otra para eliminar registros.

Como una imagen vale más que mil palabras ésta el la imagen de un blog que explica en detalle lo que hay que hacer para crear un mapping de insert/update/delete:

 

Mappings de Insert/Update/Delete con Informatica

 

Mapping de Informatica para Insert Update y Delete

Este comentario de la Informatica Network que reproduzco aquí sobre cómo configurar las diferentes opciones de actualización de la tabla destino también puede ser muy útil:

  • Only   perform inserts into a target table.

When you configure the session, select Insert for   the Treat Source Rows As session property. Also, make sure that you select   the Insert option for all target instances in the session.

  • Delete all   rows in a target table.

When you configure the session, select Delete for   the Treat Source Rows As session property. Also, make sure that you select   the Delete option for all target instances in the session.

  • Only   perform updates on the contents of a target table.

When you configure the session, select Update for   the Treat Source Rows As session property. When you configure the update   options for each target table instance, make sure you select the Update   option for each target instance.

  • Perform   different database operations with different rows destined for the same   target table.

Add an Update Strategy transformation to the   mapping. When you write the transformation update strategy expression, use   either the DECODE or IIF function to flag rows for different operations   (insert, delete, update, or reject). When you configure a session that uses   this mapping, select Data Driven for the Treat Source Rows As session   property. Make sure that you select the Insert, Delete, or one of the Update   options for each target table instance.

  • Reject   data.

Add an Update Strategy transformation to the   mapping. When you write the transformation update strategy expression, use   DECODE or IIF to specify the criteria for rejecting the row. When you   configure a session that uses this mapping, select Data Driven for the Treat   Source Rows As session property.