Podstawy modelu gwiazdy
W poprzednim wpisie wspomniałem ogólnodostępny przykładowy zestaw danych od Microsoft o nazwie Adventure Works DW 2020. Jest on świetnym przykładem modelu gwiazdy, który dziś chciałbym omówić.
Model możesz pobrać stąd.

Dlaczego model gwiazdy?
Model gwiazdy jest najprostszym sposobem modelowania danych pod budowę raportu. Daje on bardzo dużą elastyczność, uproszczone zarządzanie zmianą, a także pozytywnie wpływa na optymalizację i efektywność przeliczania danych. Implementując model gwiazdy jesteśmy w stanie zaoszczędzić bardzo dużo czasu na etapie tworzenia miar i wizualizacji. Jak wspominałem we wcześniejszych wpisach dotyczących dobrych praktyk modelowania – dobrze zaplanowany model oszczędzi nam pracy na dalszych etapach. Oczywiście istnieją inne sposoby modelowania (jak np. płatek śniegu – tzw. snowflake model, o którym niedługo), lecz to właśnie model gwiazdy jest rekomendowanym w użyciu nawet przez sam Microsoft.

Nie da się nie zauważyć układu gwiazdy na powyższym zrzucie. Tabela faktów stanowi serce gwiazdy dla wszystkich wymiarów dookoła. Oczywiście model gwiazdy nie musi się ograniczać tylko do pięciu wymiarów. Ważnym elementem modelu gwiazdy jest sposób relacji pomiędzy tabelami wymiarów i faktów. Otóż w tym typie modelu tabele wymiarów powinny łączyć się z tabelą faktów w jednokierunkowej relacji jeden do wielu (one-to-many).
Ważne! Model gwiazdy nie musi oznaczać, że w naszym modelu musi być tylko jedna tabela faktów. Możemy budować więcej tabel faktów, jednakże warto zaplanować model w taki sposób, aby wymiary wspólnie je opisywały, np. tabela faktów nr1 zawierająca sprzedaż produktów i tabela faktów nr2 zawierająca stan magazynu, może mieć wspólny wymiar oznaczający numer produktu wraz z jego parametrami w tabeli wymiarów.
Jak zatem opracować model gwiazdy?
Mistrzowskie opanowanie modelowania w schemacie gwiazdy może wymagać naprawdę dużego doświadczenia. Jest jednak kilka zasad, którymi warto się kierować na początku nauki, a w miarę nabywania doświadczenia wprowadzać kolejne dobre praktyki. Istnieje wiele książek, które traktują o modelowaniu danych według schematu gwiazdy, stąd oczywiście nie da się wyczerpać tematu w jednym artykule, jednak postaram się przybliżyć chociaż podstawowe zasady, które pomogą w budowie prostego modelu.
Zdefiniuj tabele wymiarów
Umiejscowienie wszystkich danych w jednej dużej tabeli nie jest ani elastyczne, ani zoptymalizowane. Tabele wymiarów są tabelami opisowymi, które objaśniają daną akcję nazywaną faktem. Pola w tabelach wymiarów są często wykorzystywane jako fragmentatory lub osie wykresów.
Zdefiniuj tabele faktów
Tabela faktów stanowi serce modelu gwiazdy. Trzeba być ostrożnym opracowując taką tabelę szczególnie dlatego, że są to największe tabele w modelu, które mogą przyczynić się do niepotrzebnego wzrostu rozmiaru naszego raportu. Tabele faktów zawierają zbiór akcji takich jak sprzedaż, magazyn, produkcja itp. Tabela faktów zawiera pola, które stanowią wartości wizualizacji czy kalkulacji. Mówiąc inaczej, fakt jest numeryczną wartością, którą możemy zagregować.
Spłaszcz tabele wymiarów
W modelu gwiazdy ważne jest przechowywanie pojedynczej relacji pomiędzy tabelą faktów a tabelami wymiarów. Posiadanie osobnego wymiaru na każdą cechę np. produkt, kategoria produktu, subkategoria produktu, marka nie jest dobre dla modelu w schemacie gwiazdy. Warto zastanowić się jakie wymiary są wspólne w celu utworzenia zorganizowanej tabeli wymiarów np. dProdukt (Kategoria, Subkategoria, NrProduktu, NazwaProduktu).
Nie spłaszczaj tabeli faktów
Pomimo że spłaszczanie tabeli wymiarów jest dobre dla schematu gwiazdy, to identyczne podejście do tabeli faktów nie jest już takie dobre. Powodem jest to, że w wyniku spłaszczania tabeli faktów zaczniemy ją poszerzać dodając kolejne opisowe klucze. Prowadzi nas to do posiadania wszystkich informacji w jednej wielkiej tabeli faktów, co spowoduje, że nie tylko stracimy na elastyczności modelu, ale także na jego optymalizacji.
Nie wymagaj akcji od tabeli wymiarów
Tworząc model danych w oparciu o schemat gwiazdy zawsze chcesz, aby to wymiar filtrował fakt, nigdy odwrotnie. Jeśli poprawnie utworzysz tabelę faktów będzie to nawet niemożliwe, ponieważ tabela faktów to tylko i wyłącznie liczby. Oznacza to, że chcesz filtrować używając wymiarów. Jeśli natomiast filtrowanie poprzez konkretny wymiar nie spełnia Twoich oczekiwań może to oznaczać, że wymiary zostały nieodpowiednio zaplanowane lub potrzebna jest kolejna tabela faktów.
Podsumowanie
W artykule odpowiedziałem na pytanie co to jest model gwiazdy, oraz opisałem jego zalety. Następnie omówiłem właściwości modelu gwiazdy, a także jakie są podstawowe dobre praktyki w tworzeniu modelu danych w oparciu o schemat gwiazdy. Wdrożenie podstaw modelowania danych w oparciu o schemat gwiazdy może bardzo szybko poprawić jakość i optymalizację naszych raportów.
[…] jednym z poprzednich wpisów tłumaczyłem jak utworzyć model danych w oparciu o schemat gwiazdy. Jest to jedna z dobrych […]