SQL Server Integration Services Nie tylko dla developera - Zadania 

Udostępnij na: Facebook

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.

Transformacje dostępne w pakietach SQL Server 2012 SSIS

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.

Domyślnie dostępne lokalizacje docelowe

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

Zadania związane z przygotowaniem danych

 

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)

Określenie języka programowania dla zadań typu Script Tasks

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)

Zadania administracyjne

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.