Nowoczesna transformacja danych z dbt, re_data i Airflow.

Robert Michalak
Robert Michalak
May 26, 2025
min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Tradycyjne narzędzia do data transformation to zazwyczaj monolityczne platformy typu all-in-one, które nie oferują dużych możliwości dostosowania i elastyczności. Od kilku lat obserwujemy trend przechodzenia w stronę bardziej wyspecjalizowanych usług, takich jak transformation, orchestration, testing, UI itd. Integracja oddzielnych narzędzi może prowadzić do dostarczania lepszych danych klientowi i poprawy ogólnego doświadczenia. Nowoczesne podejście oznacza, że proces developmentu może być iteracyjny i przyrostowy, z pełną automatyzacją i continuous delivery.

W tym artykule użyjemy narzędzi:

  • dbt
  • re_data
  • Airflow
    jako przykładu budowy nowoczesnego pipeline do data transformation.

dbt

dbt to framework workflow do transformation dla data models. Modele są tworzone za pomocą SQL statements, które opisują transformacje i są wykonywane na docelowej platformie danych: BigQuery, Databricks, Postgres, Snowflake i wielu innych. Modele mogą być budowane z innych modeli, co prowadzi do powstania frameworka z gotowymi do użycia blokami. Ta modularna natura pozwala dzielić logikę na prostsze, mniejsze części, które można ponownie wykorzystać w różnych transformacjach. W porównaniu do tradycyjnych narzędzi nie musimy powtarzać złożonej logiki w wielu pipelines – często kopiowanej z pipeline do pipeline.

Kod dbt jest przechowywany w jednym miejscu (na repozytorium git), co zapewnia single source of truth. Możemy grupować data models w packages, wersjonować je i dodawać szczegółową dokumentację. Dokumentacja może być pisana w plain text lub markdown, aby opisać projekt, sources, kolumny modeli i więcej. Wygenerowana dokumentacja to prosta strona www z sekcjami i wykresami dla lepszej widoczności i zrozumienia projektu.

Każdy model może mieć testy wykonywane podczas developmentu i w runtime. Testy to pliki SQL, które mogą sprawdzać np. not null values, unique values lub reference (czy wartości id odpowiadają tym samym id w innym modelu). Testy w dbt działają jak unit tests w programowaniu – potwierdzają, że kod działa poprawnie i pozwalają na kontrolowane zmiany w modelach.

dbt jest dostępny w 2 wersjach:

  • dbt core – open-source, narzędzie command line ze wszystkimi funkcjonalnościami transformation.
  • dbt cloud – w zasadzie to dbt core, ale z cloud-based UI. UI oferuje dodatkowe funkcje jak metadata, automatyczne renderowanie dokumentacji, integrację z innymi narzędziami.

Podsumowując, praca z dbt pozwala użytkownikom skupić się na business logic podczas tworzenia data models, a framework zadba o execution order i tworzenie obiektów. Data models tworzą zaufane źródło dla raportowania, ML modeling czy innych pipelines. Modularne podejście z reusable data models ułatwia rozpoczęcie pracy z analizą danych – nie musimy budować pipeline „od zera”.

re_data

re_data to open-source framework rozszerzający dbt o testy i metryki ukierunkowane na data quality. To rozwiązanie umożliwia śledzenie zmian w danych, monitorowanie wyników, inspekcję data lineage i szczegółów projektu. Wszelkie wykryte anomalie mogą być wysyłane jako powiadomienia na Slack lub email.

Metryki oparte na czasie są zbierane dla monitorowanych tabel i mogą być rozszerzane przez użytkownika o własne kalkulacje. Wbudowane metryki to zestaw standardowych obliczeń na danych tabeli, takich jak row count, min value, max value, null count itd. Metryki mogą być później testowane w celu wykrycia problemów – re_data dostarcza bibliotekę gotowych asserts. Wszystkie wyniki testów są przechowywane i mogą być później analizowane w celu znalezienia problemów z danymi.

Wersja 2:
[Konfiguracja modelu dbt z testami re_data: schema.yml]

Dzięki re_data możemy także wygenerować UI z szczegółowymi informacjami:

  • alerts z problemami z danymi lub zmianami w schema
  • data lineage z dodatkowymi informacjami o anomaliach
  • tests history
  • tabele ze szczegółami metryk i testów powiązanych z nimi

Bardziej enterprise’owym rozwiązaniem jest re_cloud. To cloud-based solution, które może zintegrować wszystkie wyniki re_data w jednym miejscu. re_cloud może integrować się z wieloma rozwiązaniami jak: BigQuery, Redshift, Snowflake, dbt, GreatExpectations i więcej. Może być pojedynczym punktem monitoringu, gdzie użytkownicy z różnych zespołów mogą sprawdzać raporty i alerty.

Airflow

Airflow to narzędzie do orchestration napisane w pythonie. Ponieważ jest wysoce konfigurowalne (można dodawać własny kod python jako plugins), możemy dodać dowolną funkcjonalność, jakiej potrzebujemy. Dzięki Airflow możemy tworzyć processing workflows, które wykonują potrzebne kroki transformation w wybranym harmonogramie.

Podsumowanie

Kombinacja dbt, re_data i Airflow daje nam:

  • Praca jest rozdzielona między wyspecjalizowane zespoły, z większą jasnością kto za co odpowiada
  • Dane są wiarygodne dzięki business i data quality checks, wdrożonym z ciągłym monitoringiem i alertowaniem
  • Narzędzia mogą być rozszerzane o inne „bloki” w razie potrzeby, np. można dodać GreatExpectations do testowania danych wejściowych
  • Proces developmentu jest iteracyjny i przyrostowy, z odpowiednią kontrolą wersji

Stanowa vs. bezstanowa: co wybrać?

Dostosowywanie duzych modeli jezykowych dla biznesu

Airflow  2.0: Poprawa wydajności z Smart Sensors.

Share this post
DevOps
Robert Michalak
MORE POSTS BY THIS AUTHOR
Robert Michalak

Curious how we can support your business?

TALK TO US