Blog
1.2.2022

dbt – transformacja danych

Spis treści:
Tagi:
No items found.
Klient:
Autor:

dbt (od “data build tool,” tylko małe litery) to narzędzie typu open-source umożliwiające przekształcenia danych, w miejscu ich przechowywania. Transformacja danych przebiega w hurtowniach, takich jak Snowflake, BigQuery, Redshift, Databricks czy Postgres. dbt odpowiada za „T” czyli transformację danych w procesie ELT. dbt nie jest kompletnym narzędziem do procesów migracji, ale znajdzie zastosowanie wszędzie tam, gdzie korzystamy z bazy danych opartej na SQL. Patrząc na wzrost popularności dbt za oceanem, warto się przyjrzeć dlaczego to narzędzie spotyka się z tak dobrym odbiorem.

Dlaczego dbt zmienia myślenie o integracji danych?

Firmy mają do dyspozycji wiele alternatywnych programów, z których mogą korzystać analitycy, aby wyodrębniać i ładować dane oraz przeprowadzać analizy. Jednakże faza transformacji nadal wymaga specjalistycznej wiedzy programistycznej lub kupowania zewnętrznych narzędzi. Aby przekształcić dane, potrzebujesz inżyniera danych (data engineer) lub administratora bazy danych, który wie, jak działają relacyjne bazy danych. Transformacja danych wykonywana przez administratora czy inżyniera, nie musi być już procesem ręcznym, konstruowanym od nowa w każdym projekcie.

inzynieria analityki w dbt
Źródło: dbt

Automatyzowana transformacja danych

dbt umożliwia specjalistom ds. danych iteracyjne tworzenie modeli danych i automatyzację transformacji danych. Użytkownicy modelują swoje dane za pomocą instrukcji SQL SELECT, tworzą relacje i zależności między modelami, a następnie materializują te modele jako tabele i widoki w hurtowni danych. Stamtąd przekształcenie modeli w analizę Business Intelligence jest proste.

Czym jest modelowanie danych?

Podobnie jak w przypadku analityki danych, modelowanie danych to proces porządkowania danych, pochodzących z różnych źródeł. Oznacza to przekształcanie tabel z różnych schematów lub nawet baz danych w pojedynczy widok lub tabelę opisującą system lub proces biznesowy. Po modelowaniu danych znacznie łatwiej jest czerpać z nich wartość w systemie raportowania Business Intelligence, w postaci raportów lub pulpitów nawigacyjnych, albo jako podstawę do analiz predykcyjnych lub preskryptywnych.

Przekształcanie danych w dbt

Transformacja danych w dbt jest możliwa na dwa sposoby. Pierwszy jest darmowy, poprzez linię komend (CLI), natomiast drugi – dbt Cloud – to hostowane przez dbt Labs środowisko chmurowe, wyposażone w możliwości harmonogramowania, CI/CD, IDE, monitoring i alerty.

Dbt pozwala na korzystanie ze wszelkich dobrych praktyk programistycznych, takich jak stosowanie się do zasady DRY (Don’t Repeat Yourself), wersjonowanie kodu czy testowanie.

Podstawowe pojęcia związane z dbt

  • project – folder zawierający pliki związane z projektem dbt
  • model – zapytanie SELECT definiujące transformacje danych
  • materialization – sposób materializacji modelu, widok lub tabela
  • seed – pliki .csv, które mogą być ładowane do hurtowni wraz z uruchomieniem
  • snapshot – implementacja wolnozmieniających się wymiarów typu 2
  • exposure – umożliwiają opisanie dalszego wykorzystania projektu dbt, głównie w celach dokumentacyjnych
  • test – zapytania .sql traktowane jako asercje
  • macro – fragmenty kodu, które mogą być wykorzystane wielokrotnie (np. jako funkcje)
  • hook – dodatkowe fragmenty kodu SQL (takie jak np. nadawanie uprawnień) dostępne do konfiguracji na dowolnym etapie budowy modeli

Dlaczego warto wdrożyć dbt?

Przyjrzymy się paru powodom, dla których warto rozważyć wdrożenie dbt w procesach ELT w Twojej organizacji:

Łatwość obsługi – dbt nie wymaga znajomości języka programowania. Wszelkie transformacje definiujemy w języku SQL wspomagając się dostępnymi szablonami Jinja, takimi jak pętle, zmienne czy makra, które pozwolą nam ułatwić zarządzanie naszym kodem.

Niski próg wejścia – jeżeli w naszej organizacji już funkcjonuje oparta na SQL hurtownia danych, nic prostszego – wystarczy wykorzystać istniejące zapytania i swobodnie można wdrożyć dbt

Możliwość odseparowania środowisk – dbt w prosty sposób poprzez pliki konfiguracyjne .yml pozwala na odizolowanie kilku środowisk (np. produkcyjnego i testowego) w ramach jednej hurtowni

Elastyczny model danych – narzędzie pozwala na obsługę wielu technik modelowania danych, takich jak wolnozmieniające się wymiary czy backfill danych w przypadku zmiany struktury

Przenośność – dzięki plikom konfiguracyjnym .yml oraz funkcjom typu ref(‘’) lub source(‘’) możemy w prosty sposób odtworzyć modele danych w różnych środowiskach wielokrotnie bez potrzeby najmniejszych zmian w kodzie.

Testowanie – dbt posiada wbudowane narzędzia do testowania jakości danych. Testy również są definiowane w formie zapytań SQL, traktowane jako asercje. Używając zewnętrznych narzędzi lub dbt Cloud możemy zautomatyzować nasze testy, dzięki czemu będziemy mieć zawsze pewność, że nasze dane są wiarygodne.

Kod wielokrotnego użytku – dbt pozwala na definicję tzw. makr, które zachowują się jak funkcje, a więc przyjmują argumenty i możemy je wykorzystać wielokrotnie w różnych modelach, a ponadto pozwala na instrukcji takich jak pętle, czy instrukcje if

Automatyczna dokumentacja – dbt, opierając się na naszych zapytaniach SQL potrafi samoistnie wygenerować dokumentację dotyczącą modeli danych, a także procesów transformacji, co pozwala na prześledzenie rodowodu danych w formie grafu

dag

Wsparcie dla systemów kontroli wersji i CI/CD – projekty dbt świetnie nadają się do pracy z systemami kontroli wersji, natomiast platformy takie jak GitHub Actions pozwolą nam na zautomatyzowanie naszych przepływów

Integracja z Fivetran

Jeżeli korzystamy z pakietu Standard w Fivetran mamy dostępną opcję transformacji danych, a więc możemy obydwa narzędzia zintegrować ze sobą. Wszystko czego potrzebujemy to repozytorium git (np. w serwisie GitHub) i skrypty .sql.

Całość projektu należy umieścić w wyżej wymienionym repozytorium git wraz ze specjalnym plikiem deployment.yml, dzięki któremu możemy zdefiniować tzw. job’y, a więc komendy jakie dbt powinno wykonywać wraz z każdym uruchomieniem. Do dyspozycji mamy również harmonogram operacji w formacie CRON, co pozwala na zautomatyzowanie przepływów danych oraz testów. Dodatkowo Fivetran domyślnie wyświetla status każdego zadania, a także loguje historyczne.

logi dbt

Wykorzystanie Fivetrana z dbt tworzy łatwe w obsłudze, kompletne narzędzie ELT. Fivetran odpowiada za procesy Extract-Load, natomiast krok Transform definiujemy w projekcie dbt.

,

Przeczytaj inne
case studies.

Przeczytaj inne posty.

Zobacz inne
webinary.

No items found.