Talend logo

Talend Open Studio for Data Integration

Talend Open Studio è software di ETL (Extract, Transform, Load) open-source, che permette di operare con facilità su grandi quantitativi di dati eterogenei. Per il corso di Data Mining all’Università degli Studi di Padova ho realizzato una guida introduttiva ad esso, che rendo disponibile in questo articolo.

Sommario

Sommario

ETL

Concetti importanti in Talend Open Studio for Data Integration

Avvio di Talend Open Studio for Data Integration

GUI

Barra dei menu e toolbar

Repository View

Design workspace

Palette

Configuration Tabs

Outline and Code summary panel

Job Design

Cos’è un Job Design

Inserire componenti nel Job

Sorgenti dati

Database

SQLBuilder

Costruire una query

File

Connessioni

Row connection

Main

Lookup

Iterate connection

Trigger connections

Link connection

Componente tMap

Interfaccia

Gestione dell’Input

Il Join

Explicit Join

Inner Join

Filtri

Variabili

Editor delle espressioni

Output

Reject option

Gestione degli errori

Impostare lo schema del Map Editor

Esecuzione del Job

Output

tLogRow

Conclusioni


ETL

Extract, Transform, Load (ETL) è un’espressione che si riferisce al processo di estrazione, trasformazione e caricamento dei dati in un sistema di sintesi (data warehouse, data mart…).

I dati vengono estratti da sistemi sorgenti quali database transazionali (OLTP), comuni file di testo o da altri sistemi informatici (ad esempio, sistemi ERP o CRM).

Subiscono quindi un processo di trasformazione, che consiste ad esempio nel:

  • Selezionare solo quelli che sono di interesse per il sistema
  • Normalizzare i dati (per esempio eliminando i duplicati)
  • Tradurre dati codificati
  • Derivare nuovi dati calcolati
  • Eseguire accoppiamenti (join) tra dati recuperati da differenti tabelle
  • Raggruppare i dati

Tale trasformazione ha lo scopo di consolidare i dati (cioè rendere omogenei dati provenienti da sorgenti diverse) e di fare in modo che siano più aderenti alla logica di business del sistema di analisi per cui viene sviluppato.

Vengono infine memorizzati nelle tabelle del sistema di sintesi (load).

Talend Open Studio for Data Integration permette di connettersi a:

  • Applicazioni (ERP, CRM, etc.), databases, mainframes, files, Web Services, e così via..
  • Data warehouses, data marts, applicazioni OLAP – per analisi, reporting, dashboarding, scorecarding, e così via.
  • Componenti avanzati per ETL, come “string manipulations”, Slowly Changing Dimensions, automatic lookup handling, bulk loads support, e così via.

L’integrazione di dati operazionali è spesso ottenuta implementando programmi o routines personalizzati, realizzati in risposta ad un bisogno specifico.

Data migration/loading e data synchronization/replication sono le applicazioni più comuni dell’integrazione di dati operazionali, e solitamente richiedono

  • Mapping e trasformazioni dei dati complessi, con aggregazioni, calcoli dovuti alla diversità della struttura dei dati
  • Conflitti dei dati che devono essere gestiti e risolti
  • Sincronizzazione dei dati quasi a tempo reale

Concetti importanti in Talend Open Studio for Data Integration

Vediamo alcuni termini ricorrenti che è utile conoscere quando si lavora con questo software.

Repository

Un repository è una locazione di storage che Talend Open Studio utilizza per raccogliere i dati relativi a tutti gli oggetti tecnici che si utilizzano nel design di un Job o di un Business Model.

Progetto

Un progetto è una collezione strutturata di oggetti tecnici e dei metadati associati ad essi. I Jobs sono organizzati in progetti

Workspace

Un workspace è una directory dove vengono salvate tutte le cartelle del progetto.

Job

Un job è ua rappresentazione grafica di uno o più componenti connessi assieme, che ci permette di creare ed eseguire processi di gestione dei flussi di dati. Traduce i bisogni del business in codice e programmi.

Un job gestisce tutte le sorgenti e le destinazioni di cui si ha bisogno nel processo di data integration

Componente

Un componente è un connettore preconfigurato usato per realizzare una specifica operazione di data integration. Un componente aiuta a minimizzare il quantitativo di codice necessario a lavorare sui dati proveniente da sorgenti diverse.

