SQL Server Integration Services Nie tylko dla developera - Zadania
Autor: Bartłomiej Graczyk
Opublikowano: 2013-09-09
Wprowadzenie
W jednym z poprzednich artykułów opisana została architektura pakietów SSIS. Jako jeden z kluczowych elementów pakietu SSIS, wskazane zostały zadania, stanowiące o jego funkcjonalności. Dla lepszego poznania możliwości dostępnych w pakietach zadań, większość z nich została opisana w poniższym artykule, wraz ze wskazaniem ich potencjalnego, praktycznego wykorzystania.
Zadania standardowe (built-in)
Zadania dostępne podczas budowy pakietów SSIS można podzielić na dwie główne grupy. Pierwszą grupę stanowią zadania dostępne domyślnie przy tworzeniu pakietu SSIS. Zadania te stanowią podstawowy zakres zadań, ale w każdej chwili ich domyślna lista może zostać poszerzona o zadania niestandardowe (custom task), które bez większego problemu można napisać korzystając z zasobów developera .NET i kilku wytycznych dot. tworzenia własnych komponentów SSIS.
Swoboda w tworzeniu własnych zadań, pozwala zagwarantować możliwość pełnego dostosowania rozwiązania SSIS do aktualnych potrzeb. Nie należy również zapominać o możliwościach efektywnego wykorzystania zadań już istniejących. W tym jednak celu przydatna okaże się na pewno wiedza o każdym z zadań, wraz z prostym przykładem jego zastosowania. Dodatkowo dla uproszczenia i lepszego usystematyzowania informacji o zadaniach zostały one podzielone na główne grupy, które wskazują bezpośrednie przeznaczenie zadań:
Data Flow Tasks (Zadania przetwarzania I przepływu danych)
To pierwsza, a zarazem najbardziej istotna grupa zadań dostępnych w pakietach SSIS, umieszczenie w pakiecie zadania typu Data Flow Task (DFT) stwarza możliwość wykonywania operacji na danych. Każde z zdań DFT w ramach jednego pakietu dysponuje dedykowanym buforem do przetwarzania danych, a edycja zadań DFT odbywa w wydzielonym obszarze, co widoczne jest na poniższej ilustracji.
Ilustracja 1 - Obszar rozwoju Data Flow - przetarzenia i przepływu danych
Operacje realizowane w ramach Data Flow Task dodatkowo podzielone są na trzy grupy:
Source (Źródła)
Do tej grupy należą wszystkie z dostępnych domyślnie jak i własne (custom) elementy umożliwiające pobranie danych z wybranych lokalizacji w tym:
- OLE DB Source / ODBC , powszechnie wykorzystywane do nawiązania połączenia i pobrania danych z baz SQL Server, ORACLE
- Flat File Source, dający możliwość utworzenia połączenia do plików .txt, .csv
- Excel Source, który pozwala na odczytanie zawartości arkuszy Excel
- XML Source, pozwalający na odczytanie danych z plików XML
Ilustracja 2 - Domyślne źródła danych w SSIS
Transformation (Transformacje)
Grupa zadań związanych z wykonaniem transformacji dla pobranych danych, wśród zadań znajdują się m.in. operacje takie jak :
- PIVOT / UNPIVOT, czyli operacje transformacji tabeli / tabela przestawna
- Derived Column, pozwalające na wykonanie kalkulacji na wybranych kolumnach i dodanie ich do wynikowego zbioru, komponent może posłużyć np. do dodania kolumny kalkulowanej wartości netto/brutto w przypadku danych sprzedażowych
- Audit – pozwala na dodanie metadanych dla każdego rekordu m.in. data/czas wstawienia, pakiet, z którego pochodzą dane
- Conditional Split – swego rodzaju odpowiednik CASE wykonywanego na poziomie T-SQLa, pozwalający na szybkie i efektywne dzielenie danych na grupy wg określonego kryterium – wartości.
Ciekawostką jest fakt, że wśród dostępnych zadań, występuje różnice w poszczególnych edycjach SQL Server Integration Services (Standard vs Enterprise). Przykładem tutaj są zadania rozmytego wyszukiwania i grupowania (Fuzzy lookup i Fuzzy grouping).
Lista dodatkowych elementów dostępnych w grupie transformacji dostępna jest na poniższej ilustracji.
Ilustracja 3 - Transformacje dostępne w pakietach SQL Server 2012 SSIS
Destination (Lokalizacje docelowe)
Jest to zbiór komponentów wykorzystywanych do realizacji zapisu danych w lokalizacji docelowej, w zależności od wybranej opcji możliwy jest zapis m.in.:
- do bazy danych z wykorzystaniem komponentów OLE DB Destination lub ADO .NET Destination lub ODBC Destination
- do pliku .txt, .csv korzystając z Flat File Destination
- w postaci arkusza Excel poprzez użycie Excel Destination
Dodatkowe komponenty dla lokalizacji docelowych widoczne są na poniższej ilustracji.
Ilustracja 4 - Domyślnie dostępne lokalizacje docelowe
W przypadku operacji na danych zarówno odczytu jak i zapisu, warto zwrócić uwagę na komponent typu RAW Data Source / Destination. RAW Data to specjalna, binarna postać pliku, która bardzo często w pakietach SSIS wykorzystywana jest do zapisu tymczasowych danych. Zaletą wykorzystania tego typu pliku jest bez wątpienia szybkość jego obsługi w ramach SSIS, jego format umożliwia zapis danych bez dodatkowych metadanych i wykonywania kosztownych operacji m.in. formatowania danych, co przekłada się bezpośrednio na optymalność wykorzystania takiego pliku w odczycie / zapisie danych.
Wracając do obszaru grup zadań w ramach Control Flow, należy wspomnieć o zadaniach
Data Preparation Task
Zadania pozwalające na przygotowanie danych, które w kolejnych krokach będą podlegać przetworzeniu. Do operacji przygotowania danych można zaliczyć m.in. kopiowanie plików (z lokalizacji do lokalizacji – zadanie Copy File, pobranie danych ze wskazanego serwera FTP (FTP Task). Nie należy zapominać o możliwości wywołania metody w ramach wskazanego webservice. Wspomniane zadania zaznaczone zostały na poniższej ilustracji
Ilustracja 5 - Zadania związane z przygotowaniem danych
Zadania SQL Server (SQL Server Tasks)
To bardzo wąska grupa zadań, odpowiadających bezpośrednio za umożliwienie wykonywania operacji na danych (copy,insert, update) i strukturach danych (CREATE,ALTER,DROP).
Zadania skryptowe (Script Task)
Jest to zadanie, którego logika I sposób działania jest ściśle uzależniony od kodu wykorzystaniem określonego języka programowani (C#, VB)
Ilustracja 6 - Określenie języka programowania dla zadań typu Script Tasks
Zadania na objektach OLAP (Analysis Services Tasks )
Pakiety SSIS mogą również zawierać zadania dedykowane do obsługi baz wielowymiarowych, z poziomu pakietu SSIS możliwe jest procesowania kostek, przetworzenie partycji danych czy utworzenie obiektu po stronie silnika SQL Server Analysis Services.
Zadania utrzymaniowe / automatyzujące (Maintenance Tasks)
Ilustracja 7 - Zadania administracyjne
Wśród zadań w tej grupie znajdują się :
- Zadania obsługi indeksów (Rebuild Index, Reorganizace Index)
- Transfer obiektów bazy danych, pozwalające na sprawną migrację np. ustawień baz danych, jak również loginów czy aktualizacji statystyk.
Zadania własne (Custom Tasks)
Jak zostało to już wspomniane w pakietach SSIS możliwe jest dodanie samodzielnie stworzonych zadań. Postepowanie zgodnie z wytycznymi dla developerów, prowadzi do osiągniecia oczekiwanych funkcjonalności.
Podsumowanie
Wśród standardowych zadań znajduje się wiele komponentów, które decydują o znaczącej elastyczności SSIS. Niezależnie od grupy czy typu zadania (własne, wbudowane) możliwe jest ich wykorzystanie dla zapewnienia wymagań funkcjonalnych rozwiązania.