SSIS Dividiendo datos de una tabla en varios ficheros

El caso que nos traemos entre manos hoy viene propiciado por un hilo del foro de Microsoft Integration Services (en inglés) en el que se solicitaba ayuda para volcar información de una tabla que contiene transacciones. Cada transacción está compuesta por varias filas y se pretendía guardar la información relacionada con cada transacción en un fichero de texto y hacerlo con una sola ejecución del paquete ETL.

Solución

La solución es muy sencilla. En lugar de obtener un sólo dataset con todas las filas y luego intentar segmentarlo, vamos a obtener los distintos identificadores de transacciones en un dataset que recorreremos con un ForEach en el que se estará ejecutando una dataflow que realizará una consulta filtrada y generará un fichero de texto por cada un de las transacciones.
Descarga el script para crear la tabla y datos de muestra Una vez tenemos creados los datos, vamos a crear dos variables. Una de tipo Object que va a almacenar el dataset con los distintos números de transacción y la segunda de tipo Int32 en la que vamos a mapear el número de transacción en cada iteración del recordset que vamos a hacer en el ForEach. En la imagen siguiente se muestra como queda el Control Flow: image Dentro del dataflow solo tenemos que añadir un componente de origen OLEDB y escribir la consulta para obtener todos las columnas de la tabla, filtrando por el número de transacción: DataSource Para lograr que con cada ejecución del dataflow se escriban los datos en un archivo distinto, sólo tenemos que añadir una expresión a la propiedad ConnectionString del administrador de conexión del archivo de destino (flat file destination): “C:\\Output\\Transaction_” + Right(“000” +  (DT_STR,10,1252)(@[User::TransactionId]), 3) + “.txt” Y con esto ya lo tenemos listo. Es un caso muy sencillo pero es bastante habitual encontrarnos con este tipo de operaciones y como siempre hay una primera vez para todo… seguro que algun@ le encuentra utilidad. Descarga el paquete del ejemplo desde Skydrive

Anuncios
Esta entrada fue publicada en Basico, ForEach, http://schemas.google.com/blogger/2008/kind#post, SSIS. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s