Functional data engineering
Il paradigma di Maxime Beauchemin che applica i principi della programmazione funzionale alle pipeline batch: funzioni pure, idempotenza, tempo come dato esplicito.
Il functional data engineering è un paradigma teorizzato da Maxime Beauchemin, data engineer e creatore di Apache Airflow, nell’articolo “Functional Data Engineering: A Modern Paradigm for Batch Data Processing” (Medium, 2017). L’idea è applicare i principi della programmazione funzionale, modularità, determinismo, funzioni pure senza stato mutabile, alle pipeline batch: una pipeline diventa una funzione pura che, dato lo stesso input, produce sempre lo stesso output, senza effetti collaterali nascosti e senza dipendere dallo stato globale del sistema.1
La traduzione in plain english
Sahar Massachi cita esplicitamente l’articolo di Beauchemin come fonte intellettuale della serie “Stop using Slowly-changing Dimensions!” su DataExpert.io, e ne dichiara il limite: “I love Max, but that article is not helpful to the majority of people who could learn from it”. La serie, a cui Massachi dice di aver lavorato per sette anni, è il tentativo di tradurre il paradigma in linguaggio piano, perché un argomento teorico diventi pratica diffusa.1
Cosa significa in pratica: idempotenza
La Parte 2 della serie traduce “funzionale” in una definizione operativa, prendendo in prestito due condizioni dalla programmazione funzionale classica: stesso input, stesso output, ogni volta; e nessuno stato mutabile, nessuna “variabile magica segreta” da cui il risultato dipenda. Per una pipeline di dati questo significa essere idempotente: eseguita una volta o mille, sullo stesso giorno di input, produce lo stesso risultato.2
L’implementazione concreta è il date stamping:2
- i dati più raw non si cancellano mai: solo append con datestamp;
- le pipeline funzionano identiche in modalità daily run e in modalità backfill;
- un bug si corregge riscrivendo la logica e rieseguendo: il dato corretto sovrascrive quello sbagliato nelle partizioni interessate;
- il time travel è incorporato: si filtra la
dsche serve.
La conseguenza pratica più visibile è sul backfilling, che smette di essere una catena sequenziale con codebase dedicata e diventa un’esecuzione parallela della stessa pipeline giornaliera. L’anti-pattern simmetrico è la dipendenza dal giorno precedente (depends_on_past=True in Airflow): reintroduce lo stato nascosto che il paradigma elimina.2
Il rapporto con le Slowly Changing Dimensions
Nella lettura di Massachi, le Slowly Changing Dimensions Type-2 sono il tentativo di gestire il tempo come stato mutabile: righe da “chiudere” e aggiornare quando il dato cambia. Il paradigma funzionale rovescia l’impostazione: il tempo è un dato esplicito, ogni snapshot giornaliero è una funzione pura del proprio input, e la storia si interroga per filtro invece che per ricostruzione. Ciò che rende economicamente sostenibile questa scelta è il crollo dei costi di storage dopo il 2015: il paradigma spende spazio per comprare semplicità.2
Perché conta
Il paradigma funzionale è il “perché” dietro la maggior parte delle prescrizioni pratiche della serie: SQL come lingua franca perché dichiarativo e parallelizzabile, ELT perché separa il caricamento dalla trasformazione, snapshot giornalieri perché rendono il tempo esplicito, backfill come bottone perché non c’è stato nascosto. Capire il principio, argomenta Massachi, permette di decidere bene nei casi che le regole pratiche non coprono. Airflow, creato dallo stesso Beauchemin, è lo strumento che realizza il paradigma: schedula pipeline idempotenti e tratta i backfill come cittadini di prima classe.2
Voci correlate
- Date stamping — la tecnica pratica che realizza il paradigma
- Backfilling — l’operazione che l’idempotenza rende banale
- Slowly Changing Dimensions — la pratica che il paradigma supera
- Pipeline (data engineering) — le pipeline come funzioni pure
- Common Table Expressions — le “funzioni pure” dentro il SQL
- Data warehouse — il sistema a cui il paradigma si applica
- Portale: Data engineering
Bibliografia e sitografia
- Maxime Beauchemin, Functional Data Engineering: A Modern Paradigm for Batch Data Processing, Medium, 2017.
- Sahar Massachi, The data warehouse setup no one taught you (Stop using Slowly-changing Dimensions! Part 1), DataExpert.io, 24 ottobre 2025. blog.dataexpert.io
- Sahar Massachi, SCD-2 considered harmful! (Stop using Slowly-changing Dimensions! Part 2), DataExpert.io, 4 novembre 2025. blog.dataexpert.io