powoli zmieniające się Wymiary (SCD) – Wymiary, które zmieniają się powoli w czasie, a nie zgodnie z rozkładem czasowym. W hurtowni danych istnieje potrzeba śledzenia zmian atrybutów wymiarów w celu raportowania danych historycznych. Innymi słowy, implementacja jednego z typów SCD powinna umożliwić użytkownikom przypisanie wartości atrybutu WŁAŚCIWEGO wymiaru dla danej daty. Przykładem takich wymiarów mogą być: klient, Geografia, pracownik.,
istnieje wiele metod postępowania z SCD. Najpopularniejsze to:
- Typ 0-metoda pasywna
- Typ 1-nadpisanie starej wartości
- Typ 2-utworzenie nowego dodatkowego rekordu
- Typ 3-dodanie nowej kolumny
- Typ 4-wykorzystanie tabeli historycznej
- Typ 6-łączenie podejść typów 1,2,3 (1+2+3=6)
Typ 0-metoda pasywna. W tej metodzie nie wykonuje się specjalnych działań przy zmianach wymiarowych. Niektóre dane wymiarowe mogą pozostać takie same, jak po raz pierwszy dodane, inne mogą zostać nadpisane.,
Typ 1-nadpisanie starej wartości. W tej metodzie w bazie danych nie jest przechowywana historia zmian wymiarów. Stara wartość wymiaru jest po prostu nadpisywana jako nowa. Ten typ jest łatwy w utrzymaniu i często jest używany do danych, których zmiany są spowodowane przetwarzaniem poprawek (np. usunięcie znaków specjalnych, poprawienie błędów ortograficznych).,
przed zmianą:
Customer_ID | Customer_type | |
---|---|---|
1 | Cust_1 | corporate |
po zmianie:
customer_id | Customer_name | customer_type |
---|---|---|
1 | cust_1 | retail |
Type 2 – tworzenie nowego dodatkowego rekord., W tej metodologii cała historia zmian wymiarów jest przechowywana w bazie danych. Zmiany atrybutów można przechwycić, dodając nowy wiersz z nowym kluczem zastępczym do tabeli wymiarów. Zarówno poprzednie, jak i nowe wiersze zawierają jako atrybuty klucz naturalny(lub inny trwały identyfikator). W tej metodzie stosuje się również kolumny „Data wejścia w życie” i „bieżący wskaźnik”. Może być tylko jeden rekord z bieżącym wskaźnikiem ustawionym na „Y”. Dla kolumn' data wejścia w życie', tj. start_date i end_date, wartość end_date dla bieżącego rekordu jest zwykle ustawiana na wartość 9999-12-31., Wprowadzenie zmian do modelu wymiarowego w typie 2 może być bardzo kosztowną operacją bazy danych, dlatego nie zaleca się stosowania go w wymiarach, w których w przyszłości można by dodać nowy atrybut.,
przed zmianą:
Customer_ID | Customer_Name | Customer_Type | Start_Date | End_Date | current_flag |
---|---|---|---|---|---|
1 | cust_1 | Corporate | 22-07-2010 | 31-12-9999 | y |
po zmianie:
wpisz 3 – dodanie nowej kolumny. W tym typie zazwyczaj w bazie danych przechowywana jest tylko bieżąca i poprzednia wartość dimension., Nowa wartość zostanie załadowana do kolumny 'current/new', a stara do kolumny' old / previous'. Ogólnie rzecz biorąc historia jest ograniczona do liczby kolumn utworzonych do przechowywania danych historycznych. Jest to najmniej powszechnie potrzebna technika.,iv id=”2f5bdb6350″>
po zmianie:
customer_id | customer_name | current_type | previous_type |
---|---|---|---|
1 | cust_1 | retail | corporate |
Typ 4 – przy użyciu tabeli historycznej., W tej metodzie używana jest oddzielna tabela historyczna do śledzenia wszystkich zmian atrybutów wymiaru dla każdego z wymiarów. Tabela wymiarów' main ' przechowuje tylko aktualne dane, np. tabele customer i customer_history.
bieżąca tabela:
Customer_ID | Customer_type | |
---|---|---|
1 | Cust_1 | Corporate |
tabela historyczna:
typ 6 – łączenie typów 1,2,3 (1+2+3=6)., W tym typie mamy w tabeli wymiarów takie dodatkowe kolumny jak:
- current_type – do zachowania bieżącej wartości atrybutu. Wszystkie rekordy historii dla danej pozycji atrybutu mają tę samą bieżącą wartość.
- historical_type – do zachowania historycznej wartości atrybutu. Wszystkie rekordy historii dla danej pozycji atrybutu mogą mieć różne wartości.
- start_date – do przechowywania daty rozpoczęcia' daty wejścia w życie ' historii atrybutu.
- end_date – do przechowywania daty końcowej' daty wejścia w życie ' historii atrybutu.,
- current_flag – do przechowywania informacji o najnowszym rekordzie.
w tej metodzie przechwytywania zmiany atrybutów dodajemy nowy rekord jak w typie 2. Informacja current_type jest nadpisywana nową, jak w typie 1. Przechowujemy historię w historical_column, jak w typie 3.