...

Popolare un Data Warehouse con SQL Server Data Transformation

by user

on
Category: Documents
20

views

Report

Comments

Transcript

Popolare un Data Warehouse con SQL Server Data Transformation
Popolare un
Data Warehouse con
SQL Server Data
Transformation Services
(DTS)
MCSD MCAD MCSE+I MCSA MCDBA MCT
www.devleap.it
Chi siamo
 www.DevLeap.it
 Un gruppo di 5 persone con tanta voglia di
 Studiare a fondo le tecnologie
 Capire il “behind the scenes”
 Implementare soluzioni reali
 Confrontarsi con le problematiche reali
 Sperimentare nuove idee
 Facciamo Corsi, Conferenze, Training
www.devleap.it
Agenda
 ETL - Processo di alimentazione di un Data
Warehouse
 Individuazione fonti dati
 Criteri di normalizzazione
 Processo logico di alimentazione
 DTS come strumento di ETL
www.devleap.it
ETL – processo di
alimentazione
www.devleap.it
Implementazione dello Star Schema
 Estrazione di dati da fonti diverse
 Integrazione, trasformazione e
ristrutturazione dei dati
 Caricamento dei dati in tabelle dimensioni
e tabelle dei fatti
www.devleap.it
Processo di trasformazione dei dati
Source OLTP
Systems
SQL
Server
Temporary Data
Staging Area
Data Marts
Sales
Sales Data
Hardware Data
Oracle
Data
Warehouse
Other
Validate, Gather ,
Make Data Consistent
Transform
Data
Populate Data
Warehouse
www.devleap.it
Service
Other
Distribute
Data
Caricamento dati dimensionali





Accesso a fonti dati eterogenee
Verifica fonti dati
Assicurare consistenza dei dati
Mantenere integrità delle dimensioni
Gestire il cambiamento dei dati
dimensionali
www.devleap.it
Accesso a fonti dati eterogenee
 Fonti relazionali
 OLTP system in SQL Server
 Financial database in Access
 …
 Fonti non relazionali
 File di testo
 Fogli elettronici (Excel)
 …
Northwind
OLTP
External
Files
Files
www.devleap.it
Financial
Spreadsheets
Verifica fonti dati
 Verificare accuratezza fonti dati
 Regole di business
 Requisiti strutturali
 Gestire dati non validi
 Rifiutare dati non validi nel caricamento
 Salvare dati non validi per successive correzioni
www.devleap.it
Rendere i dati consistenti
 Integrare i dati da fonti diverse
 Trasformare i dati in un formato
standardizzato
www.devleap.it
Trasformare i dati
Transform
Change
buyer_name reg_id total_sales
Barr, Adam
II
17.60
Chai, Sean
IV
52.80
O’Melia, Erin
VI
8.82
...
...
...
buyer_name reg_id total_sales
Barr, Adam
2
17.60
Chai, Sean
4
52.80
O’Melia, Erin
6
8.82
...
...
...
Combine
buyer_first
Adam
Sean
Erin
...
buyer_last reg_id total_sales
Barr
2
17.60
Chai
4
52.80
O’Melia
6
8.82
...
...
...
buyer_name reg_id total_sales
Barr, Adam
2
17.60
Chai, Sean
4
52.80
O’Melia, Erin
6
8.82
...
...
...
Calculate
buyer_name price_id
Barr, Adam
0.55
Chai, Sean
1.10
O’Melia, Erin 0.98
...
...
qty_id
32
48
9
...
buyer_name
Barr, Adam
Chai, Sean
O’Melia, Erin
...
www.devleap.it
price_id qty_id total_sales
0.55
32
17.60
1.10
48
52.80
0.98
9
8.82
...
...
...
Mantenere integrità della dimensione
 Chiave surrogata per ogni record
 Definisce la chiave primaria della dimensione
 Collega i campi foreign key della tabella dei fatti
 Caricare un record per ogni chiave
applicativa
 Mantiene univocità nella dimensione
 Dipende da come si gestisce il cambiamento dei
dati dimensionali
 Mantenere l’integrità della tabella dei fatti
www.devleap.it
Gestire cambiamento dati dimensioni
 Dimensioni con valori di colonne che
cambiano
 Inserire nuovi dati
 Modificare dati esistenti
 Soluzione di disegno per slowly-changing
