Il panorama degli strumenti ETL, acronimo di extract, transform, load, che si presenta estremamente articolato e multiforme, offre una gamma eterogenea di soluzioni che si distinguono notevolmente per le loro specifiche funzionalità, i vincoli operativi intrinseci, i modelli di licenza proposti e le implicazioni economiche complessive.
Fondamentale quindi operare una selezione oculata della soluzione più idonea a rispondere in maniera puntuale alle esigenze specifiche di ogni contesto progettuale, al fine di valutare i benefici e le limitazioni intrinseche a ciascuna alternativa, soppesando attentamente la loro aderenza ai requisiti progettuali, la compatibilità con l’infrastruttura tecnologica esistente o prevista, il livello di competenze specialistiche del team incaricato e le risorse finanziarie allocate per il progetto.
L’obiettivo di fondo è naturalmente quello di pervenire a una decisione pienamente informata, in grado di assicurare l’efficacia e l’efficienza ottimali dei processi di integrazione dei dati, garantendo al contempo la sostenibilità e la scalabilità della soluzione adottata nel tempo.
Indice degli argomenti
Classificazione degli strumenti ETL
E’ possibile preliminarmente classificare gli strumenti ETL principali nelle seguenti categorie:

- Open Source: questi strumenti sono generalmente gratuiti da scaricare e utilizzare, offrendo grande flessibilità e il supporto di una vasta community. Tuttavia, richiedono spesso un livello di competenza tecnica più elevato per la configurazione, la gestione dell’infrastruttura sottostante e la manutenzione. Il supporto tecnico formale è tipicamente assente o limitato.
- Esempi: Apache NiFi, Hadoop (framework che include componenti utilizzabili per ETL), Apache Airflow (più orientato all’orchestrazione, ma usato per ETL), Airbyte (nella sua versione Core/Open Source).Vantaggi: Costo di licenza nullo, nessuna dipendenza da un vendor specifico, personalizzazione spinta.
- Svantaggi: Curva di apprendimento potenzialmente ripida, necessità di gestire l’infrastruttura, supporto basato sulla community, TCO (Total Cost of Ownership) non nullo (costi di personale e infrastruttura).
- Commerciali (On-Premise/Cloud): si tratta di soluzioni software proprietarie, offerte da vendor specializzati, che possono essere installate on-premise o utilizzate come servizi cloud. Offrono tipicamente supporto tecnico dedicato, interfacce utente più raffinate, funzionalità enterprise avanzate (governance, sicurezza, data quality) e, in alcuni casi, una curva di apprendimento iniziale più dolce grazie a componenti pre-costruiti e documentazione strutturata.
- Esempi: Informatica PowerCenter (storicamente on-premise) / Informatica Intelligent Data Management Cloud (IDMC), Talend Cloud (la versione Open Studio è stata discontinuata ), Astera Data Stack, Domo, Microsoft SQL Server Integration Services (SSIS).Vantaggi: Supporto tecnico garantito, funzionalità enterprise, potenziale riduzione del time-to-market per progetti complessi.
- Svantaggi: Costi di licenza o sottoscrizione, possibile vendor lock-in, minore flessibilità rispetto all’open source.
- Servizi Cloud Integrati (PaaS/SaaS): sono servizi ETL offerti direttamente dai grandi provider cloud (AWS, Azure, GCP) come parte integrante delle loro piattaforme. Sono progettati per integrarsi nativamente con gli altri servizi dello stesso provider (storage, database, analytics). Spesso offrono modelli serverless o auto-scalanti e costi basati sul consumo effettivo (pay-per-use).
- Esempi: AWS Glue, Azure Data Factory (ADF), Google Cloud Dataflow.Vantaggi: Integrazione profonda con l’ecosistema cloud, scalabilità gestita dal provider, modelli di costo flessibili.
- Svantaggi: Forte legame con l’ecosistema del provider specifico (vendor lock-in a livello cloud), curva di apprendimento specifica del servizio, potrebbero mancare connettori per sorgenti esterne all’ecosistema.
- ETL/ELT Cloud-Native (SaaS): una categoria emergente di strumenti, spesso focalizzati sull’approccio ELT, nati specificamente per l’era dei cloud data warehouse. Si concentrano sulla semplicità d’uso, offrendo vaste librerie di connettori pre-costruiti (soprattutto per applicazioni SaaS) e un’elevata automazione del processo di estrazione e caricamento. La trasformazione viene spesso delegata a strumenti esterni come dbt, da eseguire dopo il caricamento nel data warehouse.
- Esempi: Fivetran, Airbyte Cloud, Stitch, Hevo Data, Matillion, DataChannel, Estuary.Vantaggi: Estrema facilità d’uso e rapidità di configurazione, manutenzione dei connettori gestita dal vendor, ideale per integrare dati da sorgenti SaaS comuni.
- Svantaggi: Modelli di costo basati sull’utilizzo (es. Monthly Active Rows – MAR) che possono diventare molto onerosi con alti volumi di dati o molte connessioni, minore controllo e flessibilità sulla fase di trasformazione in-flight, focus principale su ELT.
Presentazione dei principali Tool ETL

