Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
Co będziemy robić
• Poznamy SSIS i zbudujemy podstawowy proces ETL
• Zasilimy bazę danymi dotyczącymi sprzedaży i obliczym...
Konstrukcja warsztatu
9:00 – 13:00 Pierwsza część warsztatów
Utworzenie projektu i pakietów zasilających bazę danymi
z MyS...
Bartosz Ratajczyk
Konsultant SQL Server
Programista baz danych i aplikacji
Prelegent
MCSE: Data Platform, MCT
http://barte...
O Was
• Czy mieliście wcześniej do czynienia z budowaniem procesów ETL?
• A z SQL Server Integration Services?
• A z SQL S...
Co to SSIS
• SSIS, czyli SQL Server Integration Services
• Narzędzie do realizacji procesów ETL
• Dostarczane wraz z całą ...
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
• Instal...
Rozszerzenia
• SSDT może być rozszerzane przez budowę własnych komponentów
• Niektóre z nich są dostarczane przez Microsof...
Inne narzędzia
dtexec - narzędzie do uruchamiania pakietów SSIS
dtexecui == dtexec + GUI
IsDeploymentWizard – wdrażanie pr...
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...
Nasze zadanie
Badamy czy realizowane są cele sprzedażowe
• Stworzymy proces zasilające bazę danych:
• danymi o sprzedawcach (i ich miejs...
Ź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ł...
Po co nam metadane zasilania?
• Pozwalają śledzić procesy zasilające tak jak my chcemy
• Dają pogląd z iloma źródłami dany...
Nasz model metadanych
I nasz model relacyjny (dane docelowe)
Standardy nazewnictwa
http://sqlblog.com/blogs/jamie_thomson/archive/2012/01/29/suggest
ed-best-practises-and-naming-conve...
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 ...
Ź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...
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 prod...
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 syst...
Jeszcze raz model relacyjny
Zasilanie bazy relacyjnej
• Wykorzystujemy odrębny projekt z predefiniowanymi ustawieniami
• Zasilamy danymi, które pobral...
Wykorzystanie transformacji Lookup
• Użyjemy do mapowania danych źródłowych na docelowe
• Używamy domyślnego ustawienia Fu...
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)
...
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 IsDeployme...
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 ko...
Czego zupełnie nie ruszaliśmy
(a o czym warto na koniec wspomnieć choć słowem)
• Transakcje
• Wdrażanie pojedynczych pakie...
Chyba mi się spodobało – co dalej?
• Jakie są opcje dalszego uczenia się SSIS
• Oficjalne kursy Microsoft
• 20463 Implemen...
23 września - Od SASSa do LESSa - czyli ulepszanie CSSa - KRAKÓW
24 września - Clean Code + Wzorce Projektowe - ŁÓDŹ
24 wr...
Chcesz wiedzieć więcej?
Szkolenia pozwalają na indywidualną pracę z każdym
uczestnikiem
• pracujemy w grupach 4-8 osobowyc...
Szkolenie dedykowane dla Ciebie
Interesuje Cię tematyka warsztatu?
Zapoznaj się z programami szkoleń:
Projektowanie hurtow...
Wspierają nas
Podstawy ETL z SSIS
Podstawy ETL z SSIS
Upcoming SlideShare
Loading in …5
×

Podstawy ETL z SSIS

1,404 views

Published on

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

Published in: Education
  • Be the first to comment

  • Be the first to like this