Dimension
 Type 1: Sovrascrivere il record della dimensione
 Type 2: Scrivere un altro record nella
dimensione
 Type 3: Aggiungere attributi al record della
dimensione
www.devleap.it
Definire caricamento tabella dei fatti
 Accesso a fonti dati eterogenee
 Come per dimensioni
 Verifica fonte dati
 Come per dimensioni
 Assegnare foreign key
 Definire misure
 Mantenere integrità dei dati
www.devleap.it
Assegnare Foreign Key
Dimension
Tables
customer_dim
201 ALFI Alfreds
product_dim
25 123 Chai
time_dim
134 1/1/2000
Sales Fact Source Data
customer id
ALFI
product id order date quantity_sales amount_sales
123
1/1/2000
400
10,789
 Identificare chiave applicativa
dimensionale nei dati che
alimentano la tabella dei fatti
 Recuperare le chiavi primarie
da ogni tabella dimensionale
per assegnare le foreign key
www.devleap.it
Definire misure
 Caricare le
misure dalla
fonte dati
 Calcolare misure
aggiuntive /
derivate
customer_id
VINET
ALFI
HANAR
...
product_id
9GZ
1KJ
0ZA
...
price
.55
1.10
.98
...
qty
32
48
9
...
Source System Data
customer_key
100
238
437
...
product_key
512
207
338
...
qty
32
48
9
...
Fact Table Data
www.devleap.it
total_sales
17.60
52.80
8.82
...
Mantenere integrità dei dati
 Aderire alla granularità della tabella dei
fatti
 Una tabella dei fatti può avere una sola
granularità
 Bisogna caricare i dati con lo stesso livello di
dettaglio definito dalla granularità
 Verificare constraint colonne
 NOT NULL constraint
 FOREIGN KEY constraint
www.devleap.it
Implementare Staging Table
 Centralizzare e integrare fonti dati diverse
 Spezzare in parti più semplici delle
trasformazioni complessi
 Facilitare il recovery degli errori
www.devleap.it
ETL
 Tool utilizzati per alimentare un data mart
 ETL: Extract, Transform and Load
 Estrazione
 Connettività
 Trasformazione
 Cambia il modello logico
 Individua errori di coerenza
 Corregge o segnala anomalie
 Caricamento
 Connettività
 Ottimizzazione
www.devleap.it
Validazione dei dati
 Convalidare e correggere i dati prima di
importarli nel Data Warehouse
 Determinare e correggere i processi che
invalidano i dati
 Salvare in un log i dati non validi per un
esame successivo
www.devleap.it
Rendere i dati consistenti
 I dati possono essere inconsistenti per vari
motivi:
 I dati provengono da fonti diverse, in cui sono
consistenti, ma vengono rappresentati in modo
diverso nel Data Warehouse
 La stessa informazione è rappresentata in modo
diverso su differenti fonti dati
 Rendere i dati consistenti:
 Eliminare codifiche numeriche in valori leggibili
 Convertire versioni diverse della stessa
informazione in una singola rappresentazione
www.devleap.it
Alimentare un Data Warehouse
 Scegliere il tool ETL appropriato
 Transact-SQL
 Query distribuite
 Utility BCP (bulk copy), istruzione BULK INSERT
 DTS (Data Transformation Services)
www.devleap.it
DTS (Data Transformation Services)
 Incluso in SQL Server 2000
 Supporta qualsiasi fonte (e destinazione)
OLE DB
 Consente di integrare ActiveX Scripts
all’interno delle operazioni disponibili
www.devleap.it
Il Package di DTS
Step 1
Source
SQL Query
Destination
Step 2
Source
Query
Destination
VB
Script
Java
COM
Object
Step 3
Step N
Exec Utility
…..
www.devleap.it
Il Package di DTS
 Contiene la definizione delle attività da
eseguire come parte della trasformazione
 Può essere eseguito dalla GUI, da
scheduler, da command line, da script
 Ciascun package è costituito da passi (step)
multipli
 Gli step vengono eseguiti in serie o in
parallelo
 Fornisce un modello di “workflow”
 Transazioni lungo gli step