- Apache NiFi – Piattaforma open source potente per l’automazione e la gestione dei flussi di dati in tempo reale. Offre un’interfaccia utente visuale drag-and-drop per la progettazione dei flussi, un controllo granulare sul routing dei dati e funzionalità avanzate come il data provenance. È altamente scalabile. Tuttavia, la sua flessibilità e ricchezza di funzionalità comportano una curva di apprendimento significativa per scenari complessi. È gratuito.
- Talend – Storico player nel mercato ETL, ora parte di Qlik. Offre una piattaforma completa per l’integrazione dati, la qualità e la governance, disponibile principalmente come servizio cloud. È noto per la sua interfaccia grafica user-friendly e un’ampia gamma di connettori. La versione open source (Talend Open Studio) è stata discontinuata. Richiede la costruzione di pipeline specifiche per ogni sorgente e presenta una curva di apprendimento per la piena padronanza. Il modello di prezzo è basato su sottoscrizione.
- Informatica (PowerCenter/Data Management Cloud) – Considerato un leader di mercato nelle soluzioni di data integration enterprise. Offre una suite completa per integrazione, qualità e governance dei dati, disponibile sia on-premise (PowerCenter) che cloud (IDMC). È una soluzione robusta, scalabile e ricca di funzionalità, ma la sua complessità e il modello di costo enterprise la rendono più adatta a grandi organizzazioni. L’interfaccia è generalmente considerata user-friendly, ma la curva di apprendimento è ripida.
- AWS Glue – Servizio ETL completamente serverless offerto da Amazon Web Services. Si integra perfettamente con l’ecosistema AWS (S3, Redshift, RDS, etc.). Offre sia un editor visuale (Glue Studio) per la creazione di job low-code, sia la possibilità di scrivere script custom in Python o Scala (utilizzando PySpark). Include funzionalità come i crawler per la scoperta automatica dello schema. Il modello serverless elimina la necessità di gestire l’infrastruttura e il costo è basato sul consumo effettivo (DPU-Hour). Le sfide includono i tempi di avvio a freddo (cold start), la complessità del debugging e una curva di apprendimento se non si ha familiarità con Apache Spark.
- Azure Data Factory (ADF) – Il servizio ETL/ELT cloud nativo di Microsoft Azure. Offre una forte integrazione con altri servizi Azure come Blob Storage, SQL Database e Synapse Analytics. Fornisce un’interfaccia utente visuale per la creazione di pipeline (orchestrazione) e data flows (trasformazioni complesse basate su Spark). Supporta anche l’esecuzione di codice custom e l’integrazione con altri motori di calcolo (es. Databricks). È scalabile e opera con un modello di costo pay-per-use. Alcuni utenti trovano l’interfaccia meno intuitiva rispetto ad altre, e la curva di apprendimento può essere significativa per utenti non tecnici.
- Fivetran – Piattaforma ELT basata su SaaS, rinomata per la sua estrema semplicità d’uso e l’ampia libreria di connettori pre-costruiti (>500). Automatizza completamente il processo di estrazione e caricamento dei dati nel cloud data warehouse. Le trasformazioni dei dati vengono gestite post-caricamento, tipicamente attraverso l’integrazione con dbt. Il suo modello di prezzo è basato sul numero di Monthly Active Rows (MAR) calcolato per ogni singola connessione (a partire da Marzo 2025), il che può portare a costi elevati per sorgenti dati ad alto volume o per un numero elevato di connettori.
- Airbyte – Piattaforma di integrazione dati che offre sia una versione Open Source che una Cloud (SaaS). Vanta una vasta e crescente libreria di connettori (>300), alimentata anche dalla community open source. Offre flessibilità supportando sia approcci ETL che ELT e si integra nativamente con dbt per le trasformazioni post-load. È considerata facile da usare, anche se la personalizzazione avanzata potrebbe richiedere più competenze tecniche rispetto a Fivetran. La versione Cloud ha un modello di prezzo basato su crediti, legati ai GB di dati (per DB/File) o ai milioni di righe (per API) processati.
Tabella di confronto sintetico
La seguente tabella offre una visione d’insieme per un confronto rapido tra gli strumenti discussi, basandosi su fattori chiave come il modello di costo, la tipologia e la facilità d’uso percepita.
Nome Strumento | Tipologia | Modello di Costo Principale | Punti Chiave | Facilità d’Uso (Percepita) | Curva di Apprendimento (Percepita) |
Apache NiFi | Open Source | Gratuito | Controllo Flusso Dati, UI Visuale, Scalabilità, Data Provenance | Media | Ripida (per mastery) |
Talend (Cloud) | Commerciale (Cloud) | Subscription | Piattaforma End-to-End, UI Grafica, Ampia connettività | Alta | Media/Ripida |
Informatica (PowerCenter/Data Management Cloud) | Commerciale (Enterprise) | Subscription Enterprise | Leader di mercato, Data Quality/Governance, Scalabilità | Media | Ripida |
AWS Glue | Cloud Service (AWS) | Pay-per-use (DPU-Hour) | Serverless, Integrazione AWS, Visual/Scripting | Media | Media/Ripida (no Spark) |
Azure Data Factory (ADF) | Cloud Service (Azure) | Pay-per-use (Activity/DIU/vCore) | Integrazione Azure, Visual Pipelines & Data Flows, Scalabilità | Media | Media/Ripida (no tech) |
Fivetran | SaaS ELT | Pay-per-use (MAR per conn.) | Estrema facilità d’uso, Connettori ++, Alta automazione | Alta | Bassa (base) / Media (dbt) |
Airbyte (Cloud/OS) | SaaS ELT / Open Source | Pay-per-use (Crediti) / Gratuito | Flessibilità ETL/ELT, Open Source, Connettori ++, Integrazione dbt | Alta | Bassa/Media |
Questa tabella rappresenta uno strumento iniziale per orientarsi. La scelta finale dipenderà da un’analisi più approfondita delle esigenze specifiche, del budget e delle competenze disponibili, come discusso nelle sezioni successive.
Come utilizzare i tool ETL
Questa sezione illustra, con un approccio pratico, come eseguire le operazioni ETL fondamentali utilizzando alcuni degli strumenti più rappresentativi discussi in precedenza. L’obiettivo non è fornire un manuale completo per ogni strumento, ma dimostrare i principi operativi e le configurazioni tipiche per l’estrazione da diverse sorgenti, la trasformazione dei dati e il caricamento verso destinazioni comuni.
Apache NiFi
Apache NiFi si distingue per la sua interfaccia visuale basata su flussi e processori, che offre un controllo granulare sul percorso dei dati.

