Co to jest wymiar w hurtowni danych?
Spójrz z lotu ptaka na hurtownie danych. Upraszczając, widzisz dwa typy obiektów. Fakty i wymiary.
Wymiar opisuje fakt, pozwala wykonać na nim agregacje i filtrowanie.
Pozwala go zobaczyć w kontekście i obejrzeć go z wielu płaszczyzn.
Opis faktu to na przykład, numer umowy, numer rejestracyjny, również komentarz. Takie dane nie nadają się zazwyczaj do agregacji.
Wymiar pomaga zagregować fakty: zobaczyć podsumowanie po wartościach z wymiarów. Tworzyć zestawienia i reporty. To atrybuty: status umowy, typ klienta, segmentacja klienta.
Wymiar umożliwia też filtrowanie po wartościach. Czyli odrzucenie tego, co nie jest potrzebne i pozostawienie tylko wartości, które mają być analizowane. Na przykład różnego rodzaju flagi, czy aktywny, czy zapłacone, czy faktura wysłana ale też wspomniane wcześniej statusy, kategorie i segmentacje wykorzystasz do filtrowania.
W wymiarze możesz przechowywać także hierarchie, na przykład relacje: marketów, pracowników albo kalendarz.
Wymiar to: Czas, Klient, Pojazd, Pacjent, Umowa, Waluta.
Dobrze się też zastanowić jaka jest strategia odnośnie przechowywania historii (SCD) oraz wstawiania singletonów.
Jeżeli te teoretyczna piguła to niewystarczające wyjaśnienie, przejdźmy dalej i popracujmy trochę na konkretach.
Co to jest wymiar - Jak zidentyfikować wymiar?
Wymiar umożliwia odpowiedzi na pytania: Kto? Co? Gdzie? Kiedy? Dlaczego? Jak? Dzięki temu łatwiej będzie zidentyfikować wymiar.
Jakim fragmentem działalności firmy się zajmiemy? Sprzedażą? Zamówieniami? Obsługą faktur?
Co będziemy sprzedawać? Panele fotowoltaiczne? OK.
Wyobraź sobie, że jesteś firmą sprzedającą panele fotowoltaiczne. Co może być wymiarem? Wymiar opisuje fakt - dla ustalenia uwagi opisujemy sprzedaż.
Wymiarem będzie: panel fotowoltaiczny, klient, sprzedawca, umowa.
Panel fotowoltaiczny ma atrybuty takie jak producent, model, dane techniczne i fizyczne wymiary, cena katalogowa, cena jednostkowa netto, cena jednostkowa brutto.
Klient może być indywidualny a może być instytucjonalny. Ma przypisane dane dostawy, źródło finansowania, płatność może być realizowana albo przelewem albo kredytem.
Sprzedawca ma atrybuty jak: imię i nazwisko. Miesięczny cel sprzedażowy.
Wymiar umowy charakteryzuje: numer umowy, data podpisania, data realizacji, status umowy, okres gwarancji, zakres gwarancji, usługi dodatkowe.
Wybór odpowiednich atrybutów wymiaru to kluczowa część projektowania hurtowni danych.
Co to jest wymiar - Co dobrze mieć w wymiarze?
Biznesowe atrybuty wymiaru wspomniane powyżej, są esencją dla użytkownika biznesowego. Dla developera przydaje się kilka dodatkowych kolumn.
Klucz zastępczy (surrogate key). Jest niezbędnym i wymaganym elementem wymiaru. Jest złą praktyką opieranie hurtowni danych na kluczach z systemu źródłowego. Może to doprowadzić do błędów w działaniu hurtowni danych. Na przykład utraty danych w momencie błędów po stronie systemu źródłowego albo w momencie usunięcia niektórych kluczy.
Czytaj więcej o kluczach zastępczych tutaj.
Kolejne kolumny to już takie technikalia ale ułatwiające pracę i późniejsze sprawdzenia:
- co poszło źle?
- kiedy rekord został załadowany?
- skąd pochodzi.
Taka metryka powstania rekordu.
Potrzebujesz mieć zestaw kolumn audytujących:
- Z jakiego systemu źródłowego pochodzi rekord
- Datę wstawienia rekordu
- Datę aktualizacji rekordu
- Czy rekord jest usunięty?
- Jaki proces wstawił ten rekord
- Unikalny identyfikator procesu wstawiającego rekord
Co to jest wymiar - Jak łączy się wymiary ze sobą?
Brakuje Ci czegoś w poprzednim paragrafie? Dlaczego umowa nie ma przypisanego klienta? Dlaczego sprzedawca nie ma ze sobą powiązanych umów? Dlaczego panel nie jest podłączony pod umowę? Dlaczego klient nie jest połączony ze sprzedawcą?
To są wartościowe pytania. W hurtowniach danych najłatwiej połączyć wymiary przez tabelę faktów. W tym wypadku faktem może być zamówienie albo sprzedaż. Tam będziesz miał referencje do wymiarów. Tam wszystkie te drogi się łączą.
Dlaczego łączenie bezpośrednio wymiarów ze sobą to nie jest dobry pomysł? Na przykład Power BI pracuje najbardziej optymalnie, gdy masz stworzony model gwiazdy (link do strony microsofty). Czyli jedna centralna tabela faktów i połączone z nią wymiary.
Co to jest wymiar - Wymiar i historia?
Historia w wymiarze to nic innego jak zastosowanie Slowly Changing Dimension (SCD) w procesie ładowania wymiaru.
Historia w wymiarze to przechowywanie zmian dla rekordu ilekroć jego atrybut się zmieni. Dla wymiaru klient, możesz śledzić zmiany jego miejsc dostawy, dla panelu fotowoltaicznego możesz śledzić zmiany ceny jednostkowej.
Ważne pytania, przy projektowaniu wymiaru to:
Czy zależy nam na danych historycznych? Czy chcemy mieć tylko dane aktualne. Czy chcemy śledzić historię zmian? Czy ją ignorować? Czy śledzimy zmianę dla wszystkich atrybutów czy tylko dla wybranych?
Za posiadaniem historii zmian można przywołać argument, że miejsce jest tanie. Praktycznie darmowe, biorąc pod uwagę inne koszty. Posiadając historię łatwiej też odpowiadać na argumenty biznesu: "A miesiąc temu tutaj widzieliśmy inne wartości". Łatwiej jest "debugować" potencjalne błędy albo obsługiwać zastrzeżenia odbiorców danych.
Do zastanowienia: czy na pewno chcemy mieć historię? Czy taką historię udostępniamy klientom czy ona jest tylko dla IT? Czy rzeczywiście ktoś z niej korzysta? Po co mamy tworzyć historię, jeżeli i tak nikt nie będzie jej wykorzystywał?