www.devleap.it
DTS Package Editor
www.devleap.it
DTS Object Model
DTS Package
Steps
Precedences
Tasks
Custom
ActiveX
Data Pump
Source
Columns
Globals
Destination
Transforms
www.devleap.it
Package steps
 Step “custom” (personalizzato)
 IDTSCustomStep
 Datapump
 Trasformazione generica OLE DB
 ActiveX Scripting
 Logica procedurale (integrata in DataPump)
 EXE
 Integrazione con applicazioni esistenti
www.devleap.it
DTS Import/Export Wizard
 Il Wizard Import/Export data di SQL Server
genera un package DTS
 Se eseguito immediatamente, resta in
memoria e non viene salvato
 Utile per creare veloci prototipi o per
mappare inizialmente molte tabelle
www.devleap.it
DTS Package Designer

Menu
System



MMC menu
DTS
Package
Designer
menu
Toolbars
DTS
Package
Designer
toolbar
 Task toolbar
 Connection
toolbar


Design Sheet



www.devleap.it
Connections
Tasks
Steps
Connessioni in un package DTS
 Fonti dati
 OLE DB
 ODBC
 Categorie connessioni
 File connections
 Database connections
 Microsoft Data Links
www.devleap.it
Tasks che trasformano dati
 Transform Data Task
Trasforma e inserisce dati
 Data Driven Query Task
Operazioni flessibili con T-SQL
 ParallelDataPumpTask
Elabora rowset gerarchici
www.devleap.it
Tasks che copiano e gestiscono dati




Bulk Insert Task Loads Files into SQL
Server
Execute SQL Task Runs SQL
Statements
Copy SQL Server Objects Task
Copies Objects Between
SQL Server Databases
Transfer Databases Task Copies a
SQL Server Database

Transfer Jobs Task Copies
SQL Server Agent Jobs

Transfer Logins Task Copies
SQL Server Logins

Transfer Master Stored Procedures
Task Copies SQL Server Master
Database Stored Procedures

Transfer Error Messages Task Copies
SQL Server User-specified Error
Messages
www.devleap.it
Tasks che funzionano come Job

ActiveX Script Task Performs UserDefined Logic


FTP Task Transfers Files


Analysis Services Task Processes
Cubes


Data Mining Task Processes Data
Mining Models
Send Mail Task Sends Email
Messages


Execute Process Task
Runs Executable Files
Message Queue Task
Sends and Receives
Messages
Execute Package Task
Executes DTS Packages
Dynamic Properties Task
Changes Package
Properties
www.devleap.it
Applicare vincoli di precedenza
 Vincoli di precedenza
 On Completion
 On Success
 On Failure
 Esecuzione degli step basata su vincoli di
precedenza
 Usare zero, uno o più vincoli di precedenza
 Si devono soddisfare tutto i vincoli di
precedenza definiti
www.devleap.it
Proprietà step
 Transazione
 Joining a step to package transaction
 Committing a transaction
 Rolling back a transaction
 Impostazioni esecuzione
 Eseguire uno step nel thread principale (STA)
 Interruzione di un package in seguito al
fallimento di uno step
 Disabilitazione di uno step
www.devleap.it
Memorizzare ed eseguire package
 Memorizzare i Package
 SQL Server
 SQL Server Meta Data Services
 Structured storage file
 Visual Basic file
 Eseguire i package
 Esecuzione interattiva
 Esecuzione batch
www.devleap.it
Task che copiano e gestiscono dati
 Bulk Insert Task Quickly
Carica file in SQL Server
 Execute SQL Task
Esegue istruzioni T-SQL
 Copy SQL Server Objects Task
Copia oggetti tra istanze di SQL Server 7.0
o SQL Server 2000
 Transfer Database Objects Tasks
Copia informazioni complessive per un
database da un’istanza di SQL Server 7.0 o
SQL Server 2000 a un’istanza di SQL Server
2000
www.devleap.it
Funzionalità Bulk Insert Task
 Caricamento veloce da file a SQL Server
 Supporta destinazione Tabelle o Viste su
SQL Server
 Richiede file delimitati (CSV o lunghezza
fissa)
 Carica i dati senza trasformazioni
 Supporta i Format Files per specificare il
layout del file
 Richiede appartenenza a ruolo sysadmin
o bulkadmin
www.devleap.it
SQL Task
 Esecuzione istruzioni SQL
 Il database connesso deve comprendere la