I componenti sono raggruppati in famiglie in base al tipo di utilizzo, e si trovano nella Palette della GUI di Talend Open Studio.

Oggetto

Un oggetto è l’unità di base in un progetto. Gli oggetti sono raggruppati in base alla loro tipologia, ad esempio Job design, business model, context, codice, metadata ecc. Un oggetto può includerne altri.


Avvio di Talend Open Studio for Data Integration

Al primo avvio di Talend Open Studio, ci viene presentata la seguente schermata, che ci permette di aprire un progetto di prova, o di crearne uno nuovo.

La schermata per creare un nuovo progetto è intuitiva. Dopo aver inserito il nome del progetto (ed opzionalmente una descrizione) ed aver cliccato su Fine, il progetto apparirà nella schermata dei progetti esistenti e sarà possibile selezionarlo e caricare l’ambiente di lavoro.

GUI

La finestra di Talend Open Studio for Data Integration è divisa in:

  • Barra dei menu
  • Toolbar
  • Repository View
  • Design Workspace
  • Palette,
  • diverse visualizzazioni di configurazioni suddivise in tab, per ogni elemento del Job visualizzato nel workspace
  • Outline view and Code Viewer

Barra dei menu e toolbar

La barra dei menu include i comandi piu comuni, come “Chiudi”, “Salva” o “Stampa”. Quelli piu interessanti sono “Importa” ed “Esporta”, che avviano un wizard per l’importazione o l’esportazione di files, oggetti, preferenze, cataloghi XML etc)

La toolbar contiene pulsanti per eseguire rapidamente i compiti piu comuni durante l’utilizzo di Talend Open Studio, ad esempio il pulsante “Run” che permette di avviare i lavori creati, o il pulsante “Crea” che permette di inserire qualsiasi oggetto nel progetto.

Repository View

La barra a sinistra contiene tutti gli oggetti che possono servire per descrivere i business models o per creare un Job. Permette di accedere a Business Models, Job Designs e a routines o documentazioni. In pratica raccoglie tutti gli elementi necessari per qualsiasi Job Design o Business model contenuto nel progetto.

La seguente tabella descrive i nodi presenti all’interno della finestra Repository

 

Business Models

Qui vengono raggruppati tutti i Business models del progetto.        

Job Designs

La cartella dei Job Designs mostra tutti i job del progetto corrente. Con un doppio click su un job, esso viene aperto nel Design workspace.

Contexts                        

Qui vengono raggruppate le variabili di contesto che possono essere riutilizzate in diversi job, come path dei files o dettagli di connessioni a database.                        

Code        

La cartella dei codici contiene tutte le routines, o pezzi di codice, disponibili per il progetto.

SQL Templates

Qui sono contenuti tutti i template SQL. Ovviamente è possibile crearne di nuovi.

Metadata

La cartella dei Metadata include files contententi informazioni ridondanti che vogliamo riutilizzare in diversi job, come ad esempio schemi e proprietà varie.

Documentation

Qui vengono salvati tutti i tipi di documenti. Possono essere documenti di specifica, o descrizioni tecniche.

Design workspace

Il Design workspace è l’area centrale nella quale è possibile visualizzare i business models o i Job Designs aperti.

Palette

Dalla Palette, se si sta disegnando un Job o un Business Model, è possibile trascinare componenti tecnici o figure, archi e note nel workspace.

Configuration Tabs

Le configuration tabs sono localizzate sotto il Design workspace. Ogni tab mostra le proprietà dell’elemento selezionato. Queste proprietà possono essere cambiate per settare i parametri relativi al componente selezionato

Outline and Code summary panel

Sotto al Repository, troviamo le informazioni relative al Job o al Business Model aperto. Ci sono due tabs, Outline e Code Viewer, che forniscono informazioni sul diagramma visualizzato e sul codice generato


Job Design

Cos’è un Job Design

Un Job Design è una rappresentazione grafica di uno o piu componenti connessi assieme, che permette di creare ed avviare processi di gestione del dataflow. Esso traduce i bisogni del business in codice, routines e programmi. Un Job permette di gestire tutte le sorgenti e gli output di cui abbiamo bisogno per il processo di Data Integration.

