Pagine

domenica 7 ottobre 2012

Data Quality Service : Ripulire i dati con un Data Quality Projects

Nel post precedente abbiamo visto come creare una semplicissima Knowledge Base, ora vediamo come utilizzarla per ripulire i nostri dati utilizzando un Data Quality Projects.

Creiamo un database con una tabella contenente la lista dei nostri clienti ed il comune di residenza.
NB: E indispensabile creare il database sulla medesima istanza su cui è installato il Data Quality Service.

USE MASTER
Go

Create Database MyDQSTest
Go

Use MyDQSTest
Go

Create table dbo.TabContatti
(
 Nome varchar(50),
 Comune varchar(50)
)
Go

--Primo Insert
Insert Into dbo.TabContatti values('Giulio Rossi','Millano')
,('Ernesto Verdi ','Toino')
,('Giuseppe Bottazzi','Brescello')
Go

Select * from dbo.TabContatti 



Nella tabella sono presenti i fantomatici comuni di Millano (Milano) e di Toino (Torino) che non esistono nella realtà e sono frutto di errori di battitura. Possiamo però correggere questi dati per renderli utilizzabili creando un Data Quality Project.

Utilizzando il Data Quality Client creiamo un project di Cleansing dei dati.
Nella fase di creazione del progetto dobbiamo anche selezionare la Knowledge Base che desideriamo utilizzare per validare i dati
NB. I Metadati del progetto vengono salvati nel database DQS_Projects creato dall'installazione del DQS.


Click su Next

Selezioniamo il tipo di data source SQL Server, il db MyDQSTest e la tabella dbo.TabContatti associando il campo Comune di quest'ultima al dominio Comune della Knowledge Base. Ripetiamo questa associazione per tutti gli eventuali domini della KB che vogliamo utilizzare.


Click su Next e nella finestra successiva premiamo il tasto Start che avvia l'analisi dei dati confrontandoli con i valori del Dominio. Al termine dell'analisi ci viene proposto un breve riepilogo.


Click su Next e ci viene proposto un resoconto dettagliato dell'attività

Il progetto confronta i dati da analizzare utilizzando degli algoritmi di fuzzy i con quelli nel Dominio associato e ci propone i risultati in tab differenti in base all'esito dell'analisi.

-Tab Suggested: dati la cui correzione è suggerita da DQS ma non attuata
-Tab New: nuovi dati individuati da DQS e in attesa di approvazione
-Tab Invalid: dati che violano le regole del dominio associato
-Tab Corrected: dati corretti in modo automatico durante il processo di analisi
-Tab Correct: dati congruenti con quelli del dominio associato

La Tab New, nel nostro caso, contiene il valore Toino.
Sappiamo che Toino è un errore di battitura della citta di Torino, quindi possiamo correggere il dato con il valore esatto e successivamente approvarlo. Toino verrà quindi spostato nella tab Corrected.


La tab Corrected oltre a Toino contiene anche il dato Millano.
Perchè Millano non è stato gestito come new, esattamente come Toino ?
L'algoritmo ha riconosciuto che Millano deve essere corretto sul valore Milano in quanto il peso (colonna Confidence) è superiore alla soglia dell'80% (tale soglia è personalizzabile dalle impostazioni del DQS con il Data Quality Client)


La Tab Correct contiene solo un valore, Brescello che è un valore valido del dominio.


Click su Next.

Il progetto ci chiede ora dove vogliamo esportare i risultati dell'analisi.
Possiamo esportare solo i semplici dati oppure i dati e le info a corollario.
L'installazione del DQS, oltre al db DQS_Main crea il db DQS_Staging_Data all'interno del quale possiamo salvare i dati creati dall'esportazione dei risultati dell'analisi.


Click su Export e il progetto esporta i dati nella locazione selezionata.
Click su Finish e il progetto si chiude.

Cosa contiene la tabella appena creata nel Db DQS_Staging_Data ?


La tabella è composta da :
colonna Comune_Source: è il dato originale
colonna Comune_Output: è il dato corretto dal progetto e coerente con il dominio.
colonna Confidence: rappresenta il peso( Deve tendere il più possibile a 1).
colonna Comune_Status: descrizione dell'azione intrapresa dal progetto sul valore
colonna record_Status: descrizione dell'azione intrapresa dal progetto sul record

Ma cosa è successo ai dati della tabella analizzata ?
Nulla, sono rimasti invariati.


Dobbiamo procedere noi con un semplice update alla correzione basandoci sui dati della tabella creata dall'esportazione.

Update dbo.TabContatti set comune = O.Comune_Output
 From dbo.TabContatti S
  inner join [DQS_STAGING_DATA].[dbo].[Temp_TabContatti] O
   On S.Nome  = O.Nome_Output collate SQL_Latin1_General_CP1_CI_AS
Where S.Comune <> O.Comune_Output collate SQL_Latin1_General_CP1_CI_AS
Go

Select * from dbo.TabContatti 
Go


Ora che i nostri dati sono ripuliti dobbiamo fare in modo che, qualora si ripresentino i valori errati Millano e Toino il DQS sia in grado di correggerli automaticamente.
In che modo ?
bhe... Insegnando al Dominio Comune della Knowledge Base creata precedentemente come deve trattare questi valori.

Grazie al Domain Management che abbiamo utilizzato per creare il Dominio Comune possiamo importare i dati analizzati e corretti dal nostro progetto.


Selezioniamo importa da progetto e selezioniamo il progetto da cui prelevare i dati


Clik su Ok


Come potete vedere i valori Millano e Toino vengono importati nel Domain Values ma vengono marcati come errati e associati al valore corretto per future correzioni.
D'ora in poi, qualora si ripetessero il DQS è in grado di correggerli con certezza assoluta senza alcun intervento da parte dell'utente.
Attenzione però, DQS li corregge solo nel progetto fornendo il valore esatto, il dato originale deve essere modificato manualmente dal data stewart.

Mantenendo costantemente aggiornati i dominii con l'evoluzione dei dati possiamo essere certi che i nostri dati sono di prima qualita.
Good Data = Good Businness !!!!

Ciao

Luca

Nessun commento:

Posta un commento