podstawy etl z ssis

Post on 19-Jan-2017

95 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Podstawy ETLZ 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 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

Bartosz Ratajczyk

Konsultant SQL Server

Programista baz danych i aplikacji

Prelegent

MCSE: Data Platform, MCT

http://bartekr.net | b.ratajczyk@gmail.com

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 SSISCzyli 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

Ź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 1Budowa 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 komponentachCzyli co tam można znaleźć w SSIS Toolbox

Elementy Control Flow

Precedence constrains

Kontenery

Elementy Data Flow

ZADANIE 2Zasilanie 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 3Zasilanie 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ówSELECT *FROM dbo.vRealizacjaCelowWHERE

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

ORDER BYNazwisko,Imie,OkresId,Nazwa

OBSŁUGA BŁĘDÓWI 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 / DEMOWdraż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 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)

Wspierają nas

top related