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