Czym jest schemat gwiazdy?

Z grubsza ogarniesz to w: 5 min


Autor: Dominik Szcześniak

Cześć, fajnie, że czytasz kolejny artykuł w ramach naszej Bazy Wiedzy.
Dzisiaj zajmiemy się tematem schematu gwiazdy w kontekście modelowania danych i pracy z Power BI czy też usługami Analysis Services.

Po co w ogóle modelować i układać dane? #

Zachęcam Cię do obejrzenia webinaru w ramach Akademii Big Data, gdzie opowiadałem już co nieco na temat tego, czym tak właściwie jest modelowanie danych i po co to robić. Nagranie znajdziesz tutaj.


W skrócie… chcemy wystawić nasze dane dla Użytkowników Biznesowych/ odbiorców w zrozumiały dla nich sposób. W systemach transakcyjnych (OLTP) dane znajdują się w wielu tabelach.

Systemy operacyjne/ transakcyjne są zoptymalizowane pod to, żeby dokonywać dużo szybkich operacji zapisu. Z kolei nasze rozwiązania analityczne zazwyczaj żyją zgodnie z hasłem „write once, read many”. Dodatkowo oczywiście system analityczny (hurtownia danych, lakehouse) jest „dostrojony” i przygotowywany tak, żeby obsługiwał też cięższe zapytania analityczne…

Jak to wygląda w systemie źródłowym? #

Wrócmy na chwilę jednak do systemów transakcyjnych.
Użytkowników końcowych nie interesuje to, że dane dotyczące naszych klientów znajdują się w 3 tabelach np. KNA1, KNB1 i KNC1 (to przykład tabel SAPowych).
„Biznes” interesuje „zjadliwa” informacja. Chcą sobie przeanalizować np. sprzedaż danego produkt według regionów.
Domyślasz się pewnie, że dane dotyczące sprzedaży i produktów są też rozsiane mówiąc wprost po wielu miejscach systemu transakcyjnego. Być może nawet takie dane konsolidowane są z wielu systemów źródłowych (tak zazwyczaj dzieję się w dużych organizacjach). No i nie zapominajmy o nieśmiertelnych Excelach 😉 Które też oczywiście możemy załadować do naszego systemu analitycznego.

Jak układać dane w systemie analitycznym? #

OK… myślę, że czujesz już, jak to wygląda pod kątem źródeł danych.
W kolejnych fazach (o których będą kolejne artykuły w ramach Bazy Wiedzy) dokonują się procesy ładowania danych ich transformacji, wzbogacania, agregowania itp. Oczywiście należy je też odpowiednio zamodelować. (Zachęcam ponownie do sprawdzenia Webinaru, który miałem przyjemność prowadzić w ramach Akademii).
W ostatniej fazie dane trafiają do warstwy, z której narzędzie raportowe mogą pobierać gotowe obiekty (fakty i wymiary). Wspomniana warstwa, gdzie znajdują się już gotowe dane, nazywana jest warstwą Gold (według frameworka architektury medalionowej) lub też DataMartem.

Co znajdziesz w ostatniej warstwie? #

Fakty i wymiary. Wymiary, to obiekty, które zawierają opis „słownomelodyczny”. Przykładem tabel wymiarów jest np. wspomniany wcześniej Klient, Produkt, Data, Kraj itp. Możesz kojarzyć go z atrybutami danej encji.

Czyli mamy np. naszego Klienta Dominika. {ClientID = 1, Name = „Dominik”, Surname = „Szcześniak”, City = „Poznań”} itp.

Każdy wpis z wymiaru ma swój unikatowy klucz. W moim przypadku ClientID =1. Oczywiście, są też bardziej zaawansowane analitycznie koncepcje, gdzie śledzimy dla danego Klienta zmiany atrybutów w czasie. (Koncepcja Slowly Changing Dimension, SCD, temat na kolejne materiały, sygnalizuję Ci jednak Drogi Czytelniku, że taki koncept istnieje). W wymiarach spotyka się też SIDy, czyli „sztuczne” klucze, tworzone w naszym rozwiązaniu analitycznym.

Z kolei w faktach znajdziesz klucze do wymiarów i miary liczbowe, które te dane opisują. Załóżmy, że analizujemy sprzedaż, wówczas ClientID = 1 może wystąpić kilkukrotnie, bo oczywiście dany klient może dokonywać wielu transakcji kupna.

