podstawy etl z ssis

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

Upload: bartosz-ratajczyk

Post on 19-Jan-2017

95 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Podstawy ETL z SSIS

Podstawy ETLZ pomocą SQL Server Integration Services

Warsztaty Stacja.IT Warszawa, 17.10.2016.

Page 2: Podstawy ETL z SSIS

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

Page 3: Podstawy ETL z SSIS

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

Page 4: Podstawy ETL z SSIS

Konstrukcja warsztatu9:00 – 13:00 Pierwsza część warsztatów

Utworzenie projektu i pakietów zasilających bazę danymi z MySQLKontenery, 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

Page 5: Podstawy ETL z SSIS

Bartosz Ratajczyk

Konsultant SQL Server

Programista baz danych i aplikacji

Prelegent

MCSE: Data Platform, MCT

http://bartekr.net | [email protected]

Page 6: Podstawy ETL z SSIS

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?

Page 7: Podstawy ETL z SSIS

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)

Page 8: Podstawy ETL z SSIS

ETL

• Extract

• Transfer

• Load

• Czyli przenieś dane stąd -> tam i przekształć je po drodze

Page 9: Podstawy ETL z SSIS

ELT

• Extract

• Load

• Transfer

• Czyli przenieś dane stąd -> tam a potem je przekształcaj

Page 10: Podstawy ETL z SSIS

Gartner Magic Quadrant 2016

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

Page 11: Podstawy ETL z SSIS

Gartner Magic Quadrant 2015

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

Page 12: Podstawy ETL z SSIS

Narzędzia

Page 13: Podstawy ETL z SSIS

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

Page 14: Podstawy ETL z SSIS

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/

Page 15: Podstawy ETL z SSIS

Inne narzędzia

dtexec - narzędzie do uruchamiania pakietów SSIS

dtexecui == dtexec + GUI

IsDeploymentWizard – wdrażanie projektów

dtutil – wdrażanie pakietów

Page 16: Podstawy ETL z SSIS

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

Page 17: Podstawy ETL z SSIS

Rozwiązanie + Projekt

Page 18: Podstawy ETL z SSIS

Projekt

Page 19: Podstawy ETL z SSIS

Pakiety

Page 20: Podstawy ETL z SSIS

Managery połączeń

Page 21: Podstawy ETL z SSIS

Pozostałe

Page 22: Podstawy ETL z SSIS

Budowa pakietu

Page 23: Podstawy ETL z SSIS

Control flow

Page 24: Podstawy ETL z SSIS

Data flow

Page 25: Podstawy ETL z SSIS

Event handlers

Page 26: Podstawy ETL z SSIS

Parametry i zmienne

Page 27: Podstawy ETL z SSIS

Logowanie

Page 28: Podstawy ETL z SSIS

SSIS Toolbox

Page 29: Podstawy ETL z SSIS
Page 30: Podstawy ETL z SSIS

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)

Page 31: Podstawy ETL z SSIS

Nasze zadanie

Page 32: Podstawy ETL z SSIS

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

Page 33: Podstawy ETL z SSIS

Źródła danych

• Baza MySQL

• Pliki CSV, TXT

• Pliki XML

Page 34: Podstawy ETL z SSIS

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

Page 35: Podstawy ETL z SSIS

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

Page 36: Podstawy ETL z SSIS

Nasz model metadanych

Page 37: Podstawy ETL z SSIS

I nasz model relacyjny (dane docelowe)

Page 38: Podstawy ETL z SSIS

Standardy nazewnictwa

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

Page 39: Podstawy ETL z SSIS

ZADANIE 1Budowa podstawowego projektu i pakietu SSIS

Page 40: Podstawy ETL z 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.

Page 41: Podstawy ETL z SSIS
Page 42: Podstawy ETL z SSIS

Źródło danych – baza MySQL

Page 43: Podstawy ETL z SSIS

Wada sterownika MySQL .NET

Należy użyć polecenia SQL, np. SELECT * FROM tabela

Page 44: Podstawy ETL z SSIS

Tego problemu nie ma z ODBC

Page 45: Podstawy ETL z SSIS

START(Zadanie 1)

Page 46: Podstawy ETL z SSIS

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

Page 47: Podstawy ETL z SSIS

Elementy Control Flow

Page 48: Podstawy ETL z SSIS

Precedence constrains

Page 49: Podstawy ETL z SSIS

Kontenery

Page 50: Podstawy ETL z SSIS

Elementy Data Flow

Page 51: Podstawy ETL z SSIS

ZADANIE 2Zasilanie bazy danych informacjami z plików

Page 52: Podstawy ETL z SSIS

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

Page 53: Podstawy ETL z SSIS

XML Source dla jednego pliku

Page 54: Podstawy ETL z SSIS

Wykorzystanie kontenera ForEach

Page 55: Podstawy ETL z SSIS

Parametryzacja kontenera ForEach

Page 56: Podstawy ETL z SSIS

Parametryzacja XML Source

Page 57: Podstawy ETL z SSIS

Flat file connection manager

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

Page 58: Podstawy ETL z SSIS

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)

Page 59: Podstawy ETL z SSIS

START(Zadanie 2)

Page 60: Podstawy ETL z SSIS

PRZERWA NA PIZZĘ

Page 61: Podstawy ETL z SSIS

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

Page 62: Podstawy ETL z SSIS

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

Page 63: Podstawy ETL z SSIS

Jeszcze raz model relacyjny

Page 64: Podstawy ETL z SSIS

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

Page 65: Podstawy ETL z SSIS

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

Page 66: Podstawy ETL z SSIS

Transformacja Lookup – ustawienia ogólne

Page 67: Podstawy ETL z SSIS

Transformacja Lookup – źródło danych

Page 68: Podstawy ETL z SSIS

Transformacja Lookup – mapowanie kolumn

Page 69: Podstawy ETL z SSIS

Transformacja Lookup - wyjście

Page 70: Podstawy ETL z SSIS

Przepływ danych - Sprzedaż

Page 71: Podstawy ETL z SSIS

START(Zadanie 3)

Page 72: Podstawy ETL z SSIS

Sprawdzenie realizacji celówSELECT *FROM dbo.vRealizacjaCelowWHERE

(RealizacjaCeluIlosc < 100 AND CzyCelIlosciowy = 1)OR (RealizacjaCeluWartosc < 100 AND CzyCelWartosciowy = 1)

ORDER BYNazwisko,Imie,OkresId,Nazwa

Page 73: Podstawy ETL z SSIS

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

Page 74: Podstawy ETL z SSIS

Debugger (Control Flow)

Page 75: Podstawy ETL z SSIS

Data Viewer (Data Flow)

Page 76: Podstawy ETL z SSIS

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

Event Handlers

Page 77: Podstawy ETL z SSIS

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

Page 78: Podstawy ETL z SSIS

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

Page 79: Podstawy ETL z SSIS

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

Page 80: Podstawy ETL z SSIS

Uruchamianie z poziomu SQL Agent

Page 81: Podstawy ETL z SSIS

PODSUMOWANIE

Page 82: Podstawy ETL z SSIS

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

Page 83: Podstawy ETL z SSIS

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

Page 84: Podstawy ETL z SSIS

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ć

Page 85: Podstawy ETL z SSIS

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:

Page 86: Podstawy ETL z SSIS

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

Page 87: Podstawy ETL z SSIS

Szkolenie dedykowane dla CiebieInteresuje 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)

Page 88: Podstawy ETL z SSIS

Wspierają nas