Wprowadzenie
Wraz z ciągłym wzrostem rozmiaru i złożoności ekosystemów danych, rośnie potrzeba budowania odpornych data pipelines z szybkim time to market. To zachęca firmy do sięgania po nowe metodologie dla swoich procesów ETL, takie jak deklaratywne pipelines, które pozwalają deweloperom skupić się na definiowaniu docelowego stanu danych bez konieczności martwienia się o kolejność wykonywania zadań.
Wraz z wydaniem Delta Live Tables, Databricks dąży do zastosowania tego podejścia na swojej platformie i dostarczenia rozwiązania do przetwarzania danych, które obsługuje logikę transformacji za użytkownika, a także oferuje inne przydatne funkcje, takie jak automatyczne sprawdzanie jakości danych, monitoring i obserwowalność.
Deklaratywne podejście do data pipelines
Stosowanie podejścia deklaratywnego nie jest unikalne dla data engineering. W DevOps narzędzia takie jak Kubernetes i Terraform zrewolucjonizowały praktyki wdrożeniowe, wprowadzając koncepcję Infrastructure as Code, która pozwala inżynierom definiować docelowy stan infrastruktury i środowisk zamiast określania każdego kroku operacyjnego. Podobnie deklaratywne pipelines pozwalają inżynierom określić końcowy stan bazy danych, pozostawiając działania operacyjne systemowi.
Tradycyjnie pipelines ETL są tworzone przez jawne określenie kolejności wykonywania zadań, skupiając się na relacjach między zadaniami, aby zapewnić spójność wyników, brak utraty danych i unikanie duplikatów.
Typowy proces można zdefiniować w następujących krokach:
- Pobierz pliki ze storage.
- Załaduj dane do staging tables.
- Wykonaj transformacje na danych, łącząc dane z różnych źródeł.
- Załaduj do finalnej destynacji i wykonaj data quality checks.
Chociaż to imperatywne podejście jest elastyczne i dobrze znane, może być trudne do skalowania i utrzymania wraz ze wzrostem złożoności pipeline, ponieważ deweloper musi ręcznie odzwierciedlać data lineage, co utrudnia optymalizację pod kątem równoległości, skalowania i minimalizacji kosztów.
Deklaratywne pipelines nie wymagają jawnego określania kolejności transformacji. Autor pipeline określa, jak powinien wyglądać końcowy stan danych, a silnik pipeline automatycznie ustala rzeczywiste kroki, tj. kolejność transformacji, harmonogramowanie zadań, zarządzanie zależnościami, alokację zasobów i optymalizację. Teoretycznie to podejście zapewnia skalowalność i prostotę w coraz bardziej złożonych rozwiązaniach danych.
Ta metoda może być świetnym wyborem w wielu przypadkach, ale decydując się na framework deklaratywny, należy wziąć pod uwagę mniejszą elastyczność, ponieważ takie rozwiązania ukrywają szczegóły operacyjne, co może utrudniać debugowanie i rozwiązywanie problemów. Dodatkowo, vendor lock-in może być problemem ze względu na zastrzeżoną składnię lub integracje specyficzne dla platformy.
Wprowadzenie do Delta Live Tables
Delta Live Tables (DLT) to deklaratywny framework ETL do budowania skalowalnych i niezawodnych pipelines do przetwarzania danych. Pozwala użytkownikom skupić się na transformacjach i docelowych strukturach danych, automatycznie zarządzając orkiestracją, infrastrukturą obliczeniową, jakością danych i obsługą błędów.
Czym różni się Delta Live Tables od Delta tables?
Delta table to domyślny format tabeli danych w Databricks, który rozszerza format plików parquet, umożliwiając transakcje ACID. Delta Live Tables pozwala natomiast opisać, jak dane przepływają między tymi tabelami, tworząc je i zarządzając aktualizacjami.
DLT używa następujących datasetów do utrzymania wyników deklaratywnych zapytań:
- Streaming table – Delta table z obsługą streamingu i incremental data processing. Zawsze definiowana względem źródła danych, które rośnie w sposób ciągły lub przyrostowy.
- View – logiczny dataset obliczany przy każdym zapytaniu. Przydatny do dzielenia dużych zapytań na mniejsze.
- Materialized view – widok z preobliczonymi wynikami, odświeżany przy każdej aktualizacji pipeline.
Delta Live Tables używa tych datasetów do definiowania pipeline, który jest główną jednostką uruchamiania workflow przetwarzania danych. Pipeline jest zwykle zdefiniowany w pliku źródłowym (notebook lub plik python), który zawiera wszystkie definicje streaming tables i materialized views zadeklarowane w SQL lub pythonie. Po utworzeniu kodu pipeline z logiką, należy utworzyć sam pipeline, podając jego konfigurację.
Kluczowe funkcje Delta Live Tables:
- Automatyczne zarządzanie zależnościami i wizualizacja pipeline
- Wymuszanie jakości danych (data quality enforcement)
- Incremental i streaming data processing
- Monitoring i obserwowalność
Przykład pipeline w DLT
W tym rozdziale zostanie utworzony przykładowy pipeline Delta Live Tables, który pokazuje możliwości frameworka. Przykład używa danych z /databricks-datasets na DBFS, konkretnie retail-org dataset. Proces czyta dane o zamówieniach, łączy je z tabelą produktów i wyciąga listę najlepiej sprzedających się kategorii produktów.



Możemy również sprawdzić nasze oczekiwania DQ zdefiniowane w tabeli product_sales_categorised. Nie ma awarii, ponieważ wszystkie identyfikatory produktów z sales_orders były dostępne w tabeli produktów.

Deklaratywne data pipelines upraszczają tworzenie i utrzymanie złożonych workflow, pozwalając zespołom danych skupić się na analizie zamiast na infrastrukturze. Delta Live Tables to przykład takiego podejścia, umożliwiający tworzenie niezawodnych pipelines w pythonie lub SQL, z automatyczną orkiestracją, kontrolą jakości danych, przetwarzaniem przyrostowym i monitoringiem.
Twitter streaming danych przez pub sub i beam