Podstawy ETL z SSIS

bartoszratajczyk 3,479 views 88 slides Sep 24, 2016
Slide 1
Slide 1 of 88
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88

About This Presentation

Warsztat przeprowadzony w ramach Stacja.IT. Podstawy tworzenia procesów ETL z wykorzystaniem SSIS (SQL Server Integration Services)


Slide Content

Podstawy ETL Z pomocą SQL Server Integration Services Warsztaty Stacja.IT Warszawa, 17.10.2016.

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)?

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

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

Bartosz Ratajczyk Konsultant SQL Server Programista baz danych i aplikacji Prelegent MCSE: Data Platform, MCT http://bartekr.net | [email protected]

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?

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)

ETL Extract Transfer Load Czyli przenieś dane stąd -> tam i przekształć je po drodze

ELT Extract Load Transfer Czyli przenieś dane stąd -> tam a potem je przekształcaj

Gartner Magic Quadrant 2016 https://www.gartner.com/doc/reprints?id=1-3CUJXZO&ct=160727&st=sb

Gartner Magic Quadrant 2015 https://www.gartner.com/doc/reprints?id=1-2KDMO20&ct=150731&st=sb

Narzędzia

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

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/

Inne narzędzia dtexec - narzędzie do uruchamiania pakietów SSIS dtexecui == dtexec + GUI IsDeploymentWizard – wdrażanie projektów dtutil – wdrażanie pakietów

Elementy składowe ETL w SSIS Czyli z jakich klocków budujemy przetwarzanie

Rozwiązanie + Projekt

Projekt

Pakiety

Managery połączeń

Pozostałe

Budowa pakietu

Control flow

Data flow

Event handlers

Parametry i zmienne

Logowanie

SSIS Toolbox

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)

Nasze zadanie

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

Model danych Tutaj diagram zależności między tabelami (z SSMS)

Źródła danych Baza MySQL Pliki CSV, TXT Pliki XML

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

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

Nasz model metadanych

I nasz model relacyjny (dane docelowe)

Standardy nazewnictwa http://sqlblog.com/blogs/jamie_thomson/archive/2012/01/29/suggested-best-practises-and-naming-conventions.aspx

ZADANIE 1 Budowa podstawowego projektu i pakietu SSIS

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.

Źródło danych – baza MySQL

Wada sterownika MySQL .NET Należy użyć polecenia SQL, np. SELECT * FROM tabela

Tego problemu nie ma z ODBC

START (Zadanie 1)

Trochę więcej o komponentach Czyli co tam można znaleźć w SSIS Toolbox

Elementy Control Flow

Precedence constrains

Kontenery

Elementy Data Flow

ZADANIE 2 Zasilanie bazy danych informacjami z plików

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

XML Source dla jednego pliku

Wykorzystanie kontenera ForEach

Parametryzacja kontenera ForEach

Parametryzacja XML Source

Flat file connection manager Utwórz lokalny manager połączenia do plików (będzie można użyć zmiennych)

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 )

START (Zadanie 2)

PRZERWA NA PIZZĘ

ZADANIE 3 Zasilanie danych docelowych, debugowanie, obsługa błędów

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

Jeszcze raz model relacyjny

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

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

Transformacja Lookup – ustawienia ogólne

Transformacja Lookup – źródło danych

Transformacja Lookup – mapowanie kolumn

Transformacja Lookup - wyjście

Przepływ danych - Sprzedaż

START (Zadanie 3)

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

OBSŁUGA BŁĘDÓW I analiza przepływających danych

Debugger (Control Flow )

Data Viewer (Data Flow )

Obsługa błędów (Control Flow ) Precedence Constraints ( Completion , Failure ) Event Handlers

Obsługa błędów (Data Flow ) Wykorzystanie Error Output do przekierowania do innego zbioru

ZADANIE 4 / DEMO Wdrażanie projektów SSIS na serwer docelowy , wykorzystanie SQL Agent

Sposoby wdrażania projektów SSIS Bezpośrednio z SSDT Instalacja pliku . ispac z poziomu SSMS Wykorzystanie IsDeploymentWizard

Uruchamianie z poziomu SQL Agent

PODSUMOWANIE

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

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

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ć

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:

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 :)

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)

Wspierają nas