Podstawy ETL z SSIS

  1. 1. Podstawy ETL Z pomocą SQL Server Integration Services Warsztaty Stacja.IT Warszawa, 17.10.2016.
  2. 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. 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. 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. 5. Bartosz Ratajczyk Konsultant SQL Server Programista baz danych i aplikacji Prelegent MCSE: Data Platform, MCT http://bartekr.net | b.ratajczyk@gmail.com
  6. 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. 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)
  8. 8. ETL • Extract • Transfer • Load • Czyli przenieś dane stąd -> tam i przekształć je po drodze
  9. 9. ELT • Extract • Load • Transfer • Czyli przenieś dane stąd -> tam a potem je przekształcaj
  10. 10. Gartner Magic Quadrant 2016 https://www.gartner.com/doc/reprints?id=1- 3CUJXZO&ct=160727&st=sb
  11. 11. Gartner Magic Quadrant 2015 https://www.gartner.com/doc/reprints?id=1- 2KDMO20&ct=150731&st=sb
  12. 12. Narzędzia
  13. 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. 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/
  15. 15. Inne narzędzia dtexec - narzędzie do uruchamiania pakietów SSIS dtexecui == dtexec + GUI IsDeploymentWizard – wdrażanie projektów dtutil – wdrażanie pakietów
  16. 16. Elementy składowe ETL w SSIS Czyli z jakich klocków budujemy przetwarzanie
  17. 17. Rozwiązanie + Projekt
  18. 18. Projekt
  19. 19. Pakiety
  20. 20. Managery połączeń
  21. 21. Pozostałe
  22. 22. Budowa pakietu
  23. 23. Control flow
  24. 24. Data flow
  25. 25. Event handlers
  26. 26. Parametry i zmienne
  27. 27. Logowanie
  28. 28. SSIS Toolbox
  29. 29. 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)
  30. 30. Nasze zadanie
  31. 31. 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
  32. 32. Źródła danych • Baza MySQL • Pliki CSV, TXT • Pliki XML
  33. 33. 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
  34. 34. 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
  35. 35. Nasz model metadanych
  36. 36. I nasz model relacyjny (dane docelowe)
  37. 37. Standardy nazewnictwa http://sqlblog.com/blogs/jamie_thomson/archive/2012/01/29/suggest ed-best-practises-and-naming-conventions.aspx
  38. 38. ZADANIE 1 Budowa podstawowego projektu i pakietu SSIS
  39. 39. 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.
  40. 40. Źródło danych – baza MySQL
  41. 41. Wada sterownika MySQL .NET Należy użyć polecenia SQL, np. SELECT * FROM tabela
  42. 42. Tego problemu nie ma z ODBC
  43. 43. START (Zadanie 1)
  44. 44. Trochę więcej o komponentach Czyli co tam można znaleźć w SSIS Toolbox
  45. 45. Elementy Control Flow
  46. 46. Precedence constrains
  47. 47. Kontenery
  48. 48. Elementy Data Flow
  49. 49. ZADANIE 2 Zasilanie bazy danych informacjami z plików
  50. 50. 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
  51. 51. XML Source dla jednego pliku
  52. 52. Wykorzystanie kontenera ForEach
  53. 53. Parametryzacja kontenera ForEach
  54. 54. Parametryzacja XML Source
  55. 55. Flat file connection manager Utwórz lokalny manager połączenia do plików (będzie można użyć zmiennych)
  56. 56. 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)
  57. 57. START (Zadanie 2)
  58. 58. PRZERWA NA PIZZĘ
  59. 59. ZADANIE 3 Zasilanie danych docelowych, debugowanie, obsługa błędów
  60. 60. 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
  61. 61. Jeszcze raz model relacyjny
  62. 62. 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
  63. 63. 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
  64. 64. Transformacja Lookup – ustawienia ogólne
  65. 65. Transformacja Lookup – źródło danych
  66. 66. Transformacja Lookup – mapowanie kolumn
  67. 67. Transformacja Lookup - wyjście
  68. 68. Przepływ danych - Sprzedaż
  69. 69. START (Zadanie 3)
  70. 70. 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
  71. 71. OBSŁUGA BŁĘDÓW I analiza przepływających danych
  72. 72. Debugger (Control Flow)
  73. 73. Data Viewer (Data Flow)
  74. 74. Obsługa błędów (Control Flow) Precedence Constraints (Completion, Failure) Event Handlers
  75. 75. Obsługa błędów (Data Flow) Wykorzystanie Error Output do przekierowania do innego zbioru
  76. 76. ZADANIE 4 / DEMO Wdrażanie projektów SSIS na serwer docelowy, wykorzystanie SQL Agent
  77. 77. Sposoby wdrażania projektów SSIS • Bezpośrednio z SSDT • Instalacja pliku .ispac z poziomu SSMS • Wykorzystanie IsDeploymentWizard
  78. 78. Uruchamianie z poziomu SQL Agent
  79. 79. PODSUMOWANIE
  80. 80. 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
  81. 81. 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
  82. 82. 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ć
  83. 83. 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:
  84. 84. 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 :)
  85. 85. 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)
  86. 86. Wspierają nas

×