🎯 Definicja

Funkcjonalny Data Engineering to filozofia budowania pipeline’ów danych inspirowana programowaniem funkcyjnym. Traktuje przetwarzanie danych jako czystą funkcję: Output = f(Input). Kluczowe zasady to Immutability (nie zmieniaj danych, twórz nowe wersje) i Idempotency (wielokrotne uruchomienie tego samego procesu daje ten sam wynik).

🔑 Kluczowe punkty

  • Reprodukowalność: Zawsze możesz odtworzyć stan tabeli z przeszłości, przeliczając dane funkcją.
  • Idempotencja: Jeśli pipeline wywali się w połowie, możesz go bezpiecznie puścić jeszcze raz od początku.
  • Nowoczesne narzędzia: Apache Airflow, dbt, Dagster – zostały zbudowane na tych zasadach.

📚 Szczegółowe wyjaśnienie

W starym stylu (Proceduralnym): “Weź tabelę A, skasuj wiersze z błędami, nadpisz kolumnę X”. (Ryzykowne! Jak coś pójdzie nie tak, dane stracone). W stylu Funkcjonalnym: “Weź tabelę A (tylko do odczytu), przefiltruj, zapisz wynik jako Tabela B”. Tabela A pozostaje nienaruszona. Tabela B jest wynikiem deterministycznej transformacji.

💡 Przykład zastosowania

Partycjonowanie w Data Lake. Każdy dzień to osobny folder (partycja). Przetwarzanie dnia 2024-01-01 to funkcja, która czyta Raw/2024-01-01 i zapisuje Silver/2024-01-01. Jeśli odkryjesz błąd w kodzie, kasujesz Silver/2024-01-01, poprawiasz kod i puszczasz funkcję jeszcze raz.

📌 Źródła

  • “Functional Data Engineering” - Maxime Beauchemin (twórca Airflow i Superset).

👽 Brudnopis

  • Zasada: “Compute is cheap, Storage is cheap, Human time is expensive”. Funkcjonalne podejście zużywa więcej zasobów (więcej kopii danych), ale oszczędza masę czasu przy debugowaniu.