🎯 Definicja
Granulacja (Ziarno, Grain) to najważniejsza decyzja przy projektowaniu Tabeli Faktów. Określa ona: “Co reprezentuje jeden wiersz w tabeli?“. Czy jest to pojedyncze kliknięcie, jedna transakcja, czy może podsumowanie sprzedaży całego dnia dla jednego sklepu?
🔑 Kluczowe punkty
- Złota zasada: Zawsze staraj się przechowywać dane na najniższym możliwym poziomie granulacji (np. pojedyncza transakcja).
- Agregacja: Jeśli masz niską granulację (transakcje), zawsze możesz je zsumować do miesiąca. Jeśli masz wysoką (miesiąc), nigdy nie odzyskasz danych o poszczególnych dniach.
- Wymiary: Wymiary muszą pasować do granulacji. (Nie możesz użyć wymiaru “Godzina”, jeśli ziarnem jest “Dzień”).
📚 Szczegółowe wyjaśnienie
Błąd początkującego: “Zróbmy tabelę sprzedaży”. Pytanie seniora: “Ale jakie jest ziarno?“. Jeśli ziarno to “Paragon”, tabela będzie miała miliardy wierszy, ale pozwoli na analizę koszykową (co kupiono razem). Jeśli ziarno to “Dzienny utarg sklepu”, tabela będzie mała i szybka, ale stracimy informację o tym, który klient co kupił.
💡 Przykład zastosowania
Tabela F_Sprzedaz:
- Wersja A (Ziarno: Pozycja paragonu): Kolumny
ProduktID,Ilosc,Cena,Data,SklepID. - Wersja B (Ziarno: Raport dobowy): Kolumny
Data,SklepID,SumaSprzedazy. Wersja A pozwala odpowiedzieć na pytanie: “Ile sztuk produktu X sprzedano?“. Wersja B tylko: “Ile zarobił sklep?“.
📌 Źródła
- “The Data Warehouse Toolkit” - Ralph Kimball.
👽 Brudnopis
- Granulacja determinuje rozmiar bazy danych.
- Często stosuje się schemat hybrydowy: Tabela szczegółowa (Atomic) + Tabele agregatów (Aggregates) dla szybkości raportowania.