Co to jest klucz zastępczy? (surrogate key)

klucz zastępczy

Klucz zastępczy (surrogate key) to identyfikator stworzony w hurtowni danych na potrzeby wymiaru albo faktu. Zastępuje klucz główny z systemu źródłowego.

Surrogate key posiada następujące właściwości:
– Jest unikalny w obrębie wymiaru, nie ma dwóch takich samych wartości w ramach jednego wymiaru
– Za tym kluczem nie stoi żadna logika biznesowa: to jest zwyczajny ciąg liczb lub znaków.
– Wykorzystujesz go, żeby łączyć wymiar z faktem albo łączyć wymiary ze sobą

Nigdy nie łączysz wymiaru z faktem wykorzystując klucz naturalny albo klucz z systemu źródłowego.

Klucz zastępczy możesz być typu INT, BIGINT, GUID. Zazwyczaj jest to wartość generowana przez motor bazy danych, Lakehouse albo narzędzie ETL.

Dzięki kluczowi zastępczemu nie bazujesz na wartościach z systemu źródłowego. Pozwala Ci to na swobodę zarządzania kluczami. Określania jakiego typu są wartości, jaki jest ich cykl życia, w jaki sposób są tworzone.

Read More

Co może pójść źle w testowaniu hurtowni danych?

testowanie hurtowni danych

Co może pójść źle w testowaniu hurtowni danych? Przecież to jest proste!

Dostajesz dane na wejściu. Przetwarzasz je. Dostajesz dane na wyjściu. Co może pójść źle?

Wyobrażasz sobie, że dane wejściowe dostajesz zawsze dobrej jakości? W wielu wypadkach tak jest. Niestety czasami jakość danych wejściowych pozostawia wiele do życzenia.

W tej kolumnie miały być tylko liczby, a dostajesz ciągi znaków.

Zamiast daty dostajesz wartość TRUE albo FALSE.

Albo jeszcze gorzej, miałeś dostawać zysk brutto a dostajesz dochód brutto. To już nie tak łatwo wychwycić.

Faktura miała mieć zawsze przypisane dane klienta, a czasami brakuje tych danych.

Wartość rezydualna miała być zawsze dodatnia, a jest ujemna.

Zdarza się, że z biegiem czasu logika w systemie źródłowym ewaluowała i próba pobrania historii to budowa zupełnie innego przetwarzania niż przetwarzanie bieżących danych.

Już sama analiza tego, co jest na wejściu to gotowy ból głowy.

A dane wejściowe to dopiero początek drogi.

Read More

Co to jest SCD?

co to jest cdc

Co to jest SCD? To akronim od angielskiego Slowly Changing Dimension czyli wolno zmieniający się wymiar. To nic innego, jak sposób na śledzenia zmian w danych w hurtowniach danych. W zależności od potrzeby stosuje się różne typy SCD.

Wyróżniamy sześć (6) typów SCD.

SCD 0 – ignorujesz zmiany

SCD 1 – nadpisujesz zmiany

SCD 2 – przechowujesz historię dla atrybutów w oddzielnym rekordzie.

SCD 3 – przechowujesz historię dla atrybutów w tym samym rekordzie ale innej kolumnie

SCD 4 – przechowujesz historię zmian w innej tabeli

SCD 6 – to kombinacja 1 + 2 + 3 = 6. Historia przechowywana jest zarówno w osobnej kolumnie jak i rekordzie.

U niektórych autorów znajdziesz również SCD 5 oraz SCD 7.

Najpopularniejsze są typy SCD 1, 2. Na rozmowie o prace, możesz dostać pytanie o SCD3. Tym trzem typom poświęcimy dzisiaj uwagę.

Read More

Co to jest ELT?

co to jest ETL

Co to jest ETL? To przeniesienie danych z jednego miejsca do drugiego i nadanie im oczekiwanej struktury. O ETL’u mówimy w kontekście przetwarzania zbiorów danych i budowaniu hurtowni danych lub data lake.

ETL służy do integracji i transformacji danych.

Wysoko poziomowo:
Na wejściu masz dane.
Przekształcasz je.
Zapisujesz.