No i tutaj wchodzimy w kwestie modelowania danych i naszego głównego bohatera dzisiejszego wydania – schematu gwiazdy.

Schemat gwiazdy #

Schemat gwiazdy (ang. star schema) to jeden z najważniejszych wzorców modelowania danych w hurtowniach danych i narzędziach klasy Business Intelligence (BI). Jego prostota, intuicyjność i wydajność sprawiają, że od dekad stanowi złoty standard – szczególnie w środowiskach takich jak Microsoft Power BI.

Schemat gwiazdy to struktura relacyjnej bazy danych, w której jedna centralna tabela faktów otoczona jest kilkoma tabelami wymiarów. Gdy narysujesz taką strukturę, powstaje układ, który przypomina gwiazdę. Prawda? 🙂

Źródło: dokumentacja Microsoft Power BI

Oczywiście w naszych rozwiązaniach analitycznych, tabel faktów będzie więcej, niż jedna. Co do zasady, każdy proces biznesowy, powinien mieć odpowiedni w swojej tabeli faktów. Np. Sprzedaż, przesunięcie magazynowe, ewidencja czasu pracy pracowników, wynagrodzenie itp.

Dlaczego warto stosować schemat gwiazdy? #

Schemat gwiazdy sprawdza się dlatego, że odpowiada naturalnemu sposobowi myślenia analitycznego: mierzysz zdarzenia (fakty) w kontekście pytań kto? co? kiedy? gdzie? (Pamiętasz, pisałem wyżej o wymiarach). Jest prosty do zrozumienia danych przez użytkowników, wydajny w silniku Power BI i umożliwiający pisanie łatwego w utrzymaniu kodu DAX.

Projekty BI, które pomijają modelowanie i wczytują dane jako płaskie tabele, prędzej czy później trafiają na ścianę – wolne odświeżanie, błędne wyniki miar, niemożność dodania nowych źródeł danych bez przebudowy całego raportu. Inwestycja w poprawny schemat gwiazdy na początku projektu zwraca się wielokrotnie.

Jeśli będziesz czytał więcej o schemacie gwiazdy, spotkasz prawdopodobnie nazwisko Ralph Kimball.
Kimball opracował go w latach 90. jako fundament swojego podejścia do hurtowni danych, które opisał szczegółowo w książce The Data Warehouse Toolkit (1996). Jego filozofia to modelowanie wymiarowe (dimensional modeling) – budujesz hurtownię z perspektywy użytkownika biznesowego, wokół procesów i pytań analitycznych. Schemat gwiazdy jest bezpośrednim wyrazem tej filozofii.
Nieco inne podejście prezentował Pan Inmon (ale nie o tym dzisiaj mówimy). Co warto, żebyś dziś zapamiętał, to fakt, że Kimball zaproponował swoje podejście, jako alternatywę do znormalizowanego podejścia Pana Inmona.
Tabele wymiarów, o których pisałem nieco wyżej, są celowo denormalizowane (co oznacza, że zawierają powtarzające się atrybuty), zamiast celowego trzymania ich w osobnych tabelach.

Co warto zapamiętać? #

Schemat gwiazdy ma też kilka cech, które warto zapamiętać:

1) Jeśli pracujesz z Power BI czy rozwiązaniami Analysis Services (SSAS – SQL Server Analysis Services) lub AAS (Azure Analysis Services), to zazwyczaj spotkasz się ze schematem gwiazdy,
2) Dobrze zbudowany model danych uprości Twoje miary DAX,
3) Power BI po prostu „lubi się” ze schematem gwiazdy i koncepcją Pana Kimballa (chodzi tutaj o aspekt kompresowania danych, wydajności zapytań analitycznych, które będzie obsługiwał Twój model).
W tym podejściu mamy do załadowania mniej tabel, kontekst filtra musi też przejść po drodze przez mniej obiektów.

Oczywiście, na samym końcu Twoją rolą będzie zbudowanie rozwiązania, które dostarczy jakość dla Użytkowników biznesowych. Jednym z podejść, które poznasz pracując z Power BI czy też Analysis Services jest właśnie budowaniu modelu danych w oparciu o schemat gwiazdy.

Do następnego!

Responses