2010-12-15 20 views
9

No entiendo completamente el propósito del flujo de control en un paquete de SSIS. En todos los paquetes que he creado, simplemente agrego un componente de flujo de datos para controlar el flujo y luego el resto de la lógica se ubica dentro del flujo de datos.Flujo de control de SSIS frente al flujo de datos

He visto ejemplos de flujos de control más complicados (EX: foreach loop container que itera sobre líneas en un archivo Excel), pero estoy buscando un ejemplo en el que no pueda implementarse también en el flujo de datos. También podría crear una conexión con el archivo de Excel dentro del flujo de datos.

Estoy tratando de comprender mejor cuándo necesitaría (o debería) implementar lógica en flujo de control versus usar el flujo de datos para hacerlo todo.

Lo que me impulsó a comenzar a buscar en el flujo de control y su propósito es que me gustaría refactorizar los flujos de datos SSIS y dividir los paquetes en paquetes más pequeños para facilitar el desarrollo simultáneo.

Estoy tratando de entender cómo podría usar el flujo de control para estos fines.

Respuesta

14

Un flujo de datos define un flujo de datos desde una fuente a un destino. No comienza en una tarea de flujo de datos y pasa a la siguiente. Flujos de datos entre las entidades seleccionadas (fuentes, transformaciones, destinos).

Por otra parte dentro de una tarea de flujo de datos, no se puede realizar tareas tales como iteración, la ejecución de componentes, etc.

un flujo de control define un flujo de trabajo de las tareas a ejecutar, a menudo un orden en particular (asumiendo sus restricciones de precedencia incluidos) El ejemplo de bucle es un buen ejemplo de un requisito de flujo de control, pero también puede ejecutar scripts SQL independientes, llamar a interfaces COM, ejecutar componentes .NET o enviar un correo electrónico. La tarea de flujo de control en sí no tiene nada que ver con una base de datos o un archivo.

Una tarea de flujo de control no está haciendo nada en sí misma con los datos. Está ejecutando algunos que pueden (o no) actuar sobre datos en alguna parte. La tarea de flujo de datos ESTÁ haciendo algo con datos. Define su movimiento y transformación.

Debería ser obvio cuándo ejecutar lógica de flujo de control y lógica de flujo de datos, ya que será la única forma de hacerlo. En su ejemplo, cita el contenedor foreach y dice que puede conectarse a la hoja de cálculo en el flujo de datos. Claro, para una hoja de cálculo, pero ¿cómo lo harías para múltiples en una carpeta? En la lógica de flujo de datos, ¡simplemente no puedes!

Espero que esto ayude.

+0

Gracias por su respuesta James. El comentario sobre no hacer nada con los datos en el flujo de control tiene mucho sentido. Lo que me impulsó a comenzar a buscar en el flujo de control y su propósito es que me gustaría refactorizar los flujos de datos de SSIS y dividir los paquetes en paquetes más pequeños para facilitar el soporte del desarrollo simultáneo. Estoy tratando de entender cómo podría usar el flujo de control para estos fines. – Paul

+0

"Una tarea de flujo de control no está haciendo nada en sí PARA los datos" - Es cierto, y solo para aclarar, puede tener una 'Tarea Ejecutar SQL' en su flujo de control con un comando SQL que hace algo con los datos. –

+0

"puede tener una 'Tarea Ejecutar SQL' en su flujo de control con un comando SQL que hace algo con los datos" ... eso es lo que hace que la distinción sea ligeramente confusa. –

9

Flujo de datos: son solo para mover datos de una fuente a otra.

Flujo de control: proporciona la lógica para cuando se ejecutan los componentes del flujo de datos y cómo se ejecutan. También los flujos de control pueden: realizar bucles, llamar a procesos almacenados, mover archivos, gestionar el manejo de errores, verificar una condición y llamar a diferentes tareas (incluyendo flujos de datos) dependiendo del resultado, procesar un cubo, disparar otro proceso, etc.

Si ha movido datos de una ubicación a otra y es el mismo cada vez, no se basa en ninguna otra condición, entonces puede salirse con la suya con solo una tarea de flujo de datos, pero en la mayoría de los casos los paquetes son más complejos que eso.

2

Utilizamos el flujo de control para muchas cosas. En primer lugar, todos nuestros datos relativos a la importación de datos se almacenan en tablas.Así que ejecutamos procs para iniciar el flujo de datos y finalizarlo, para que nuestro registro funcione correctamente, hacemos un bucle a través de un conjunto de archivos, movemos los archivos a las ubicaciones de archivo y cambiamos el nombre con la fecha y los eliminamos de las ubicaciones de procesamiento. Tenemos un programa separado que archiva el movimiento y valida los archivos para las comlumns y el tamaño correctos. Ejecutamos un proceso para asegurarnos de que el archivo ha sido validado antes de entrar en el flujo de datos. A veces tenemos el requisito de enviar un correo electrónico cuando se procesa un archivo o enviar un informe de registros que no se pudieron procesar. Estos correos electrónicos se ponen en el flujo de control. A veces tenemos algunos pasos de limpieza que se logran más fácilmente utilizando un proceso almacenado y así poner el paso en el flujo de control.

1

Intentando dar una respuesta básica: Control Flow realiza operaciones; como ejecutar una declaración de SQL o enviar un correo electrónico. Cuando se completa un flujo de control, falla o tiene éxito. El flujo de datos, por otro lado, se encuentra en los elementos de flujo del contenedor y ofrece la capacidad de mover, modificar y manipular datos.

Cuestiones relacionadas