Lo habíamos dejado aquí, hace 6 meses (cómo pasa de rápido el tiempo !!), y estábamos hablando de Tareas del Flujo de Control, de restricciones de precedencia, de colores y tareas habilitadas / deshabilitadas… ahí lo dejamos justo cuando iba a comenzar tratar temas relativos a la Tarea Flujo de datos y con ella a sus tres tipos de componentes: Orígenes, Transformaciones del Flujo de datos y Destinos.
Sobre Orígenes y Destinos comentamos un poco cuando creamos el paquete SSIS con el Asistente de Importación y Exportación , donde vimos que los orígenes extraen, importan datos y los destinos cargan, exportan datos o crean conjuntos de datos almacenados en memoria. Estos son los componentes activos en SSIS 2008 R2
Vamos a empezar una nueva serie, dedicada a tratar el tercer componente del Flujo de Datos, las Transformaciones, y lo haremos de forma muy introductoria, (dejando mucho por decir). La idea es ir viendo algunas transformaciones a través de ejemplos muy sencillos que en el futuro se podrían ir complementando.
Entonces, ¿qué son y para qué sirven las Transformaciones de Flujo de Datos?
Sencillo, sirven para transformar datos, fácil no? 🙂 Pero con criterio, es decir, aplicando reglas de negocio a los datos extraídos para que cumplan con los requisitos existentes en el destino al que van a ser cargados.
Las transformaciones permiten limpiar los datos, resumirlos, combinarlos (dividirlos o concatenarlos). Son válidas tanto para actualizar los valores de las columnas como para crear nuevas columnas. En ambos casos admite expresiones que se encarguen de realizar la modificación del contenido de los datos. Podemos crear filas nuevas creando agrupaciones de filas. Es posible realizar auditoría, conteo de registros y otras actividades que garanticen la buena “circulación” de los datos y que en definitiva velen por la fiabilidad de los mismos
Las funcionalidades no terminan aquí, hay transformaciones que se emplean para realizar minería de texto, búsquedas exactas y aproximadas, así como ejecutar consultas de predicción de minería de datos.
Todas las transformaciones no trabajan de la misma manera ni afectan por igual al flujo de datos.
Un elemento que las diferencia puede ser cantidad y tipo de entradas y salidas que admite. Veamos algunos casos:
Transformación / Cantidad Columnas | Entrada | Salida Correcta | Salida Error |
Copiar Columna, Ordenar, Auditar | 1 | 1 | 0 |
Convertir Datos y Columna Derivada | 1 | 1 | 1 |
Muestreo de Porcentaje y Muestreo de fila | 1 | 2 | 0 |
Multidifusión | 1 | 1 ó más | 0 |
División condicional | 1 | 1 ó más | 1 |
Mezclar | 2 | 1 | 0 |
Unión de todo (Union All) | Varias | 1 | 0 |
Otro elemento es el modo de procesamiento que realiza sobre las filas, es decir, de una en una (síncrona) o todo el conjunto (asíncrona).
En el primer caso, la salida es síncrona con relación a la entrada, porque para procesar una fila no interesa ver el estado del resto del conjunto de filas, y aunque se agrupan en búferes visibles al usuario, en realidad van una a una. Este es el caso de Copiar Columna, Convertir datos y Columna derivada, por citar algunos.
Hay casos, en los que hay que “mirar” el conjunto completo para procesar una fila en cuestión, por lo que no es posible pasar cada fila al flujo de datos, sino que se recibe el conjunto, se procesa en su totalidad y luego se produce la salida, en un momento distinto al de la entrada, de forma asíncrona. Estas transformaciones suelen llamarse también bloqueantes. Este es el caso de Mezclar y Ordenar, que es ¡¡ altamente bloqueante !!, así que cuidadín, si se puede evitar, hay que evitarla.
Dejamos aquí esta introducción, para empezar a “jugar” con las Transformaciones de Flujo de datos, comenzando por Conversión de datos, específicamente Conversión de tipo de datos.