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.
E - czyli ekstrakcja
To nic innego jak pobranie danych. Żeby stworzyć wynikową tabele z danymi, trzeba je najpierw pobrać. Można je pobierać z pliku, bazy danych, innej hurtowni danych, chmury.
Jeżeli masz dużo danych na wejściu to zapewne część z nich chcesz odfiltrować i załadować tylko te, które są dla Ciebie ważne. Na przykład możesz chcieć załadować tylko nowe albo zmienione dane. Nie ładować danych, które się nie zmieniły.
Zazwyczaj na ekstrakcję masz przewidziany czas rozpoczęcia ładowania. Zaczynasz ją, gdy system źródłowy jest najmniej obciążony. Masz wtedy swoje okienko na pobieranie danych.
Łatwiejszy scenariusz jest, gdy pobierasz dane z plików. Wtedy ładowanie rozpoczynasz kiedy plik jest dostępny albo w innym dogodnym momencie.
Możesz pobierać dane raz dziennie albo kilka razy dziennie. W zależności od wymagań.
T - czyli transformacja
Co może być transformowane czyli zmieniane?
- Typy danych kolumn - zmieniać na przykład typy liczbowy na znakowy
- Możesz łączyć dane z dwóch kolumn w jedną - dwie kolumny Imię, Nazwisko możesz połączyć w jedną, Imię i Nazwisko
- Możesz wykonywać pivot danych - to co było do tej pory w wierszach będziesz miał w kolumnach
- Dołączać i wzbogacać dane - do danych o pojeździe dodajesz dane o pierwszej rejestracji albo o właścicielu pojazdu
- Czyścić dane - usuwać zduplikowane rekordy
- Sprawdzać jakość danych - czy wszystkie linie są dostępne dla faktury? Jeżeli nie to nie chcemy pokazywać takiej faktury
- Dodawać reguły biznesowe - na przykład tworzyć segmentację klientów albo pojazdów
L - czyli load (ładowanie), zapisanie przetworzonych danych
Tutaj też w zależności od architektury hurtowni danych możesz załadować dane do pliku, do hurtowni danych, do data lake.
Załóżmy, że ładujesz dane do hurtowni danych.
Projektując hurtownie wymuszasz określoną strukturę tabel:
- Decydujesz co będzie kluczem głównym
- Ustalasz co ma być kluczem biznesowym
- Jakie kolumny są wymagane
- Jakie więzy integralności mają być wymuszane
- Określasz typy danych w kolumnach
Potem baza danych "pilnuje" czy dane, które ładujesz spełniają te wymagania.
Co to jest ETL - implementacja
ETL to może to być procedura napisana w SQL, T-SQL, PL-SQL. Może to być kod napisany w Pythonie. Albo specjalne narzędzie na przykład: Informatica Power Center, Informatica Cloud Data Integrator, Talend, IBM Data Stage, Power Query.
Innego narzędzia będziesz używał w niewielkim projekcie i innego w wielkiej korporacji.
Użycie każdego z tych narzędzi ma zalety i wady.
Ten wpis skupia się na teorii budowy przetwarzania ETL. Nie skupia się na narzędziu ale na procesie.
Na marginesie: część Transform można też napisać w DBT.
Co to jest ETL - wyzwania
Dla zaawansowanych i zainteresowanych zgłębianiem tematu, można jeszcze zastanowić się nad:
- Jak dokumentować kod?
- Jak testować ETL'a? Czy to co stworzyłem na pewno spełnia wymagania?
- Jak łatwo zmieniać kod?
- Czy można wygenerować ETL?
- Jak stworzyć kod prosty do utrzymania?
- Dlaczego mój ETL jest wolny? Czyli jak rozwiązywać problemy wydajnościowe
- Jak nie przetwarzać takiej ilości danych?
- Jak radzić sobie z historią?
- Jak obsługiwać zmieniającą się logikę biznesową?
- W jaki sposób zamodelować logikę biznesową, na przykład: przeliczania kursów walut?
Daj mi znać w komentarzu, co Ciebie najbardziej interesuje i jakie są Twoje wyzwania?