Conversión de datos con SSIS 2008 controlando Truncamiento con Salida a Recuento de filas

Nos habíamos quedado en una tarea Conversión de datos, en la que al cambiar el tipo de dato por uno de menor longitud el paquete falló porque se produjo un error. Veamos cuál fue el mensaje.

Error

[Conversión de datos [91]] Error: Error de “columna de salida “NombreCorto” (138)” a causa de un truncamiento y a la especificación de un error de truncamiento en la disposición de filas de truncamiento en “columna de salida “NombreCorto” (138)”. Error de truncamiento en el objeto especificado del componente especificado.

Lo que ha sucedido es que ha encontrado, al menos un registro, cuya longitud del contenido de la columna Nombre es mayor de 15.

Debemos solucionar el error y la solución va depender de la regla de negocio a aplicar.

Vamos a pensar que no conocemos los datos y queremos saber cuántos registros se truncarían en este caso, para luego tomar una decisión.  Como habíamos planteado antes, hay transformaciones que tienen más de una salida, en este caso tenemos una salida correcta (verde) y una salida de error (roja), vamos a utilizar esta salida para redireccionar las filas “malas” a otra transformación, en este caso será a Recuento de filas.

ConvDatos2salidas

Como en la transformación Conversión de datos que tenemos diseñada se hacen dos transformaciones hay posibilidad de configurar la salida de error para cada una de ellas.

ConfigSalError

Asignamos “Redirigir fila” en la intercepción de NombreCorto y Truncamiento

ConfigSalError2

De esta forma queda configurada la salida.

ConfigSalError3

La transformación Recuento de filas necesita una variable para almacenar previamente el valor de la cantidad de filas donde hay más de 15 caracteres. Así queda una vez agregada, esta variable tiene ámbito de tarea, de momento es lo que necesitamos:

VarFilasTruncadas

Ahora sí que estamos en condiciones de configurar la transformación Recuento de Filas

EditorRecuento

Ejecutamos y bien !! Se ha ejecutado el paquete, se han insertado las filas buenas y se han contado las malas.

RecuentoOK

¿He dicho bien? Mmm es que estoy perdiendo más de la mitad de las filas y habría que preguntarse si me puedo dar el lujo de perder más de la mitad de la muestra. Desde luego que nos deshicimos del error, eso sí :).

En la próxima entrega vamos a dar otro enfoque a este problema.