Nella finestra principale di Talend, è possibile creare un nuovo Job cliccando con il tasto destro su Job Designs nella scheda Repository e selezionando Create Job. Nella finestra che apparirà è sufficiente inserire un nome per il Job ed opzionalmente una descrizione ed il suo scopo. In seguito il nuovo Job apparirà nel Repository e sarà possibile aprirlo nel Design Workspace con un doppio click su di esso.

Inserire componenti nel Job

Per costruire un Job, occorre trascinare i singoli componenti dalla Palette nel workspace, per poi poterli configurare e collegare tra loro.

Tuttavia, nel caso di componenti esterne quali connessioni a database, o file presenti nell’hard disk, conviene definire i metadati nel Repository, nella cartella Metadata, in modo da poterle riutilizzare più volte.

Una volta che i metadati sono stati salvati nel Repository, è possibile trascinare i componenti interessati direttamente nel piano di lavoro.


Sorgenti dati

Per provare le potenzialità di Talend Open Studio, ho utilizzato, come dati di esempio, un database di una scuola, contenente informazioni sugli alunni e sui loro voti. Vediamo ora come recuperare i dati che ci interessano dalle sorgenti dati più comuni.

Database

Supponiamo di voler inserire una connessione ad un database MySql da utilizzare come sorgente per i dati. Dato che potremmo aver bisogno ancora di questa connessione per altri Job, conviene definirne lo schema nel Repository.

Apriamo la cartella Metadata nel Repository, clicchiamo di destro sulla voce Db Connections e poi su Create connection.

Si aprirà una finestra nella quale specificare le proprietà generali dello schema, come nome e descrizione. La finestra successiva è più interessante, e permette di specificare il tipo di database al quale ci si vuole collegare, e tutti i parametri necessari. Dopo aver compilato tutti i campi, è possibile cliccare sul tasto Check per verificare il corretto funzionamento della connessione.

Dopo aver cliccato su Fine, la nuova connessione sarà disponibile nel Repository.

Cliccando con il tasto destro sulla connessione, possiamo selezionare “Retrieve Schema”. Si aprirà una nuova finestra. Ci vengono presentate tutte le tabelle presenti nel database. Possiamo selezionarne una o più di una per caricarle nel nostro Repository.

Nella schermata successiva è possibile definire lo schema, modificando il nome delle colonne, il tipo di dato contenuto ecc. E’ possibile anche importare od esportare uno schema come xml.

Cliccando su Finish, viene completata la creazione dello schema. Tutti gli schemi appariranno nel Repository.

SQLBuilder

A volte può essere utile accedere, invece che alle singole tabelle del database, a dati già estrapolati con una query. L’SQLBuilder permette di costruire query SQL e monitorare i cambiamenti tra le tabelle nel database e le tabelle di metadati. Questo editor è presente in tutti i componenti DBInput e DBSQLRow.

Semplicemente, dopo aver compilato la finestra con i dettagli della connessione al database, occorre rimuovere la query di default presente nel campo Query nel pannello delle proprietà del componente, per poi cliccare sul pulsante con i tre punti; si aprirà così l’SQLBuilder.

La finestra dell’SQLBuilder è composta da questi pannelli:

  • Struttura del database
  • Query editor, composto dalle tabs Editor e Designer
  • Visualizzazione dell’esecuzione delle query
  • Visualizzazione dello schema

La struttura del database mostra le tabelle per le quali è stato definito uno schema, nel repository o nelle proprietà del componente. La visualizzazione dello schema, mostra la descrizione delle colonne.

Nel pannello della struttura del database, si possono osservare le tabelle contenute nei metadata della connessione al database.

Cliccando sul tasto Aggiorna possiamo osservare le differenze tra lo schema salvato e le tabelle nel database attuali.

Le icone nella colonna Diff ci segnalano dove ci sono differenze o mancanze. Possiamo espandere le tabelle per scoprire dove stanno le differenze.

La croce rossa indica che il contenuto della colonna contiene differenze o che la colonna non è presente nella tabella attuale, mentre il segno blu indica che la colonna manca dallo schema salvato nel repository.

Costruire una query

Il Query editor è un sistema a tabs che permette di scrivere o disegnare le query

