🎯 Definicja
Software-Defined Assets (SDA) to rewolucja w orkiestracji (promowana przez Dagster).
Zamiast pisać Taski (“Uruchom skrypt A, potem skrypt B”), definiujesz Assety (Dane).
Piszesz kod, który mówi: “To jest tabela Clients. Ona powstaje z pliku raw_clients.csv”.
Orkiestrator sam wie, kiedy i co uruchomić, żeby Clients było aktualne.
🔑 Kluczowe punkty
- Deklaratywność: Mówisz CO chcesz mieć (Tabelę), a nie JAK to zrobić (Kroki).
- Lineage jako Kod: Relacje między assetami są wprost w kodzie (
@asset(deps=[raw_clients])). - Wersjonowanie: Wiesz dokładnie, która wersja kodu wyprodukowała którą wersję danych.
📚 Szczegółowe wyjaśnienie
W Airflow masz DAG Zadań: Task A → Task B. Nie wiesz, co one robią z danymi, dopóki nie przeczytasz kodu.
W Dagsterze masz Graf Assetów: Tabela A → Tabela B. Widzisz przepływ danych na pierwszy rzut oka.
To łączy świat kodu (Python/SQL) ze światem danych (Katalog).
💡 Przykład zastosowania
Kod w Dagsterze:
@asset
def raw_orders():
return read_csv("orders.csv")
@asset(deps=[raw_orders])
def daily_sales(raw_orders):
return raw_orders.groupby("date").sum()System wie, że daily_sales zależy od raw_orders. Jeśli raw_orders się zmieni, system wie, że daily_sales jest nieaktualne (stale) i trzeba je przeliczyć.
📌 Źródła
- Dagster Docs - Software-Defined Assets.
👽 Brudnopis
- To przyszłość Data Engineeringu. Odchodzimy od tępego “uruchamiania skryptów” w stronę “zarządzania stanem danych”.