Obecnie jestem w trakcie tworzenia ETL dla naszej hurtowni danych. Używamy SSIS 2008, ale napotykamy problemy, z których największą jest trudność w ponownym użyciu komponentów. Mamy osobne pakiety dla każdej tabeli i każdy pakiet przyjmuje jako dane wejściowe pewną liczbę zmiennych z pakietu nadrzędnego. Gdy wprowadzamy zmiany do tych zmiennych wejściowych, musimy wejść do każdego pakietu (mamy już około 15, ale liczba ta znacznie wzrośnie) i zmodyfikować pakiet, aby poradzić sobie z tymi zmianami. Istnieją również inne problemy, w tym niemożność uruchomienia dowolnego kodu SQL w celu wyodrębnienia, słabe możliwości rejestrowania itp.
Cały ten proces byłby o wiele bardziej niezawodny, gdyby istniał sposób opracowania naszych ETL w kodzie, umożliwiając ponowne użycie kodu, wspólne biblioteki, lepsze testy jednostkowe itp. Czy istnieje de facto standardowy język / API ETL dla SQL Server? Staram się unikać narzędzi GUI w jak największym stopniu.
Edycja: Powinienem wspomnieć o moim pochodzeniu. Nie jestem DBA i nie mam formalnego (lub nieformalnego) szkolenia DBA, w zasadzie zorientowałem się, jak to postępowałem, więc istnieje prawdopodobieństwo, że próbuję robić niewłaściwe rzeczy z SSIS lub zbliżam się do ETL projekt pod niewłaściwym kątem. Ponadto jestem obecnie zatrudniony w rządzie stanowym, więc wszelkie rozwiązania wymagające zakupu nowego pakietu oprogramowania nie wchodzą w zakres możliwości.
Oto jedno z naszych zadań. Używamy jednego pakietu SSIS do załadowania każdego stołu w naszym magazynie. Każdy pakiet faktów i pakiet wymiarów są ogólnie takie same, różnią się tylko
- Wyciągi ze źródłowej bazy danych
- Manipulacje w przepływie danych
- Scala się z tabelą docelową
Co chciałbym być w stanie zrobić (co wydaje mi się trudne w SSIS)
- Załaduj zapytanie dotyczące wyodrębnienia z pliku tekstowego. Gdy programiści piszą i testują swoje zapytania dotyczące wyodrębniania, nie powinienem w żaden sposób manipulować ich zapytaniem przed uruchomieniem go przez SSIS i nie powinienem wycinać i wklejać zapytania do obiektu źródłowego DB.
- Przetestuj każdy element indywidualnie. Powinienem być w stanie przetestować cały proces ETL dla pojedynczej tabeli w izolacji, niezależnie od innych obciążeń tabeli.
- Dokonaj modyfikacji wspólnej logiki w jednym miejscu, bez konieczności edytowania poszczególnych pakietów. Każdy pakiet ładuje dane do tabel audytu w ten sam sposób, jeśli chcę zmienić ładowane dane poddane audytowi, nie chcę edytować wszystkich 15 pakietów (liczba ta z czasem będzie znacznie większa).
Cały proces wydaje się łatwiejszy do zaimplementowania i bardziej niezawodny, jeśli zostanie wykonany programowo przy odpowiednim użyciu współdzielonego kodu.