Ich bin gerade dabei, ETLs für unser Data Warehouse zu erstellen. Wir verwenden SSIS 2008, stoßen jedoch auf Probleme, von denen das größte die Schwierigkeit ist, Komponenten wiederzuverwenden. Wir haben separate Pakete für jede Tabelle und jedes Paket verwendet eine Reihe von Variablen aus einem übergeordneten Paket als Eingabe. Wenn wir Änderungen an diesen Eingabevariablen vornehmen, müssen wir in jedes Paket gehen (wir haben jetzt ungefähr 15, aber diese Anzahl wird erheblich zunehmen) und das Paket ändern, um diese Änderungen zu bewältigen. Es gibt auch andere Probleme, einschließlich der Unfähigkeit, beliebiges SQL für unsere Extraktion auszuführen, schlechte Protokollierungsfunktionen usw.
Dieser gesamte Prozess wäre viel robuster, wenn es eine Möglichkeit gäbe, unsere ETLs im Code zu entwickeln, um die Wiederverwendung von Code, gemeinsame Bibliotheken, bessere Komponententests usw. zu ermöglichen. Gibt es eine De-facto- Standard-ETL-Sprache / API für SQL Server? Ich versuche, GUI-Tools so weit wie möglich zu vermeiden.
Edit: Ich sollte meinen Hintergrund erwähnen. Ich bin kein DBA und habe kein formelles (oder informelles) DBA-Training. Ich habe dieses Zeug im Laufe der Zeit im Grunde genommen herausgefunden, daher besteht jede Wahrscheinlichkeit, dass ich versuche, unangemessene Dinge mit SSIS zu tun oder mich dieser ETL zu nähern aus dem falschen Winkel projizieren. Außerdem bin ich derzeit in der Landesregierung beschäftigt, sodass Lösungen, die den Kauf eines neuen Softwarepakets erfordern, nicht in den Bereich der Möglichkeiten fallen.
Hier ist eine unserer Aufgaben. Wir verwenden ein einzelnes SSIS-Paket, um jede Tabelle in unser Lager zu laden. Jedes Fact-Paket und Dimension-Paket sind im Allgemeinen gleich und unterscheiden sich nur in
- Auszüge aus der Quellendatenbank
- Manipulationen in einem Datenfluss
- Wird in die Zieltabelle eingefügt
Was ich gerne tun würde (was ich in SSIS als schwierig empfinde)
- Laden Sie die Extraktionsabfrage aus einer Textdatei. Wenn Entwickler ihre Extraktionsabfragen schreiben und testen, sollte ich ihre Abfrage in keiner Weise bearbeiten müssen, bevor SSIS sie ausführt, und ich sollte die Abfrage nicht ausschneiden und in ein DB-Quellobjekt einfügen müssen.
- Testen Sie jede Komponente einzeln. Ich sollte in der Lage sein, den gesamten ETL-Prozess für eine einzelne Tabelle isoliert zu testen, unabhängig von anderen Tabellenlasten.
- Nehmen Sie Änderungen an der gemeinsam genutzten Logik an einem Ort vor und müssen Sie nicht jedes einzelne Paket bearbeiten. Jedes Paket lädt Daten auf die gleiche Weise in die Audit-Tabellen. Wenn ich die geladenen Auditedaten ändern möchte, muss ich nicht alle 15 Pakete bearbeiten müssen (diese Anzahl wird mit der Zeit viel größer).
Der gesamte Prozess scheint viel einfacher zu implementieren und robuster zu sein, wenn er programmgesteuert mit der richtigen Verwendung von gemeinsam genutztem Code durchgeführt wird.