Wynikiem ETL’a są przekształcone dane.

Po co jest ETL? Na przykład, żeby pobrać dane z systemu transakcyjnego i zapisać w hurtowni danych i potem stworzyć na podstawie tych danych raport. Pobierasz dane o zamówienia i klientach. Tworzysz zestawienie sprzedaży klienta. Dane do raportu aktualizujesz codziennie

Dodając więcej kontekstu:
Wynikiem ETL są uporządkowane dane. Mogą tworzyć wymiar lub tabelę faktów. Połączenie wymiarów i faktów tworzy większą strukturę: hurtownia danych.

Read More

Co to jest CTE?

Problem: Jak napisać zapytanie SQL w przejrzysty sposób. Będzie ono czytelne dla innych. Dodatkowo, gdy wrócisz do niego po kilku miesiącach też będzie dla Ciebie zrozumiałe.
W przypadku zmiany wymagań da się łatwo dostosować do nowych potrzeb. Będzie łatwe w utrzymaniu i rozbudowie.

Rozwiązanie: użyj Common Table Expressions (CTE), żeby napisać czytelny kod.

Read More

Jak usunąć dane z tabeli bez DELETE?

Problem

Usuń dane z tabeli bez używania polecenia DELETE. Użytkownik nie chce widzieć danych starszych niż 30 dni.

Tło biznesowe

Do tabeli faktów masz już załadowane 2 lata danych. Biznes dochodzi do wniosku, że z nie sięga tak daleko w historię. Nie są im te dane potrzebne. Albo na potrzeby zgodności z audytem (audit complience) powinny zostać usunięte.

Tło techniczne

Użycie polecenia DELETE nie wchodzi w grę, ponieważ:
– Nie jest efektywne
– Niektóre silniki bigdata nie wspierają operacji DELETE. Do data laka możesz dołączać dane. Usuwanie trzeba zaimplementować w inny sposób.

To jak zaimplementować usuwanie bez użycia DELETE?

Read More

Ale po są warstwy w hurtowniach danych?!

warstwy w hurtowniach danych

Hurtownia danych zawiera warstwy. W zależności od modelu jaki wybierzesz możesz mieć na przykład dwie warstwy: Staging i Data Mart. Albo więcej: Staging, Data Valult, operational data store (ODS), data mart, warstwa raportowa.

Koszt takich warstw, to podatność na błędy programistyczne, zwiększony czas ładowania danych i więcej danych do obsługi. To tak jakbyś jeden wiersz ze źródła przechowywał w pięciu kopiach.

Ale po co są te wszystkie warstwy w hurtowniach danych? Dlaczego dane nie są pobierane bezpośrednio ze źródła (czy to pliku lub z innej bazy danych) do raportu.

Po co tak komplikować?

Read More

Hurtownie danych wszystko co chciałbyś wiedzieć (na początku)

Jeszcze w czasach liceum lubiłem wrócić po szkole i wcielić się w managera klubu piłkarskiego. To był niesamowity fun zarządzania, wygrywania meczy, kupowania zawodników. Budowania potęgi klubu. 

Albo zagrać w ulubioną strategię i odkrywać nowe kontynenty, budować i rozwijać miasta. Podbijać inne cywilizacje albo z nimi współpracować. Doprowadzić moją cywilizację od epoki kamienia łupanego do XXI wieku.

Wyobraź sobie, że Ty zostajesz takim managerem. Niestety tylko dla potrzeb tego artykułu. 

Skupmy się na firmie technologicznej. Pewnie masz ulubioną, której produkty posiadasz albo sam taką tworzysz.

Taka spółka to wiele produktów, procesów i ludzi. Dużo firm, z którymi współpracujesz. I jeszcze więcej systemów informatycznych, które przechowują dane.

Na przykład jeden system ma dane o fakturach, drugi zamówieniach, trzeci o pracownikach, czwarty monitoruje co się dzieje na świecie i co robi konkurencja, piąty o procesie produkcji, szósty przechowuje stany magazynowe, siódmy dane o klientach.

Jeden system nie daje wystarczających informacji niezbędnych do podjęcia decyzji.

Co w takim razie można zrobić?

Read More