ETL

Proces pobierania danych ze źródeł, przekształcania ich i ładowania do docelowej bazy lub hurtowni. Podstawa integracji danych.

ETL (od Extract, Transform, Load) to trzyetapowy proces przenoszenia danych z wielu źródeł do jednego miejsca docelowego — najczęściej hurtowni danych albo bazy analitycznej. Najpierw wyciągasz dane ze źródeł (Extract), potem je przekształcasz do wspólnego, czystego formatu (Transform), a na końcu ładujesz do celu (Load). To fundament integracji danych: bez niego raporty i dashboardy ssą surowiznę z dziesięciu różnych systemów, z których każdy datę zapisuje inaczej.

Po co to komu

Wyobraź sobie, że dane o sprzedaży masz w bazie MySQL, dane o klientach w CRM-ie przez API, a koszty marketingu w arkuszu Google. Każde źródło ma inny format, inne nazwy kolumn i inne strefy czasowe. ETL spina to w całość: Extract pobiera dane z każdego źródła, Transform ujednolica je (konwersja typów, czyszczenie duplikatów, łączenie tabel, przeliczanie walut), a Load wrzuca gotowy, spójny zestaw do hurtowni, gdzie analityk po prostu odpala zapytanie.

Warto znać też wariant ELT (Extract, Load, Transform). Tutaj najpierw ładujesz surowe dane do mocnej hurtowni (np. BigQuery, Snowflake, Redshift), a transformacje robisz dopiero w niej, jej własną mocą obliczeniową. ELT zdominował świat nowoczesnych chmurowych hurtowni — bo taniej i wygodniej przetwarzać dane tam, gdzie już leżą, niż na osobnym serwerze ETL.

Przykład z praktyki

Klasyczny stack ELT to Airbyte albo Fivetran do pobierania danych ze źródeł, a do transformacji dbt (data build tool). W dbt transformacje piszesz po prostu w SQL-u jako modele. Odświeżenie całego pipeline’u uruchamiasz komendą:

dbt run --select staging.orders+

To przelicza model orders i wszystko, co od niego zależy. Do orkiestracji całości — żeby pipeline odpalał się codziennie o 3:00 i w odpowiedniej kolejności — najczęściej używa się Apache Airflow, gdzie definiujesz DAG (graf zadań) w Pythonie.

Na co uważać

  • Brak idempotencji — pipeline uruchomiony dwa razy nie powinien duplikować danych. Stosuj operacje typu UPSERT albo nadpisywanie całych partycji.
  • Cisza zamiast błędu — najgorszy bug to taki, gdzie transformacja po cichu wyrzuca wiersze (np. zła konwersja daty). Liczby się zgadzają, tylko jest ich mniej. Waliduj liczbę rekordów na wejściu i wyjściu.
  • Mit „ETL to przeżytek” — nie, ELT nie zabił ETL. Przy danych wrażliwych (np. anonimizacja przed załadowaniem) wciąż transformujesz przed Load.

Pojęcia powiązane: ELT, hurtownia danych (data warehouse), data pipeline, dbt, Apache Airflow, data lake, orkiestracja, idempotencja.