1. Podstawy ETL
Z pomocą SQL Server Integration Services
Warsztaty Stacja.IT Warszawa, 17.10.2016.
2. Zanim zaczniemy
• Czy wszyscy mają zainstalowane SSDT?
• Czy wszyscy mają MySQL Connector /.NET?
• Czy wszyscy mają lokalną wersję SQL Server?
• Czy wszyscy mają HeidiSQL / SSMS / SQLyog / (inne podobne)?
3. Co będziemy robić
• Poznamy SSIS i zbudujemy podstawowy proces ETL
• Zasilimy bazę danymi dotyczącymi sprzedaży i obliczymy realizację
celów sprzedażowych przez handlowców
4. Konstrukcja warsztatu
9:00 – 13:00 Pierwsza część warsztatów
Utworzenie projektu i pakietów zasilających bazę danymi
z MySQL
Kontenery, pętle, mapowania, obsługa plików CSV/XML
13:00 – 14:00 Pizza
14:00 – 17:00 Druga część warsztatów
Zasilanie bazy docelowej, obsługa błędów
Logowanie, wdrażanie, uruchamianie, SSIS Catalog
5. Bartosz Ratajczyk
Konsultant SQL Server
Programista baz danych i aplikacji
Prelegent
MCSE: Data Platform, MCT
http://bartekr.net | b.ratajczyk@gmail.com
6. O Was
• Czy mieliście wcześniej do czynienia z budowaniem procesów ETL?
• A z SQL Server Integration Services?
• A z SQL Server?
• Czego się spodziewacie po tym warsztacie?
7. Co to SSIS
• SSIS, czyli SQL Server Integration Services
• Narzędzie do realizacji procesów ETL
• Dostarczane wraz z całą platformą danych SQL Server od wersji SQL
Server 2005 (wcześniej jako DTS)
13. SQL Server Data Tools (SSDT)
• Zestaw narzędzi zintegrowanych z Visual Studio
• Ale może też działać samodzielnie
• Instaluje wtedy „Integrated Shell”
• Do wersji SQL Server 2008R2 znane jako Business Intelligence
Development Studio (BIDS)
• Od wersji SQL Server 2012 pewne zamieszanie z nazewnictwem (SSDT,
SSDT-BI)
• Ostatecznie rozwiązane w 2015 roku(?) i już tylko jedno SSDT
14. Rozszerzenia
• SSDT może być rozszerzane przez budowę własnych komponentów
• Niektóre z nich są dostarczane przez Microsoft, a niektóre przez firmy
trzecie
• Przykłady
• Azure Pack (Microsoft) – dostęp do części usług Azure
• Task Factory (Pragmatic Works) – zestaw dodatkowych kontrolek
• SSIS Community Tasks and Components https://ssisctc.codeplex.com/
30. O pakiecie raz jeszcze
• Pakiet to plik XML
• SSDT pomaga tylko go
przygotować
• Ale jeśli się uprzeć, to
można go stworzyć ręcznie
(może jednak nie)
32. Badamy czy realizowane są cele sprzedażowe
• Stworzymy proces zasilające bazę danych:
• danymi o sprzedawcach (i ich miejscu w strukturze organizacyjnej)
• danymi o produktach i grupach, do których należą
• danymi sprzedażowymi
• nałożonymi celami sprzedażowymi
• A potem obliczymy każdemu sprzedawcy realizację jego celów
34. Warstwy
• Nie zasilamy danych od razu do bazy docelowej
• Wykorzystujemy warstwę „Stage”
• Taka lokalna kopia danych źródłowych
• Może przechowywać albo kompletne zbiory, albo „przyrosty”
• Nie chcemy obciążać systemów źródłowych
• Rozbijając zasilanie na warstwy łatwiej śledzić przepływ danych
• Dodatkowa baza na przechowywanie metadanych zasilania
35. Po co nam metadane zasilania?
• Pozwalają śledzić procesy zasilające tak jak my chcemy
• Dają pogląd z iloma źródłami danych mamy do czynienia
• Prezentują ilości przetwarzanych rekordów
• Ustawiony poziom wbudowanego logowania pakietów nie prezentuje
wystarczających informacji
40. Cel zadania
• Poznać strukturę projektu SSIS i sposób tworzenia jego pakietów
• Zasilić bazę danymi sprzedawców i prostej struktury organizacyjnej
• Zapisać informacje o przetwarzaniu w bazie metadanych
Projekt i pierwszy pakiet tworzymy wspólnie.
Pozostałe pakiety to Wasza samodzielna praca.
52. Cel zadania
• Zasilić bazę informacjami z plików CSV, TXT i XML
• Produkty i grupy produktów: pliki XML
• Cele sprzedażowe: pliki TXT
• Informacje sprzedażowe: pliki CSV
• Zapisać informacje o przetwarzaniu w bazie metadanych
57. Flat file connection manager
Utwórz lokalny manager połączenia do plików
(będzie można użyć zmiennych)
58. Haczyki
• Pliki ze sprzedażą wczytujemy w pętli
• Musimy użyć nazwy pliku jako
parametru w managerze połączeń
• Pliki produktów mogą mieć nieprawidłowy schemat XSD
• Musimy nadać prawidłowy typ danych dla ProduktId (np. unsignedShort)
62. Cel zadania
• Zasilamy na podstawie danych w Stage docelową bazę danych
• W Stage są dane niezupełnie zgodne z naszym systemem relacyjnym
• Musimy przetworzyć dane w locie
• Albo do postaci pośredniej i z niej do docelowej
• Po zasileniu obliczamy realizację celów
• Baza relacyjna zawiera już część danych
• Definicje okresów sprzedażowych
• Cele sprzedażowe
64. Zasilanie bazy relacyjnej
• Wykorzystujemy odrębny projekt z predefiniowanymi ustawieniami
• Zasilamy danymi, które pobraliśmy do Stage
• Jedna tabela docelowa == jeden pakiet
• Pamiętamy o utworzeniu metadanych przepływów
65. Wykorzystanie transformacji Lookup
• Użyjemy do mapowania danych źródłowych na docelowe
• Używamy domyślnego ustawienia Full cache
• Przekierujemy braki dopasowani dalej
• Mapowania:
• Przypisanie identyfikatora produktu po jego kodzie
• Przypisanie ceny jednostkowej produktu
• Przypisanie sprzedawcy po loginie
• Przypisanie sprzedawcy do punktu sprzedaży po identyfikatorze
72. Sprawdzenie realizacji celów
SELECT *
FROM dbo.vRealizacjaCelow
WHERE
(RealizacjaCeluIlosc < 100 AND CzyCelIlosciowy = 1)
OR (RealizacjaCeluWartosc < 100 AND CzyCelWartosciowy = 1)
ORDER BY
Nazwisko,
Imie,
OkresId,
Nazwa
82. Kilka słów o czym było
• Zbudowaliśmy rozwiązanie ETL w SSIS
• Poznaliśmy struktury projektu SSIS i najczęściej używane kontrolki
• Znamy podstawy obsługi błędów
• Wiemy jak wdrażać projekty na serwer docelowy
83. Czego zupełnie nie ruszaliśmy
(a o czym warto na koniec wspomnieć choć słowem)
• Transakcje
• Wdrażanie pojedynczych pakietów
• Zasilenia przyrostowe
• MDS, DQS
84. Chyba mi się spodobało – co dalej?
• Jakie są opcje dalszego uczenia się SSIS
• Oficjalne kursy Microsoft
• 20463 Implementing a Data Warehouse with Microsoft® SQL Server® 2014
• 20767 Implementing a SQL Data Warehouse
• Książki (np. Training Kit)
• Wziąć udział w projekcie
• Użyć Import/Export Wizard, zapisać pakiet i zacząć go modyfikować
85. 23 września - Od SASSa do LESSa - czyli ulepszanie CSSa - KRAKÓW
24 września - Clean Code + Wzorce Projektowe - ŁÓDŹ
24 września - Wprowadzenie do Machine Learning z wykorzystaniem
języka Python - WARSZAWA
1 października - Wprowadzenie do technologii Cloud
(Heroku, Google App Engine, Amazon AWS) - WARSZAWA
7 października - Pair Programming - WARSZAWA
Nadchodzące warsztaty:
86. Chcesz wiedzieć więcej?
Szkolenia pozwalają na indywidualną pracę z każdym
uczestnikiem
• pracujemy w grupach 4-8 osobowych
• program może być dostosowany do oczekiwań grupy
• rozwiązujemy i odpowiadamy na indywidualne pytania
uczestników
• mamy dużo więcej czasu :)
87. Szkolenie dedykowane dla Ciebie
Interesuje Cię tematyka warsztatu?
Zapoznaj się z programami szkoleń:
Projektowanie hurtowni danych z wykorzystaniem pakietu Pentaho Business
Intelligence
Techniczne aspekty budowania wydajnych procesów ładowania hurtowni
danych (ETL) z wykorzystaniem Pentaho Data Integration (PDI)