[da https://nifi.apache.org/docs/nifi-docs/html/user-guide.html]
- Estrazione:

- Da File System – Il processore GetFile è comunemente usato per monitorare una directory e ingerire nuovi file.
Le configurazioni chiave includono Input Directory (la cartella da monitorare), File Filter (un’espressione regolare per selezionare i file, es. .*\.csv$), e Keep Source File (impostato a false per eliminare il file dopo l’ingestione).
In alternativa, si può usare ListFile (che elenca i file senza leggerne il contenuto) seguito da FetchFile (che legge il contenuto basandosi sull’output di ListFile).
Un esempio pratico è configurare GetFile per prelevare file CSV da una cartella di input.
- Da Database (via JDBC) – Per estrarre dati da database relazionali, si usano i processori QueryDatabaseTable o ExecuteSQL. Entrambi richiedono la configurazione di un DBCPConnectionPool Controller Service, che gestisce le connessioni JDBC al database.
Questo servizio richiede l’URL JDBC del database, il nome della classe del driver JDBC (es. com.mysql.cj.jdbc.Driver), le credenziali di accesso e il percorso del file JAR del driver (che deve essere copiato nella directory lib di NiFi).
QueryDatabaseTable | ExecuteSQL |
è ideale per l’estrazione incrementale: si specifica Table Name, opzionalmente Columns to Return, e soprattutto Maximum-value Column Names (es. una colonna last_updated_timestamp o un ID auto-incrementante) per permettere al processore di ricordare l’ultimo valore processato e recuperare solo le righe nuove o modificate ad ogni esecuzione. | permette di eseguire query SQL SELECT arbitrarie, specificate nella proprietà SQL select query. È più flessibile ma richiede la gestione manuale dello stato per l’estrazione incrementale (spesso tramite UpdateAttribute per memorizzare l’ultimo valore massimo). |
- Da API REST – Il processore InvokeHTTP è lo strumento principale per interagire con API REST. Si configura HTTP Method (tipicamente GET per l’estrazione), Remote URL (l’endpoint dell’API), e opzionalmente SSL Context Service per HTTPS, proxy, timeout e header (che possono essere impostati dinamicamente dagli attributi del FlowFile in ingresso). La risposta dell’API (es. JSON) diventa il contenuto del FlowFile in uscita. GetHTTP è una versione semplificata specifica per le richieste GET. La gestione della paginazione API richiede spesso logiche di flusso più complesse, usando EvaluateJsonPath per estrarre token/cursori dalla risposta e RouteOnAttribute per creare loop che richiamano InvokeHTTP con l’URL della pagina successiva.
- Trasformazione:

- Trasformazioni JSON (Jolt) – Per manipolare dati JSON, JoltTransformJSON è estremamente potente. Richiede una “Jolt Specification” scritta in JSON che definisce le regole di trasformazione (es. shift per rinominare/spostare campi, modify per cambiarne i valori, remove per eliminarli).
- Scripting Esterno: ExecuteStreamCommand permette di eseguire script esterni (batch, shell, Python, etc.). Si configura il Command Path e Command Arguments, dove gli argomenti possono includere valori dagli attributi del FlowFile (es. ${absolute.path}${filename}). L’output dello script può diventare il contenuto del nuovo FlowFile o essere salvato in un attributo.
- Manipolazioni Base – Per trasformazioni più semplici su dati testuali o attributi, si usano processori come UpdateAttribute (per modificare o aggiungere attributi), ReplaceText (per sostituzioni basate su regex nel contenuto del FlowFile), ExtractText (per estrarre valori dal contenuto e metterli in attributi).
- Caricamento:

- Su File System . PutFile scrive il contenuto del FlowFile in una directory specificata. Le proprietà chiave sono Directory e Conflict Resolution Strategy (cosa fare se il file esiste già: fail, replace, ignore).
- Su Database SQL (via JDBC) – Richiede un DBCPConnectionPool configurato per il data warehouse di destinazione.
- PutSQL esegue statement SQL DML (INSERT, UPDATE, DELETE). Lo statement SQL, definito nella proprietà SQL Statement, può essere parametrizzato usando la NiFi Expression Language per inserire valori dagli attributi del FlowFile (es. INSERT INTO Mytable (col1, col2) VALUES (‘${attribute1}’, ${attribute2})). Si può configurare un Batch Size per migliorare le performance.PutDatabaseRecord è più moderno e adatto per caricare dati strutturati (record-oriented) come JSON o CSV. Richiede un Record Reader (es. JsonTreeReader, CSVReader) per interpretare il contenuto del FlowFile e scrive i record nella tabella specificata (Table Name), gestendo automaticamente la mappatura dei campi e potenzialmente operazioni di upsert (se Upsert Key Columns è specificato).
- Verso Altri Sistemi – NiFi dispone di processori specifici per caricare dati verso una vasta gamma di destinazioni, tra cui Apache Kafka (PublishKafka_0_10), Amazon S3 (PutS3Object), Apache Hive (PutHiveStreaming), Elasticsearch (PutElasticSearchHttp).
- Su Database SQL (via JDBC) – Richiede un DBCPConnectionPool configurato per il data warehouse di destinazione.
L’approccio modulare di NiFi, basato su processori e connessioni, offre grande flessibilità e un eccellente controllo del flusso, inclusa la gestione degli errori tramite le diverse code di relazione (success, failure, retry). Tuttavia, questa stessa flessibilità può portare a diagrammi di flusso complessi e la padronanza delle trasformazioni avanzate (Jolt, scripting) richiede un investimento nell’apprendimento.
Talend (Open Studio / Cloud)
Talend si basa su un’interfaccia grafica Java-based (Eclipse) nella quale i job ETL vengono costruiti assemblando componenti pre-costruiti.

[da talend.com]

- Estrazione:
- Da Database – Il componente principale è tDBInput. Si configura selezionando il Database type (es. MySQL, PostgreSQL, Oracle), fornendo i parametri di connessione (host, porta, utente, password, nome DB) – che possono essere centralizzati nel Metadata Repository per riusabilità – e specificando la query SQL nella proprietà Query o il nome della tabella in Table Name. Lo schema dei dati estratti deve essere definito nel componente (manualmente o importato dal DB).Da File Delimitati – Si utilizza tFileInputDelimited. Le configurazioni essenziali sono Filename (il percorso del file), Row separator (es. “\n”), Field separator (es. “;”, “,”), Header (numero di righe da saltare all’inizio), e la definizione dello Schema delle colonne da estrarre.
- Da API REST – Il componente tRESTClient permette di effettuare chiamate HTTP. Si configura URL, HTTP Method (GET, POST, etc.), Content Type e Accept Type (es. JSON, XML). I parametri di query possono essere aggiunti nella sezione Query parameters, mentre gli header (es. per l’autenticazione Bearer) si aggiungono nella sezione HTTP Headers. Lo schema della risposta attesa (spesso un campo body di tipo String o Document) deve essere definito nello schema di output del componente.
- Trasformazione:

- Mapping Visuale (tMap) – Questo è il componente cardine per le trasformazioni in Talend. Offre un’interfaccia grafica per mappare colonne da uno o più input a uno o più output. Permette di definire join tra flussi di dati, applicare filtri alle righe, e scrivere espressioni (usando Java) per calcolare nuovi campi o trasformare valori esistenti (es. concatenare stringhe, formattare date, eseguire calcoli matematici).
- Componenti Specifici – Talend offre una vasta palette di componenti per trasformazioni specifiche, come tFilterRow (per filtrare righe basate su condizioni), tAggregateRow (per aggregare dati), tSortRow (per ordinare), tConvertType (per cambiare tipi di dato), tReplace (per sostituzioni), etc. Questi componenti vengono concatenati nel flusso del job.
- Expression Builder – All’interno di componenti come tMap, un editor di espressioni permette di scrivere logica di trasformazione custom utilizzando sintassi Java e funzioni predefinite di Talend.
- Caricamento:

- Su Database – Il componente tDBOutput è usato per scrivere dati in un database. Si configura specificando il tipo di database, i parametri di connessione (o usando una connessione dal Repository), il Table name di destinazione, e l’Action on data (Insert, Update, Insert or update, Update or insert, Delete). È fondamentale che lo schema del flusso in input corrisponda alle colonne della tabella target o che il mapping sia definito correttamente.
- Su File – Componenti come tFileOutputDelimited, tFileOutputExcel, tFileOutputJSON permettono di scrivere dati su file nei rispettivi formati, configurando percorso, nome file, delimitatori/formattazione e schema.
L’approccio di Talend, focalizzato sull’interfaccia grafica e sui componenti, mira a semplificare lo sviluppo ETL, specialmente per task comuni. La gestione centralizzata dei metadati è un punto di forza significativo per la manutenibilità e la coerenza dei progetti. La recente discontinuazione della versione Open Source ha però spostato l’ecosistema verso le offerte Cloud a pagamento, modificandone l’accessibilità economica.
Informatica (PowerCenter/Data Management Cloud)
Informatica è una piattaforma enterprise-grade per l’integrazione dei dati, ampiamente utilizzata per la sua robustezza e completezza funzionale. In particolare, PowerCenter è la soluzione tradizionale on-premise, mentre Informatica Intelligent Data Management Cloud (IDMC) offre funzionalità analoghe in un ambiente cloud.

[immagine da informatica.com]
- Estrazione:

- Configurazione Generale – Il processo di estrazione inizia con l’identificazione della sorgente dati (database, file, API, ecc.). In PowerCenter Designer o IDMC, si configurano le connessioni alla sorgente specificando i parametri necessari (server, credenziali, tipo di database, percorso file). Successivamente, si definisce l’oggetto sorgente (tabella, vista, file) e si crea una mapping che definisce il flusso dei dati dalla sorgente.
- Da Database:
- Si utilizzano Source Qualifier transformations nelle mappings di PowerCenter o oggetti sorgente equivalenti in IDMC per definire come i dati vengono letti dal database (es. tabelle specifiche, viste, o query SQL custom). Change Data Capture (CDC): Per l’estrazione incrementale di sole modifiche, Informatica PowerExchange lavora in congiunzione con PowerCenter. Questo approccio cattura le modifiche dai log transazionali di vari database (come Db2, SQL Server, MySQL, Oracle, PostgreSQL, SAP HANA). La configurazione tipica include:
- Pianificazione e configurazione del database sorgente per CDC.Configurazione di PowerExchange (es. Logger, dbmover config file).Creazione di “capture registrations” ed “extraction maps” in PowerExchange Navigator.Importazione della extraction map o della definizione della tabella in PowerCenter/IDMC e configurazione di una sessione CDC (spesso in modalità real-time).
- Si definiscono sorgenti basate su file (flat file come CSV, TXT; file XML; JSON, ecc.) specificando il percorso, il formato del file, i delimitatori, e lo schema dei dati. PowerCenter e IDMC offrono wizard e interfacce per definire queste sorgenti.
- Si utilizzano Source Qualifier transformations nelle mappings di PowerCenter o oggetti sorgente equivalenti in IDMC per definire come i dati vengono letti dal database (es. tabelle specifiche, viste, o query SQL custom). Change Data Capture (CDC): Per l’estrazione incrementale di sole modifiche, Informatica PowerExchange lavora in congiunzione con PowerCenter. Questo approccio cattura le modifiche dai log transazionali di vari database (come Db2, SQL Server, MySQL, Oracle, PostgreSQL, SAP HANA). La configurazione tipica include:
- Da API:
- L’estrazione da API REST/SOAP può essere più complessa in PowerCenter e spesso richiede connettori specifici o l’uso di trasformazioni custom (es. Java Transformation) o tool di terze parti.
- Informatica Cloud (IDMC) offre una gamma più ampia di connettori pre-costruiti per applicazioni SaaS e API.
- Per PowerCenter, strumenti come ZappySys ODBC PowerPack possono fornire un REST API Connector che permette di definire una sorgente ODBC basata su una chiamata API (JSON, XML, CSV). Questo DSN ODBC viene poi utilizzato in Informatica come una sorgente relazionale. La configurazione include l’URL dell’API, l’autenticazione, e la definizione di come i dati della risposta API (es. tramite JSONPath) vengono mappati in una struttura tabellare.
- Da Database:
- Trasformazione:

- Le trasformazioni vengono definite all’interno delle “mappings” in PowerCenter Designer o IDMC, utilizzando una vasta gamma di trasformazioni pre-costruite che possono essere attive (modificano il numero di righe) o passive (operano riga per riga senza alterare il numero di righe).
- Panoramica delle Trasformazioni Comuni:
- Aggregator (attiva): Esegue calcoli aggregati (SUM, AVG, COUNT).
- Data Masking (passiva): Maschera dati sensibili per ambienti non produttivi.
- Expression (passiva): Calcola valori all’interno di una singola riga (es. concatenazione, conversioni di tipo, calcoli matematici).
- Filter (attiva): Filtra le righe in base a una condizione specificata.
- Joiner (attiva): Unisce dati da due sorgenti eterogenee basate su una condizione di join.
- Lookup (attiva/passiva): Cerca dati in un file flat, tabella relazionale, vista o sinonimo.
- Rank (attiva): Seleziona le prime o le ultime N righe in base a un criterio di classificazione.
- Router (attiva): Indirizza le righe a diversi flussi di output in base a condizioni multiple.
- Union (attiva): Unisce dati da più pipeline o rami di pipeline in un unico flusso.
- XML Parser/Generator/Source Qualifier (attive/passive): Per leggere, scrivere e trasformare dati XML.
- Normalizer (attiva): Trasforma righe con colonne multiple-occorrenze in righe separate.
- H2R (Hierarchical to Relational) e R2H (Relational to Hierarchical): Per convertire tra strutture dati gerarchiche (es. JSON, XML) e relazionali.
- Configurazione: Ogni trasformazione ha proprietà specifiche che vengono configurate nell’interfaccia grafica della mapping. Ad esempio, per una trasformazione Filter, si definisce la condizione di filtro; per una Lookup, si specifica la tabella di lookup e la condizione di join.
- Panoramica delle Trasformazioni Comuni:
- Caricamento:

- Configurazione Generale – Similmente all’estrazione, si definiscono oggetti target (destinazione) nelle mappings, specificando la connessione al sistema di destinazione (data warehouse, database, file) e la struttura dei dati da caricare. Le sessions (in PowerCenter) o i mapping tasks (in IDMC) orchestrano l’esecuzione del caricamento.
- Verso Data Warehouse/Database:
- Si utilizzano definizioni di target che puntano a tabelle specifiche nel data warehouse o database di destinazione. Le proprietà del target definiscono come i dati vengono scritti (es. Insert, Update, Upsert, Delete).Informatica Data Loader: Per il caricamento verso cloud data warehouse moderni (come Snowflake, Amazon Redshift, Azure Synapse, Databricks Delta Lake, Google BigQuery), Informatica offre uno strumento chiamato Data Loader. Questo strumento, spesso gratuito, semplifica il processo di caricamento con un’esperienza guidata da wizard: Connetti la sorgente.Seleziona il target (il cloud data warehouse).Esegui immediatamente o pianifica per dopo. Data Loader supporta il caricamento batch con elaborazione parallela e offre funzionalità di automazione (notifiche, monitoraggio dell’uso) e capacità ETL di base come l’esclusione di campi, filtri personalizzati e la gestione di chiavi primarie per caricamenti incrementali.
- Verso File:
- Si configurano target di tipo file (flat file, XML, ecc.), specificando il percorso di output, il formato del file, i delimitatori e altre opzioni di formattazione.
- Informatica fornisce un ambiente robusto e scalabile per l’integrazione dei dati, adatto a scenari enterprise complessi. La sua interfaccia utente è generalmente considerata user-friendly, sebbene la padronanza completa della piattaforma, specialmente per PowerCenter, possa avere una curva di apprendimento ripida.
- Verso Data Warehouse/Database:
AWS Glue
AWS Glue è un servizio ETL serverless nativo di AWS, che offre sia un’interfaccia visuale (Glue Studio) sia la possibilità di scripting (PySpark).

[da aws.amazon.com]

[Fonte qui]
- Estrazione:

- Da S3: Il metodo più comune è usare un AWS Glue Crawler. Il crawler analizza i dati in un bucket S3 specificato, ne inferisce automaticamente lo schema (o usa classificatori custom) e crea/aggiorna tabelle nel AWS Glue Data Catalog. Una volta che la tabella è nel catalogo, può essere usata come sorgente in un job Glue. Alternativamente, si può definire la sorgente S3 direttamente in un job Glue Studio o in uno script PySpark specificando il path S3 e il formato.
- Da RDS (e altri DB): È necessario creare una AWS Glue Connection. Questa definisce i parametri per connettersi al database (tipo DB, endpoint JDBC, credenziali, VPC, subnet, security group). Una volta creata la connessione, si può eseguire un Crawler su di essa per popolare il Data Catalog, oppure referenziare direttamente la tabella del database nello script Glue usando la connessione definita.
- Da API: Glue non offre un connettore nativo generico per API REST. Le opzioni comuni includono:
- Usare una funzione AWS Lambda per chiamare l’API e salvare i dati su S3, per poi processarli con Glue.
- Scrivere codice Python custom all’interno dello script Glue (usando librerie come requests) per effettuare le chiamate API. Questo richiede la gestione manuale di autenticazione, paginazione, ecc.
- Utilizzare connettori specifici per API SaaS disponibili su AWS Marketplace (es. per Salesforce, Marketo, etc.) o connettori di terze parti (es. CData) che si integrano con Glue.
- Trasformazione:

- Glue Studio (Visual ETL) – Offre un’interfaccia grafica drag-and-drop. Si possono aggiungere nodi sorgente, nodi target e nodi di trasformazione predefiniti (ApplyMapping, Filter, Join, Aggregate, SQL Query, etc.). Utile per task ETL comuni senza scrivere codice.
- Scripting (PySpark/Scala) – Per trasformazioni complesse o custom, si scrivono script. AWS Glue fornisce librerie specifiche (GlueContext, DynamicFrame) che estendono Apache Spark. Un DynamicFrame è simile a un DataFrame Spark ma è progettato per gestire schemi flessibili e dati semi-strutturati. Si possono applicare trasformazioni predefinite di Glue (es. Join.apply, Filter.apply, Relationalize per appiattire strutture nidificate) o usare direttamente le API di PySpark DataFrame per manipolazioni più avanzate (es. usando toDF() e fromDF() per convertire tra DynamicFrame e DataFrame Spark).
- Caricamento:

- Verso Amazon Redshift: Si usa tipicamente glueContext.write_dynamic_frame.from_jdbc_conf() o from_options(). Si specifica la Connessione Glue per Redshift, il nome della tabella target e un path S3 temporaneo (“redshiftTmpDir”). Glue usa questo bucket S per lo staging dei dati e poi orchestra i comandi COPY (per caricare) o UNLOAD (per leggere) su Redshift. Sono necessarie configurazioni IAM appropriate per permettere a Glue e Redshift di accedere al bucket S3 temporaneo.
- Verso Amazon S3 – Si utilizza glueContext.write_dynamic_frame.from_options(). Si specificano connection_type=”s3″, il path S3 di destinazione (connection_options={“path”: “s3://your-bucket/path/”}), e il formato desiderato (format=”parquet”, format=”csv”, etc.). È possibile specificare opzioni di partizionamento (partitionKeys=[“anno”, “mese”]) per organizzare i dati in S3.
L’integrazione nativa con l’ecosistema AWS e la natura serverless sono i punti di forza di Glue, semplificando la gestione infrastrutturale. La doppia opzione Studio/Scripting offre flessibilità. Tuttavia, la latenza dei cold start può essere un limite per processi near real-time, e la mancanza di un connettore API generico nativo robusto richiede soluzioni alternative per integrare sorgenti API non standard.
Azure Data Factory (ADF)
ADF è il servizio di integrazione dati cloud di Microsoft Azure, che supporta sia ETL che ELT.
- Estrazione:

- Prerequisiti Fondamentali: Il primo passo in ADF è definire i Linked Services, che rappresentano le stringhe di connessione alle sorgenti e alle destinazioni (es. Azure Blob Storage, Azure SQL Database, server HTTP per API). Successivamente, si creano i Datasets, che specificano la struttura, il formato e la posizione dei dati a cui il Linked Service punta (es. un file specifico in un container Blob, una tabella SQL, un endpoint API).
- Da Azure Blob Storage – Si crea un Linked Service per l’account di storage e un Dataset (es. di tipo DelimitedText, Parquet, JSON) che punta al container/file. L’estrazione avviene tipicamente tramite una Copy Data activity nella pipeline, usando questo dataset come sorgente.Da Azure SQL Database: Si crea un Linked Service per il database SQL e un Dataset di tipo Azure SQL Table che punta alla tabella/vista desiderata. Anche qui, la Copy Data activity è usata per l’estrazione.
- Da API REST: Si crea un Linked Service di tipo HTTP o REST. Si crea un Dataset (es. JSON) che specifica l’URL relativo dell’endpoint. Per chiamate semplici, la Copy Data activity può bastare. Per API più complesse che richiedono gestione di token, header dinamici o paginazione, si usa la Web Activity per effettuare la chiamata API e attività di controllo come Until e ForEach per gestire la paginazione (es. passando un cursore o un URL della pagina successiva tra le iterazioni). L’output della Web Activity (la risposta JSON) può poi essere processato da attività successive.
- Trasformazione:

- Mapping Data Flows – Sono l’opzione principale per trasformazioni complesse e visuali in ADF. Offrono un’interfaccia low-code/no-code simile a quella di altri strumenti ETL visuali, con una vasta gamma di trasformazioni (Source, Sink, Filter, Join, Aggregate, Derived Column, Lookup, etc.). I Data Flows vengono eseguiti su cluster Apache Spark gestiti da Azure, garantendo scalabilità. Un esempio è leggere dati cliente da Blob, pulirli, aggregarli per regione e caricarli in Synapse.
- Altre Attività di Trasformazione: ADF offre numerose altre attività per la trasformazione :
- Stored Procedure Activity: Esegue stored procedure su database SQL (Azure SQL, Synapse, SQL Server) per trasformazioni in-database.
- Azure Function Activity: Esegue funzioni serverless custom scritte in vari linguaggi per logiche di trasformazione specifiche o integrazioni complesse.
- Databricks Notebook/Jar/Python Activity: Esegue job su un cluster Azure Databricks per trasformazioni Spark avanzate o task di machine learning.
- Script Activity, Lookup Activity, etc.: Per compiti più specifici.
- Altre Attività di Trasformazione: ADF offre numerose altre attività per la trasformazione :
- Caricamento:

- Verso Azure Synapse Analytics – Si usa una Copy Data activity o un Sink in un Mapping Data Flow. Si configura il Linked Service per Synapse e un Dataset che rappresenta la tabella di destinazione. ADF gestisce il caricamento efficiente, spesso usando meccanismi come PolyBase o l’istruzione COPY INTO.
- Verso Azure Blob Storage – Analogamente, si usa una Copy Data activity o un Sink in un Mapping Data Flow, specificando il Linked Service per lo storage e un Dataset per il container/file di destinazione, definendo il formato di output (CSV, Parquet, etc.).
ADF si posiziona come un potente orchestratore e trasformatore di dati all’interno dell’ecosistema Azure. La sua architettura a pipeline e attività offre flessibilità. I Mapping Data Flows forniscono una potente interfaccia visuale per trasformazioni complesse, ma il loro utilizzo impatta sui costi legati all’infrastruttura Spark sottostante. La gestione di scenari API complessi, come la paginazione, richiede una buona comprensione della logica di orchestrazione delle pipeline di ADF.
Fivetran / Airbyte

[da fivetran.com]

[da airbyte.com]
Questi strumenti moderni si concentrano primariamente sull’estrazione (E) e il caricamento (L) dei dati, delegando la trasformazione (T) a strumenti esterni come dbt da eseguire dopo il caricamento nel data warehouse.
- Estrazione:

- Basata su Connettori – Il cuore di questi strumenti è la loro vasta libreria di connettori pre-costruiti e mantenuti dal vendor (o dalla community nel caso di Airbyte Open Source). La configurazione di una nuova sorgente (database, API SaaS come Salesforce, Marketo, Google Ads, file) avviene tramite un’interfaccia utente semplice, richiedendo tipicamente solo le credenziali di accesso e pochi parametri specifici della sorgente.
- Metodi di Estrazione – Supportano sia l’estrazione completa (Full Extraction) per il caricamento iniziale, sia varie forme di estrazione incrementale (Incremental Extraction) per sincronizzare solo i dati nuovi o modificati. I metodi incrementali possono basarsi su Change Data Capture (CDC) leggendo i log del database (quando supportato), su colonne di timestamp (es. last_modified), o su API specifiche della sorgente. Fivetran, ad esempio, supporta Change Tracking, CDC, Fivetran Teleport Sync e Binary Log Reader per SQL Server, mentre Airbyte supporta CDC per molti database.
- Caricamento:

- Diretto al Data Warehouse – I dati estratti vengono caricati quasi direttamente nel data warehouse di destinazione scelto (es. Snowflake, BigQuery, Redshift). Le trasformazioni applicate in questa fase sono minime, spesso limitate alla normalizzazione di base (es. appiattire JSON nidificati in colonne separate), alla mappatura dei tipi di dato tra sorgente e destinazione, e alla gestione dello schema nella destinazione (es. aggiunta automatica di nuove colonne).
- Configurazione della Destinazione – Richiede la configurazione della connessione al data warehouse target nell’interfaccia di Fivetran/Airbyte, fornendo credenziali, permessi necessari per creare schemi/tabelle e caricare dati, e talvolta dettagli su bucket di staging intermedi (S3 o GCS) utilizzati dal tool per il caricamento efficiente.
- Trasformazione (Post-Load con dbt):

- Delega a dbt – La logica di business complessa, le join tra diverse sorgenti, le aggregazioni e la modellazione dei dati (es. creazione di data mart dimensionali) non vengono eseguite da Fivetran/Airbyte durante il caricamento. Vengono invece definite come modelli SQL all’interno di un progetto dbt (data build tool).
- Orchestrazione Integrata – Sia Fivetran che Airbyte offrono integrazioni per eseguire automaticamente i job dbt dopo che il caricamento dei dati da una o più sorgenti è stato completato. Fivetran permette di definire queste trasformazioni e il loro scheduling (integrato con i connettori o custom) direttamente dalla sua UI o tramite un file deployment.yml nel repository Git del progetto dbt. Airbyte permette di configurare trasformazioni dbt da eseguire al termine di una sincronizzazione.
L’approccio ELT di Fivetran e Airbyte offre una notevole semplificazione e accelerazione delle fasi di estrazione e caricamento, grazie all’astrazione fornita dai connettori gestiti. Questo li rende estremamente accessibili. Tuttavia, è fondamentale comprendere che la complessità della trasformazione non scompare, ma viene spostata a valle e richiede competenze specifiche in SQL e dbt. Inoltre, i modelli di costo basati sull’uso devono essere attentamente monitorati e preventivati, specialmente considerando la recente modifica di Fivetran al calcolo del MAR per singola connessione, che potrebbe aumentare i costi per utenti con molte sorgenti dati.