Cliccando di destro su una tabella o colonna è possibile selezionare la voce Generate Select Statement dal menu.

Nella schermata che appare, è possibile, cliccando nella tab vuota, scrivere il codice SQL che vogliamo. Possiamo anche premere Ctrl+Spazio per accedere alla lista di autocompletamento. Apparirà una finestra che mostra il percorso della tabella o la sezione nella quale vogliamo cercare.

In alternativa si può utilizzare il Query Designer che permette di gestire facilmente le tabelle e generare in real time la query corrispondente nella tabella di editing.

Si possono aggiungere nuove tabelle al Query Designer cliccando con il tasto destro e selezionando Add Tables, per poi selezionare la tabella desiderata. Se sono già presenti dei join tra le tabelle, verranno mostrati automaticamente. In alternativa è possibile inserirli cliccando con il tasto destro sulla colonna interessata della prima tabella e selezionando Equal dal menù che si presenta, per poi selezionare il campo rilevante della seconda tabella.

In ogni caso, la query SQL corrispondente viene mostrata in basso nella finestra.

Cliccando sul pulsante Salva, la query viene salvata nel Repository.

File

Supponiamo di avere delle informazioni anche su file. Dal Repository, clicchiamo con il tasto destro su File Delimited, e selezioniamo Create file delimited.

Nel primo passo, inseriamo le informazioni generali, come il nome dello schema ed una descrizione. Nella schermata seguente, selezioniamo il percorso del file.

Nella terza schermata, si possono definire alcune impostazioni per far si che il file venga letto nel modo corretto, ad esempio è possibile specificare i caratteri di separazione campo e riga, od indicare se il file contiene un’header.

E’ possibile comunque controllare la correttezza delle impostazioni cliccando il tasto Refresh Prewiev ed osservando i dati nel riquadro dell’anteprima.

L’ultima schermata mostra lo schema generato e permette di “aggiustarlo”, ad esempio cambiando i nomi delle colonne o il tipo di dati

Una volta che gli schemi sono stati creati nel Repository, è possibile trascinarli nel workspace. Talend ci chiederà se vogliamo utilizzarlo come componente di input o di output. Nel caso di schema di database, è possibile selezionare la singola tabella che vogliamo inserire nel workspace.


Connessioni

In Talend Open Studio for Data Integration, un Job è composto da un gruppo di componenti collegati l’uno all’altro attraverso connessioni.

Ci sono diversi tipi di connessioni che definiscono i dati da processare, l’output, o la sequenza logica del Job. Cliccando con il tasto destro su un componente nel workspace possiamo vedere tutti i collegamenti disponibili per il componente selezionato.

Row connection

Una Row connection gestisce i dati. Può essere di tipo main, lookup, reject o output.

Main

Questa è la connessione più comune. Passa il flow di dati da un componente all’altro, iterando ogni riga e leggendo i dati di input dal componente. I dati trasferiti su una connessione Main sono caratterizzati dallo schema del componente, che descrive la struttura dati del file di input.

Lookup

Questa connessione connette un sottocomponente ad un componente principale (che dev’essere capace di ricevere più di un flusso di dati). E’ utilizzato solo in caso di flussi di input multipli.

Filter

Questa connessione connette un componente tFilterROw ad un componente di output. Essa raccoglie i dati che corrispondono ad alcuni criteri.

Rejects

Rejects connette un componente di processing ad uno di output. Questa connessione raccoglie i dati che non corrispondono ai criteri selezionati o che non sono validi per l’output atteso. E’ possibile così tenere traccia dei dati che non possono essere processati per diverse ragioni.

ErrorReject

ErrorReject connette un componente tMap ad un componente di output. Esso viene abilitato quando “Die on error” nel componente tMap è disabilitato, e raccoglie tutti i dati che non possono essere processati.

Output

Esso connette un componente tMap ad uno o più componenti di output.

Uniques/Duplicates

Essi connettono un tUniqRow ad un componente di output.

Uniques raccoglie le righe che vengono trovate per la prima volta nelle righe in arrivo, e le invia al componente di output rilevante.

Duplicates raccoglie i possibili duplicati di queste righe, e li invia ad un altro componente di output.

Multiple Input/Output

