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 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.
Automatyzowana transformacja danych
dbt umożliwia specjalistom ds. danych iteracyjne tworzenie modeli danych i automatyzację transformacji danych. Użytkownicy modelują 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. Z tego powodu 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.
Bezpłatna konsultacja
Chcesz dowiedzieć się więcej? Zastanawiasz się, w jaki sposób takie rozwiązanie może pomóc Twojej firmie? A może potrzebujesz szkolenia z tego zakresu? Umów się na bezpłatną konsultację i porozmawiajmy na interesujący Cię temat.
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 ułatwiają zarządzanie kodem.
- Niski próg wejścia – jeżeli w naszej organizacji już funkcjonuje oparta na SQL hurtownia danych, 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 wielokrotnie odtworzyć modele danych w różnych środowiskach, 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.
- 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 to mamy dostępną opcję transformacji danych, a więc możemy te narzędzia ze sobą zintegrować. 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.
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.