Je suis actuellement en train de créer des ETL pour notre entrepôt de données. Nous utilisons SSIS 2008, mais nous rencontrons des problèmes, dont le plus important est la difficulté de réutiliser les composants. Nous avons des packages séparés pour chaque table et chaque package prend en entrée un certain nombre de variables d'un package parent. Au fur et à mesure que nous apportons des modifications à ces variables d'entrée, nous devons entrer dans chaque package (nous en avons environ 15 maintenant, mais ce nombre va augmenter considérablement) et modifier le package pour faire face à ces changements. Il existe également d'autres problèmes, notamment l'impossibilité d'exécuter du SQL arbitraire pour notre extraction, des capacités de journalisation médiocres, etc.
L'ensemble de ce processus serait beaucoup plus robuste s'il existait un moyen de développer nos ETL dans le code, permettant la réutilisation du code, des bibliothèques communes, de meilleurs tests unitaires, etc. Existe-t-il un langage / API ETL standard de facto pour SQL Server? Je cherche à éviter les outils GUI autant que possible.
Edit: je devrais mentionner mes antécédents. Je ne suis pas un DBA et je n'ai pas de formation DBA formelle (ou informelle), j'ai essentiellement compris ces choses au fur et à mesure, donc il y a toutes les chances que j'essaie de faire des choses inappropriées avec SSIS ou que j'approche de cet ETL projeter sous le mauvais angle. De plus, je suis actuellement employé au sein du gouvernement de l'État, donc toutes les solutions qui nécessitent l'achat d'un nouveau progiciel ne sont pas dans le domaine des possibilités.
Voici l'une de nos tâches. Nous utilisons un seul package SSIS pour charger chaque table dans notre entrepôt. Chaque package Fact et Dimension sont généralement les mêmes, ils ne diffèrent que par
- Extractions de la base de données source
- Manipulations dans un flux de données
- Fusionne dans la table de destination
Ce que j'aimerais pouvoir faire (que je trouve difficile à faire dans SSIS)
- Chargez la requête d'extraction à partir d'un fichier texte. Lorsque les développeurs écrivent et testent leurs requêtes d'extraction, je ne devrais pas avoir à manipuler leur requête de quelque manière que ce soit avant que SSIS l'exécute et je ne devrais pas avoir à couper et coller la requête dans un objet DB Source.
- Testez chaque composant individuellement. Je devrais pouvoir tester le processus ETL complet pour une table individuelle de manière isolée, indépendamment des autres charges de table.
- Apportez des modifications à la logique partagée en un seul endroit, sans avoir à modifier chaque package individuel. Chaque package charge les données dans les tables d'audit de la même manière, si je veux modifier les données chargées auditées, je ne veux pas avoir à modifier les 15 packages (ce nombre va devenir beaucoup plus important au fil du temps).
L'ensemble du processus semble être beaucoup plus facile à mettre en œuvre et plus robuste s'il est effectué par programme avec une utilisation appropriée du code partagé.