Alcuni componenti aiutano a gestire i dati attraverso input e output multipli. Spesso sono componenti di processing come tMap, che è utile utilizzare nel caso i dati richiedano una join o qualche trasformazione.

Iterate connection

Questa connessione può essere utilizzata per ciclare su files contenuti in una cartella, o su righe contenute in un files on in una tabella di database. Un componente può essere il target di un solo link Iterate, che solitamente viene connesso al primo componente di un Job o di un Subjob.

Alcuni componenti come tFileList richiedono di essere collegati al prossimo componente tramite una connessione Iterate.

Trigger connections

Queste connessioni definiscono la sequenza del processing (non trasportano alcun dato). Vengono utilizzate per creare una dipendenza tra Job o Subjobs che verranno iniziati uno dopo l’altro in base alle specifiche del Trigger.

Ci sono due categorie di Trigger:

  • Subjob triggers:  On Subjob Ok, On Subjob Error e Run if
  • Component triggers:  On Component Ok, On Component Error e Run if

OnSubjobOK: utilizzato per far cominciare il prossimo subjob quando il subjob principale è completato senza errori. Utilizzato solo dal componente iniziale del Jobted errors.

OnSubjobError: fa partire il prossimo subjob nel caso in cui il primo subjob non abbia completato correttamente. Permette quindi di trovare problemi e gestire gli errori

OnComponentOK  e  OnComponentError  possono essere utilizzati con qualsiasi componente come sorgente.

OnComponentOK farà partire il componente target quando l’esecuzione del componente sorgente è finita senza errori.

OnComponentError invece la farà partire appena viene incontrato un errore nel Job principale.

Run if fa partire un subjob o un componente nel caso in cui la condizione specificata venga raggiunta.

Link connection

Può essere utilizzata solo con componenti ETL. Questa connessione trasferisce l’informazione sullo schema ad un componente ETL mapper per poterlo utilizzare in query su database specifiche.


Componente tMap

Il modo migliore per gestire input e output multipli è il componente tMap. tMap permette di effettuare operazioni come:

  • data multiplexing e demultiplexing
  • data transformation
  • concatenazione di campi
  • applicazione di filtri
  • data rejecting

tMap usa le connessioni in entrata per stabilire gli schemi che dovrà utilizzare. Quindi non si possono creare nuovi schemi di input all’interno del componente, ma utilizzando le Row connections in entrata.

Allo stesso modo, si creeranno tante connessioni in output quante ne sono necessarie. Tuttavia è possibile fornire in output i contenuti scelti nel Mapper attraverso un editor grafico.

Ci può essere solo una Main Row in input: tutte le altre connessioni dovranno essere di tipo Lookup, ovvero connessioni che portano flussi di dati secondari.

Un componente tMap può essere inserito nel nostro workspace semplicemente trascinandolo dalla Palette. Con un doppio click su di esso possiamo editarne il comportamento.

Interfaccia

L’interfaccia è suddivisa in diverse sezioni:

  • Il pannello di Input sulla sinistra, offre una rappresentazione di tutti i data flow in ingresso. I dati sono raccolti in diverse colonne in tabelle di input, che hanno come nome quello della connessione in ingresso.
  • Il pannello delle variabili, al centro, permette di centralizzare le informazioni ridondanti mappandole in delle variabili ed applicando delle trasformazioni
  • Il pannello di Output sulla destra permette di mappare i dati ed i campi dalle tabelle di Input e dalle variabili nelle righe di Output appropriate.
  • L’editor dello schema offre una visione schematica di tutte le colonne delle tabelle di Input e Output selezionate.
  • L’Editor di Espressioni è un tool per creare espressioni e filtri sui dati

Gestione dell’Input

L’ordine delle tabelle di input è fondamentale. La prima tabella, quella più in alto, riflette la connessione Main, e per questo motivo ha priorità nella lettura e nel processing dei dati. Per questo motivo non è possibile spostare su e giù la prima tabella. Ciò assicura che non vengano perse le eventuali associazioni di Join.

E’ possibile cambiare l’ordine delle tabelle di Lookup, ma bisogna porre attenzione alle possibili perdite dei Join.

Per popolare le tabelle di input, possiamo definire gli schemi di ogni componente di input connesso al tMap. In questo modo le tabelle Main e Lookup verranno popolate correttamente. In alternativa è possibile definire lo schema di Input direttamente all’interno del componente tMap.

