Lettura dei dati: i Data Link

Navigation:  Il Package: lavorazione dei dati > Acquisizione dei dati >

Lettura dei dati: i Data Link

Previous pageReturn to chapter overviewNext page

Con il termine Data Link intendiamo tutti gli oggetti di un Package preposti alla lettura e all'acquisizione di informazioni dalla sorgente dati a cui si connettono (e.g. file di testo o Excel®, DB, AuditShelf o DataShelf).

Ogni Data Link definisce all'interno di un'esecuzione di IronDQ una struttura tabellare temporanea, l'elenco delle colonne di cui essa è composta ed il meccanismo per il suo riempimento.

 

I Data Link disponibili sono:

il Text Link, consente un accesso diretto e/o mediato a file di testo;

il Database Link, permette di interrogare eventuali DB connessi;

la Resource, consente la creazione all'interno del Package di tabelle definite dall'utente;

il DataBox Link, permette di interrogare eventuali AuditShelf o DataShelf connessi.

 

Tutti i Data Link condividono i seguenti tab:

General, consente di specificare nome e descrizione del Data Link ed impostare il Cache Editor per l'eventuale definizione di una Cache;

Columns, espone l'elenco delle colonne che compongono la tabella in output, la cosiddetta Column List.

 

La Column List può contenere tutti o solo alcuni dei campi in input. In particolare è consentito cancellare direttamente le colonne che non si vogliono visualizzare in output. Un campo in input può essere richiamato, all'interno della stessa Column List, più volte con nomi e formati differenti. Inoltre è possibile arricchire la Column List aggiungendo speciali Metadata Columns, ossia campi contenenti particolari attributi della sorgente dati o del Data Link stesso.

 

ex

ESEMPI DI METADATA COLUMNS

Attributi della sorgente: FileName, FileRowNumber, RowNumber.

Attributi del Data Link: CacheSummary, Description, Name, EmptyResultOnFileMissing, EncodingName, ExternalVisibility.

 

Ogni record della Column List è caratterizzato dai campi descritti nella tabella seguente.

 

Campo

Descrizione

Name

Il nome della colonna in output, da utilizzare nelle elaborazioni successive

DataType

Il formato del dato (e.g. VarChar, Int e Decimal)

DataSize

La lunghezza del dato in base al DataType impostato.          

Per esempio, nel caso di DataType Decimal, indica il numero massimo di cifre intere.

Scale

Nel caso particolare di DataType Decimal, indica il numero di cifre decimali visualizzate.

Conversion Settings

Campo di testo che consente di specificare uno specifico formato di conversione del dato in input.

Description

Testo libero con cui annotare l'eventuale descrizione della colonna corrente.

Provider

Tipologia di metadato da visualizzare in output:  

Data, campi relativi alla sorgente di input;

Properties, campi contenenti valori assunti dalle proprietà del Data Link stesso;

Extra, campi contenenti informazioni suppletive sulla sorgente dati;

Dynamic, campi valorizzati utilizzando le eventuali Dynamic properties del Data Link.                    

Field

Il campo di input visualizzato dalla colonna corrente. In caso di Metadata Columns è possibile selezionare il campo da visualizzare rispetto al corrispondente Provider.

 

Il campo Conversion Settings può essere compilato sia manualmente sia mediante un apposito wizard. Esso espone impostazioni contestuali al tipo dato impostato nel DataType.

Impostare opportunamente i Conversion Settings si rivela particolarmente utile in caso di dati di tipo data e numerico decimale.

In caso di campi di tipo data è possibile specificare:

le impostazioni regionali;

il formato di output associato preferito.

Viceversa, in caso di campi di tipo numerico decimale è possibile impostare:

i separatori delle migliaia e dei decimali;

un numero fisso di cifre dopo la virgola.

 

ex

APPROFONDIMENTO: IL PROVIDER EXTRA

I metadati corrispondenti al Provider Extra comuni alla maggior parte dei Data Link (e altri oggetti del Package che dispongono della Column List) sono:

