web-dev-qa-db-fra.com

Flux de contrôle SSIS vs flux de données

Je ne comprends pas entièrement l'objectif du flux de contrôle dans un package SSIS. Dans tous les packages que j'ai créés, j'ajoute simplement un composant de flux de données pour contrôler le flux, puis le reste de la logique se trouve dans le flux de données.

J'ai vu des exemples de flux de contrôle plus compliqués (EX: foreach boucle conteneur qui itère sur les lignes dans un fichier Excel.), Mais je cherche un exemple où il ne pourrait pas également être implémenté dans le flux de données. Je pourrais tout aussi facilement créer une connexion au fichier Excel dans le flux de données.

J'essaie de mieux comprendre quand j'aurais besoin (ou devrais) implémenter une logique dans le flux de contrôle vs utiliser le flux de données pour tout faire.

Ce qui m'a incité à commencer à étudier le flux de contrôle et son objectif est que je souhaite refactoriser les flux de données SSIS ainsi que décomposer les packages en packages plus petits afin de faciliter la prise en charge du développement simultané.

J'essaie de comprendre comment utiliser le flux de contrôle à ces fins.

16
Paul

Un flux de données définit un flux de données d'une source vers une destination. Vous ne démarrez pas sur une tâche de flux de données et passez à la suivante. Flux de données entre vos entités sélectionnées (sources, transformations, destinations).

De plus, dans une tâche de flux de données, vous ne pouvez pas effectuer de tâches telles que l'itération, l'exécution de composants, etc.

Un flux de contrôle définit un workflow de tâches à exécuter, souvent un ordre particulier (en supposant vos contraintes de priorité incluses). L'exemple de boucle est un bon exemple d'exigence de flux de contrôle, mais vous pouvez également exécuter des scripts SQL autonomes, appeler des interfaces COM, exécuter des composants .NET ou envoyer un e-mail. La tâche de flux de contrôle elle-même peut n'avoir rien à voir avec une base de données ou un fichier.

Une tâche de flux de contrôle ne fait rien en soi pour les données. Il en exécute certains qui eux-mêmes peuvent (ou non) agir sur les données quelque part. La tâche de flux de données IS fait quelque chose avec les données. Elle définit son mouvement et sa transformation.

Il devrait être évident quand exécuter la logique de flux de contrôle et la logique de flux de données, car ce sera la seule façon de le faire. Dans votre exemple, vous citez le conteneur foreach et indiquez que vous pouvez vous connecter à la feuille de calcul dans le flux de données. Bien sûr, pour une seule feuille de calcul, mais comment feriez-vous pour plusieurs feuilles dans un dossier? Dans la logique du flux de données, vous ne pouvez tout simplement pas!

J'espère que cela t'aides.

20
James Wiseman

Flux de données - ne sert qu'à déplacer des données d'une source à une autre.

Flux de contrôle - fournit la logique pour savoir quand les composants du flux de données sont exécutés et comment ils sont exécutés. Le flux de contrôle peut également: effectuer une boucle, appeler des procédures stockées, déplacer des fichiers, gérer la gestion des erreurs, vérifier une condition et appeler différentes tâches (y compris les flux de données) en fonction du résultat, traiter un cube, déclencher un autre processus, etc.

Si vous déplacez des données d'un emplacement à un autre et que c'est la même chose à chaque fois, sans aucune autre condition, vous pouvez vous en tirer avec un package avec juste une tâche de flux de données, mais dans la plupart des cas, les packages sont plus complexes que cela.

14
Stagg

Nous utilisons le flux de contrôle pour de nombreuses choses. Tout d'abord, toutes nos données concernant l'importation de données sont stockées dans des tableaux. Nous exécutons donc des procs pour démarrer et terminer le flux de données, afin que notre journalisation fonctionne correctement, nous parcourons un ensemble de fichiers, nous déplaçons les fichiers vers des emplacements d'archivage et les renommons avec la date et les supprimons des emplacements de traitement. Nous avons un programme distinct qui fait le déplacement des fichiers et valide les fichiers pour les comlumns et la taille corrects. Nous exécutons un proc pour nous assurer que le fichier a été validé avant d'entrer dans le flux de données. Parfois, nous avons l'obligation d'envoyer un e-mail lorsqu'un fichier est traité ou d'envoyer un rapport d'enregistrements qui n'ont pas pu être traités. Ces e-mails sont placés dans le flux de contrôle. Parfois, nous avons des étapes de nettoyage qui sont plus faciles à accomplir à l'aide d'un proc stocké et mettons donc l'étape dans le flux de contrôle.

3
HLGEM

Essayer de donner une réponse de base - Control Flow effectue des opérations; comme l'exécution d'une instruction SQL ou l'envoi d'un e-mail. Lorsqu'un flux de contrôle est terminé, il a échoué ou réussi. Le flux de données, d'autre part, se trouve sur les éléments de flux de conteneur et offre la possibilité de déplacer, modifier et manipuler des données.

2
isaac O