Il Join

Il Join, come in SQL, permette di selezionare dati da una tabella in base ai dati di un’altra. Nel Map Editor, i dati provenienti dalle tabelle Main e Lookup possono essere uniti, ed è qui che il loro ordine diventa importante.

Explicit Join

Basta trascinare un campo di una tabella su quello di un altro per creare un Join tra le due, che verrà mostrato come una linea viola.

Con l’Explicit Join possiamo scegliere se vogliamo un unico match o se permettiamo più match per la stessa riga di tabella. Basta cliccare sul pulsante tMap Settings sulla tabella alla quale il Join si collega per visualizzare le proprietà della tabella. Alla voce Match Model possiamo cliccare sul pulsante con i tre puntini per poi selezionare il tipo di Match che intendiamo utilizzare:

  • Unique Match
    L’opzione di default. Solo l’ultimo match dal flow di Lookup verrà preso in considerazione.
  • First Match
    Ci si aspettano più matches nel Lookup, ma verrà preso in considerazione solo il primo, mentre gli altri verranno ignorati
  • All Matches
    Tutti i matches verranno considerati e passati al flow di output

Inner Join

L’Inner Join è un particolare tipo di Join. Questa opzione vieta ai valori nulli di passare nel flow di output. Permette inoltre di passare i dati rifiutati in una tabella specifica chiamata Inner Join Reject Table. Insomma se il dato cercato per fare la Join non viene trovato, e quindi il Join non può essere realizzato, allora i dati verranno scartati.

Per creare un Inner Join basta creare un Join normale, dopodichè entrare nelle proprietà della tabella linkata dal Join. Occorre quindi editare il Value del campo Join Model per selezionare il Join desiderato.

Nel caso in cui non venga specificato un Join, verrà applicato il prodotto cartesiano tra le tabelle presenti in input.

Filtri

E’ possibile specificare dei filtri cliccando sul pulsante Filter. Ciò aggiungerà un campo dove possiamo inserire la condizione da applicare. Conviene effettuare questa operazione, se possibile, nel flow di input, in modo da filtrare già i dati che verranno processati dal componente tMap.

Variabili

La tabella delle variabili contiene tutte le variabili mappate che vengono riutilizzate più volte in posti diversi. Si può anche utilizzare il campo Expression nella tabella delle variabili per apportare qualsiasi trasformazione si voglia ai dati di input, utilizzando codice Java. Le variabili sono utili per risparmiare tempo di processing e per evitare di dover riscrivere più volte gli stessi dati.

Ci sono diverse possibilità per creare variabili:

  • Scriverle direttamente in Java
  • Usare il pulsante + presente nella tabella delle variabili
  • Trascinare gli Input nella tabella delle variabili

Editor delle espressioni

Tutte le espressioni (Input, Variabili e Output) possono essere visualizzate ed editate con l’editor di espressioni, il quale fornisce un’interfaccia grafica adatta allo scopo.

E’ possibile scrivere le espressioni direttamente nel pannello collocato in basso nella finestra del componente tMap. Per far ciò basta selezionare il campo desiderato, aprire il tab dell’Expression Editor in basso nella finestra, selezionare l’espressione voluta dal pannello di Input e poi scrivere il codice Java necessario per effettuare le trasformazioni desiderate nell’Expression Editor.

In alternativa è possibile usare l’Expression Builder. Per avviarlo occorre cliccare sui 3 puntini a fianco dell’espressione che si vuole aprire nel pannello delle variabili o in quello dell’output. L’Expression Builder si aprirà per editare l’espressione selezionata.

Expression Builder

In questa finestra è possibile specificare le trasformazioni da applicare ai dati.

La parte inferiore elenca le funzioni disponibili, suddivise in categorie. E’ possibile così selezionare la funzione desiderata per visualizzarla nell’area Espressione. In quest’area, è possibile editare i parametri della funzione, inserendo ad esempio i nomi delle variabili.

Il campo di testo sulla destra ci permette di fornire un valore di test alle variabili interessate, e di osservare come questo valore cambia grazie alla nostra espressione, semplicemente premendo il tasto Test.