FileName, espone il percorso assoluto dell'eventuale file sorgente;

FileRowNumber, rappresenta il numero del record nel file di input corrispondente al record in output. L'eventuale intestazione viene ignorata e, in caso di caricamento multiplo di file, la numerazione è coerente con ogni nuovo file.

RowNumber, mostra il numero del record nella tabella di output.

 

La Column List è generata design-time e può essere compilata in modalità automatica o manuale.

La definizione manuale delle colonne è possibile digitando ogni singolo campo, che compone la Column List.

La definizione automatica delle colonne può avvenire in modalità diverse.

Mediante il pulsante Get actual GetActualColumns16 della toolbar, è possibile forzare un'esecuzione completa del Data Link. In tal modo, IrionEDM  può scandire l'intero dataset ottenuto, ricavando in modo univoco il DataType originale di ciascuna colonna. Tale scansione preserva eventuali Column Name impostati in precedenza dall'utente e Metadata Column di Provider diversi da Data.

Mediante il pulsante Guess GuessColumns16 della toolbar, IrionEDM  calcola i DataType risultanti, ipotizzandoli a partire dai parametri definitori del Data Link senza eseguirlo.

 

LightBulb

In caso di dataset voluminosi, il Guess velocizza la generazione automatica della Column List.

 

warning

In generale i pulsanti Get actual e Guess consentono di ottenere risultati analoghi. Tuttavia esistono alcuni casi in cui la modalità Guess potrebbe non funzionare o non determinare correttamente il DataType, quali:

dataset con elevato numero di record e campi con DataType ambigui (es. file Excel con numeri e testi nella stessa colonna);

colonne definite dinamicamente (Provider Dynamic od output di query dinamica e stored procedure);

utilizzo del filtro File Normalizer.

 

Nella toolbar del tab Columns è presente anche un pulsante che consente di attivare/disattivare l'opzione Auto Guess delle colonne in input. Quando l'opzione Auto Guess è attiva (pulsante AutoRefreshColumns16 selezionato), ogni modifica di proprietà del Data Link, che riguardano le colonne in output, forza automaticamente un Guesss.

 

info

La modifica di altri oggetti del Package, che possano alterare la struttura delle colonne di un Data Link (e.g. la modifica di una Database Connection) non attiva il ricalcolo automatico. Sarà dunque necessario utilizzare il tasto Guess.

 

L'opzione Auto Guess viene disattivata (pulsante AutoRefreshColumns16 deselezionato) ogni qualvolta si proceda alla definizione manuale delle colonne.

 

Ogni Data Link è in grado di gestire la propria Column List anche in caso di colonne in input diverse da quelle dichiarate design-time, mediante le seguenti proprietà presenti nel visualizzatore della Property Grid (tasto F4):

MissingColumnsBehaviour, specifica il comportamento in caso in cui un campo sia presente nella Column List ma non in input (restituire errore oppure valorizzare a NULL);

UnexpectedColumns, specifica come trattare campi in input non presenti nella Column List (ignorare, leggere o restituire errore);

Null On Data Error, restituisce NULL in caso di errore su un DataType atteso.

 

warning

In caso si consenta la lettura di colonne non presenti nella Column List, mediante la proprietà UnexpectedColumns, i campi inattesi verranno sempre caricati come stringhe (i.e. con DataType VarChar), indipendentemente dal proprio formato originario.

 

info

I campi caricati come UnexpectedColumns possono essere filtrati in fase di caricamento, impostando nella property UnexpectedColumnsFilter appositi filtri sui nomi. Le wildcard ammesse sono:

* zero o più caratteri

? esattamente un carattere

| condizione di or

~ condizione di not

 

Nelle prossime sezioni di questo capitolo, analizzeremo nel dettaglio il Text Link, la Resource ed il Database Link, mentre per il DataBox Link rimandiamo al paragrafo dedicato nel capitolo Archiviazione permanente dei dati: il DataShelf.

 

APPROFONDIMENTI E ARGOMENTI CORRELATI

& Text Link

& Resource

& Database Link

& Indici