Slowly changing dimension w SSIS Karol Kuryło karol@kurylo.net
Agenda Co to jest wymiar ? Co to jest wymiar SCD ? Typy wymiarów SCD Metody implementacji w SSIS Demo
Co to jest wymiar Wymiar pozwala grupować, filtrować i nazywać fakty, np.: Wymiar Pracownik Wymiar Produkt Wymiar Region Wymiar Czas Każdy wymiar posiada atrybuty np. w przypadku wymiaru pracownika mogą to być: Imię Nazwisko Oddział Płeć
Co to jest wymiar SCD To wymiary zawierające atrybuty zmieniające się w czasie Wymiary gdzie atrybuty zmieniają się bardzo często, dynamiczne, w regularnych interwałach czasowych to nie jest SCD.
Typy wymiarów SCD Typ 0 – bez zmian Typ 1 – zmiany są nadpisywanie Typ 2 – dodanie nowego wiersza, oznaczenie starego Typ 3 – wykorzystanie dodatkowej kolumny w tabeli Typ 4 – dodatkowa tabela z danymi historycznymi Hybrydy
SCD Type 1 Nadpisuje stare dane nowymi Brak historii ID Numer_pracownika Imie Nazwisko Miasto Plec 1 U101 Adam Kowalski Warszawa M 2 U102 Barbara Nowak Krakow K ID Numer_pracownika Imie Nazwisko Miasto Plec 1 U101 Adam Kowalski Warszawa M 2 U102 Barbara Kowalska K
SCD Type 2 Tworzy nowy rekord Stary oznacza jako nieaktualny Nieograniczona historia ID Numer_pracownika Imie Nazwisko Miasto Plec IsCurrent 1 U101 Adam Kowalski Warszawa M 2 U102 Barbara Nowak Krakow K ID Numer_pracownika Imie Nazwisko Miasto Plec IsCurrent 1 U101 Adam Kowalski Warszawa M 2 U102 Barbara Nowak Krakow K 3 Kowalska
SCD Type 2 ID Numer_pracownika Imie Nazwisko Miasto Plec DateFrom DateTo 1 U101 Adam Kowalski Warszawa M 2001-01-01 9999-12-31 2 U102 Barbara Nowak Krakow K ID Numer_pracownika Imie Nazwisko Miasto Plec DateFrom DateTo 1 U101 Adam Kowalski Warszawa M 2001-01-01 9999-12-31 2 U102 Barbara Nowak Krakow K 2011-02-01 3 Kowalska 2011-02-02
SCD Type 2 & Type 1 ID Numer_pracownika Imie Nazwisko Miasto Plec IsCurrent DateFrom DateTo 1 U101 Adam Kowalski Warszawa M 2001-01-01 9999-12-31 2 U102 Barbara Nowak Krakow 2011-02-01 ID Numer_pracownika Imie Nazwisko Miasto Plec IsCurrent DateFrom DateTo 1 U101 Adam Kowalski Warszawa M 2001-01-01 9999-12-31 2 U102 Barbara Nowak Krakow 2011-02-01 3 Kowalska 2011-02-02 ID Numer_pracownika Imie Nazwisko Miasto Plec IsCurrent DateFrom DateTo 1 U101 Adam Kowalski Warszawa M 2001-01-01 9999-12-31 2 U102 Barbara Nowak Krakow 2011-02-01 3 Kowalska K 2011-02-02
SCD Type 3 Wykorzystanie dodatkowych kolumn na dane historyczne Historia ograniczona do liczby dodatkowych kolumn ID Numer_pracownika Imie Nazwisko Miasto Plec Miasto_archiw 1 U101 Adam Kowalski Warszawa M 2 U102 Barbara Nowak Krakow K ID Numer_pracownika Imie Nazwisko Miasto Plec Miasto_archiw 1 U101 Adam Kowalski Warszawa M 2 U102 Barbara Nowak K Krakow
Metody implementacji DEMO
SCD Wizard Standardowy komponent SSIS Wolny Niewielka możliwość konfiguracji Case sensitive, trailing spaces sensitive Próba ponownego uruchomienia wizarda – zupełnie niszczy dotychczasowy data flow Nie wspiera generowania kluczy podstawowych Domyślnie wstawia NULL w pole daty wygaśnięcia rekordu (zmiana tego i ponowne uruchomienie wizarda, niszczy data flow) Nie można oznaczyć usuniętych wierszy
Merge Dużo szybszy niż SCD Wizard Elastyczny Mało przejrzysty w konfiguracji
Cheksum Transformation Dużo szybszy niż SCD Wizard Wspierane algorytmy: Original checksum – depreciated od SQL 2005 RTM .Net Framework Cheksum – różne wartości na systemach 32/64 bitowych CRC32 – domyślny (problemy z unikalnością) Do ściągnięcia: http://www.sqlis.com/sqlis/
Multiple Hash Dużo szybszy niż SCD WIzard Wspierane algorytmy: MD5, SHA1, SHA256, SHA384, SHA512 Możliwość generowania kilku skrótów w jednej transformacji Do ściągnięcia: http://ssismhash.codeplex.com/
Dimension Merge SCD Dużo szybszy niż SCD Wizard Stanowczo najbardziej rozbudowane narzędzie Szybki, bardzo dużo opcji Na początku może być trudny w konfiguracji Do ściagnięcia: http://dimensionmergescd.codeplex.com/
Dziękuję za uwagę! karol@kurylo.net