Premendo il tasto Ok, la finestra dell’Expression Builder si chiuderà e l’espressione verrà aggiornata nel campo espresione del componente tMap.

Nel database che ho utilizzato, i voti degli alunni potevano contenere punti o virgole, in base a come gli insegnanti hanno espresso i voti decimali. Come si può vedere nella seguente figura, il campo voto in output viene modificato con un’espressione CHANGE, che converte il valore del campo originario “voto” trasformando i punti in virgole.

Output

La creazione, nel Design workspace, di una connessione Row dal componente tMap ad un componente di output, aggiunge uno schema di outupt nella finestra del tMap.

In alternativa è possibile creare uno schema direttamente dalla finestra del tMap, utilizzando il tasto + presente nel pannello Output.

Reject option

Con il reject è possibile raggruppare i dati che non soddisfano uno o più filtri definiti nelle tabelle di output. In pratica i dati scartati dalle tabelle di output vengono raccolti in una o più tabelle dedicate, e possono poi essere analizzati.

Per indicare una tabelle di output come un reject, occorre cliccare sul pulsante che permette di visualizzare le proprietà della tabella.  Nel campo Value corrispondente alla frase “Catch output reject”, dopo averci cliccato dentro, sarà presente il pulsante con i tre puntini. Premendolo possiamo selezionare il valore “vero”.

Gestione degli errori

L’opzione Die on error evita che gli errori vengano processati. Essa ferma l’esecuzione del Job appena viene incontrato un errore. Quest’opzione è attivata di default nel componente tMap.

Se la si disattiva nelle proprietà del tMap, apparirà una nuova tabella di output, denominata ErrorReject. Questa tabella avrà due colonne: errorMessage e errorStackTrace, che raccoglieranno le informazioni sull’errore incontrato.

Possiamo fare in modo che questi errori vengano inviati ad un componente di output (per esempio ad un file di log) creando una connessione ErrorReject nel Design Workspace, che parte dal tMap ed arriva al corrispondente componente.

Impostare lo schema del Map Editor

Nel Map Editor è possibile definire lo schema come Built-In, in modo da poter così modificare la struttura dati nel pannello Schema editor, oppure come Repository, leggendo quindi la struttura dati interamente dal Repository.

E’ possibile specificare di voler utilizzare lo schema dal Repository visualizzando le proprietà della tabella interessata, ed editando l’opzione Schema Type. Dopodichè è necessario editare il valore del campo Schema Id, cliccando sul pulsante con i tre puntini e selezionando lo schema desiderato.

Se utilizziamo invece uno schema Built-In, è possibile utilizzare lo Schema Editor per modificarlo.


Esecuzione del Job

Output

La gestione dei componenti di output è essenzialmente simile a quella dei componenti di input. Dopo aver creato uno schema (ad esempio per un database o un file) impostando le proprietà della connessione, basterà trascinare il componente nel workspace e connetterlo al flusso di dati.

Nel mio caso, per poter provare le funzionalità di Talend Open Studio, ho creato una connessione ad un file csv, per poterlo aprire facilmente e verificare la struttura dei dati dopo il processing.

Nelle proprietà del componente è stato necessario avviare lo schema editor per specificare lo schema del file, abbinandolo al flusso di dati in arrivo dal componente tMap.

tLogRow

Un componente interessante che possiamo inserire è il tLogRow. Questo componente viene inserito tra due componenti e permette di mostrare il flusso di dati che passa da un componente all’altro. Durante l’esecuzione, i log verranno mostrati

Per procedere con l’esecuzione del Job è sufficiente premere il tasto F6. Potremo osservare il throughput dei dati in ogni connessione


Conclusioni

In questo breve documento si sono trattati i concetti che forniscono le basi dell’utilizzo di Talend Open Studio for Data Integration. Con queste informazioni è possibile creare e gestire dei processi di ETL. In base alle diverse necessità che ogni progetto può richiedere, occorrerà utilizzare diversi componenti (ad esempio per gestire diverse sorgenti di input); per l’utilizzo di questi si rimanda al manuale di Talend Open Studio, che elenca le caratteristiche di ognuno di essi.

Sono anche disponibili le slide utilizzate durante la presentazione

Tags: No tags

2 Responses

Leave A Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.