sintassi SQL
 Supporta una o più istruzioni SQL
 Query parametriche
 Parametri input
 Parametri output
 Si usano le variabili di package
www.devleap.it
Trasformazioni DTS
www.devleap.it
DTS Data Pump
 Architettura a elevate prestazioni
 OLE DB Service Provider
 Estendibile via COM e ActiveX Scripts
IUnknown
IDTSDataPump
Data Pump
www.devleap.it
Elaborazione Data Pump
Source
OLE DB
ODBC
Fixed Field
ASCII Delimited
1.
2.
3.
Connessione a sorgente e
destinazione
Lettura metadati OLE DB
su colonne sorgenti e
destinazione
Raccoglie definizioni delle
trasformazioni dati
X Forms
Destination
ActiveX Script
Copy
Trim String
…
Custom
DTS Data Pump
In Out
www.devleap.it
OLE DB
ODBC
Fixed Field
ASCII Delimited
Repl. Publication
4.
Implementa le
trasformazioni
5.
Scrive i record sulla
destinazione
Transform Data Task
 Funzionalità di spostamento e
trasformazione dei dati
 Copia i dati tra fonti dati eterogenee
 Applica trasformazioni opzionali a livello di
colonna
 Funzionalità estese di trasferimento dei
dati
 Supporta elaborazione “batch” dei dati
 Fornisce capacità di gestione degli errori
 Contiene impostazioni di ottimizzazione per
destinazioni SQL Server
www.devleap.it
Impostare sorgente e destinazione
 Sorgente
 Connessione sorgente
 Tabella, query, vista o file sorgente
 Destinazione
 Connessione destinazione
 Tabella destinazione esistente o struttura
tabellare
 Nuova tabella destinazione o struttura tabellare
 La creazione avviene a design-time, non a ogni
esecuzione
 Il DTS Import/Export wizard crea un DTS con due
step separati, uno crea la tabella e l’altro l’alimenta
www.devleap.it
Definizione del mapping delle colonne



www.devleap.it
Mapping
uno-a-uno
Mapping
simmetrico
molti-a-molti
Mapping
asimmetrico
Costruire trasformazioni
ActiveX Script
www.devleap.it
Trasformazioni ActiveX Script
 Trasformazioni ActiveX Script
 Contengono logica di trasformazione definita
dall’utente
 Sono interpretate al momento dell’esecuzione
 Linguaggi di scripting
 VB Script
 JScript
 Qualsiasi linguaggio di scripting installato
www.devleap.it
Definire trasformazioni ActiveX Script
 Funzione che contiene la logica di
trasformazione dei dati
 Mapping delle colonne sorgenti e
destinazione
 Il valore di ritorno (definito nelle costanti
DTSTransformStat) definisce l’azione da
eseguire per il record
 Consente di fare trasformazioni 1:N e N:1
 Es. Pivot o Unpivot di una tabella
www.devleap.it
Costanti DTSTransformStat
DTSTransformStat Constant Description
DTSTransformStat_OK
Default conversions succeed and insert
the record into the destination
DTSTransformStat_Error
Terminate further processing of this row
and return an error for the record
DTSTransformStat_SkipFetch Do not fetch the next row
DTSTransformStat_SkipInsert
Do not write the current row to
the destination
DTSTransformStat_SkipRow
Terminate further processing of this row for
non-error reasons
www.devleap.it
Creare record multipli
Product Group
Drinks
Hot Beverage
Fruit Juice
Hot Chocolate
Apple Cider
Product Group
Beverage
Drinks
Hot Chocolate
Drinks
Apple Cider
www.devleap.it
Conclusioni
 DTS è uno strumento di sviluppo
 Riduce il codice da scrivere per le
operazioni ripetitive
 Mantiene aperte tutte le strade di
personalizzazione quando è necessario
 VBScript, JScript
 Componenti ActiveX
 Supporto per automazione procedure e
generazione log dettagliati
www.devleap.it
Altre Informazioni
 Dove posso ottenere maggiori informazioni
 www.microsoft.com/italy/sql
 www.microsoft.com/italy/businessintelligence
 www.microsoft.com/sql
 www.microsoft.com/sql/evaluation/bi
 msdn.microsoft.com
 Developer resources
 Microsoft Developer Network
 www.devleap.it
 www.sqljunkies.com
www.devleap.it
Fly UP