Co to jest left anti join?

Problem:

Posiadasz rozwiązanie działające w Databricks.

Jak wybrać z tabeli z zamówieniami tylko rekordy, które nie mają przypisanych klientów albo klienci, z jakiegoś powodu nie istnieją. Rozwiązanie zbuduj w oparciu o SQL’a.

Rozwiązanie:

Rozwiązanie pierwsze:

select o.* from d_order o
left join d_customer c on (o.customer_tk = c.customer_tk)
where c.coustomer_tk is null

Albo

select o.* from d_order o
left anti join d_customer c on (o.customer_tk = c.customer_tk)

To są równoznaczne zapytania. Ich rezultatem jest ten sam zbiór danych, różnią się tylko składnią.

Warto zauważyć, że to drugie z użyciem słowa kluczowego anti jest bardziej zwięzłe. Natomiast, gdy ten kod SQL próbujesz migrować na inną platformę, wtedy może nie zadziałać.

Read More

Co to jest wymiar w hurtowni danych?

co to jest wymiar

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.

Read More

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

Zwinna hurtownia danych

zwinna hurtownia danych

Przenosząc rozwiązanie hurtowni danych do chmury, masz gotowy ból głowy.

Jak się odnaleźć w nowym środowisku? Jak dostarczyć tam dane? Jaką usługę wybrać? Jak przechowywać dane? Jak przetwarzać dane? Jak ustawić model dostępu do danych?

I jeszcze jedno wielkie pytanie:

Jak nie zbankrutować?

W niektórych przypadkach rozwiązaniem jest zwinna hurtownia danych.

Zwinna hurtownia danych to taka, która nie opiera się o bazę danych. Dane przechowuje w systemie plików, może to być na przykład Data Lake w chmurze (np. Azure Data Lake Gen 2 [nazewnictwo aktualne na kwiecień 2022]).

Zdecydowaną zaletą takiego rozwiązania jest niska cena.

Jak określić, czy taka hurtownia będzie dobra właśnie dla Ciebie?

Read More

Czym zajmuje się Data Engineer i Data Analyst?

czym zajmuje się data engineer

W dużej organizacji systemów przechowujących dane jest wiele.

Użytkowników korzystających z tych systemów jest jeszcze więcej.

Użytkownicy mają wiele potrzeb i problemów, które dane mogą rozwiązać.

Ale tutaj uwaga. Nie patrz na dane pod kątem jednego systemu.

On znajdują się w wielu systemach i dopiero, gdy uzupełnimy jedne dane drugimi możemy uzyskać pełniejszy obraz.

Jeden system prezentuje wąski wycinek rzeczywistości – możesz powiedzieć jeden piksel.

Bardziej to zaciemnia, niż umożliwia na odpowiedź na kluczowe pytania. Potrzebujesz zobaczyć szerszy kontekst i zobaczyć dane i systemy holistycznie.

Do skomplikowanej pracy z danymi do ich integracji i potem analizy, odpowiedzi na kluczowe pytania, potrzebni są specjaliści.

I to właśnie o bohaterowie dzisiejszego odcinka:

Data Engineer i Data Analyst, tworzą pełniejszy obraz świata.

Czym zajmuje się Data Engineer?

Read More

4 ways to improve Impala performance

impala performance

Useful Impala commands that you can use to improve queries performance are:

COMPUTE STATS

SET MEM_LIMIT

CREATING TEMP TABLE

Those statements will make your code smarter.

Performance will be greater and your managers, users and DB’s will be happy to work with you.

INSERT OVERWRITE – will make your life much easier when handling deletes.

Continue reading to know when it is good to apply those statements.

Read More