Introduzione alla tecnologia OLAP:
Microsoft SQL Analisys Services
Agenda
• Perchè mi serve il Data Warehouse e OLAP ?
• Caricamento e trasformazione dei dati (DTS)
• Basi dati multidimensionali (OLAP)
• Analysis Services step by step
• Caratteristiche di un database Olap
• Interrogare i cubi (Mdx e dintorni)
• Gestire la sicurezza in Analysis Services
• Deploy della soluzione
Perchè mi serve il Data
Warehouse e OLAP ?
Perchè mi serve il Data Warehouse e OLAP ?
• Dati = informazione non è sempre vero
• Sono organizzati per una elaborazione
transazionale
• Non forniscono dati “attendibili”
• Rallentano il sistema
• Spesso devono essere integrati con
sorgenti di diversa natura
Perchè mi serve il Data Warehouse e OLAP ?
• La soluzione è creare un db ad-hoc per le
analisi
• Lo scopo è di “concentrare” tutti i dati
dell’ azienda in un unico punto
• Integra informazioni provenienti da
sorgenti diverse
• I dati sono trasformati / “puliti”
• Il disegno e’ ottimizzato per la lettura
• Possiamo considerarlo come un db
Read-Only
Creare il Data Warehouse
• E’ un progetto molto difficoltoso :
– Capire e identificare gli obbiettivi della
analisi
– Trovare le informazioni e i dati sorgenti
– Applicare eventuali trasformazioni /
normalizzazioni per consolidare i dati
– Essere flessibili, riuscire a gestire
cambiamenti e “modifiche nella storia”
Creare il Data Warehouse
• Magazzino di dati a livello di impresa
• Insieme di strumenti per convertire un
vasto insieme di dati in informazioni
utilizzabili dall’utente
• Obiettivi:
– Possibilità di accedere a tutti i dati
dell’impresa, centralizzati in un solo database
– Coerenza e consolidamento dei dati
– Velocità nell’accesso alle informazioni
– Base di partenza per OLAP
Creare il Data Warehouse
• Passi per la creazione del Data Warehouse
– Identificare gli eventi da misurare
• Vendite
• Movimentazione di magazzino
• Customer satisfaction
• Ecc.
– Identificare le fonti dati
• I dati possono arrivare da fonti diverse ed
eterogenee, non strutturate (Excel,file di testo,…)
– Consolidare i dati
• Trasformazioni per eliminare le differenze
– Es. Lira vs. Euro
– Definire processo di aggiornamento
• Intervallo di aggiornamento del DW
Creare il Data Warehouse
• Data Mart
– Poichè il processo per la creazione di un DW è
spesso lungo e difficoltoso, è possibile creare
dei processi intermedi
– “Mini” DW tematici per rispondere ad esigenze
specifiche (es. vendite, marketing, controllo di
gestione ecc.)
– L’insieme di tutti i Data Mart costituisce il DW
Componenti di un modello Data Warehouse
• Tabella dei fatti
– Contiene gli elementi da misurare
• es. (vendite,movimenti e transazioni ecc.)
– Elemento centrale del DW
• Misure
– Sono i valori che vogliamo analizzare
rappresentati delle quantità
• es. (importi, quantità, numero di
transazioni)
– Sono contenute nella tabella dei fatti
Componenti di un modello Data Warehouse
• Tabella delle dimensioni
– Descrive e rappresenta l’entità di business
– Fornisce un contesto alle misure
– È il “per” nelle analisi
• Es. (Venduto PER cliente,Venduto PER
prodotto)
• Dimensione
– E’ il contenuto della tabella dimensione
– Spesso è gerarchica
• Es. (Categoria -> SottoCategoria -> Prodotto)
Componenti di un modello Data Warehouse
Tabella delle
Dimensioni
Comuni
Dimensioni
Tabella dei Fatti
Comune
Prodotti
Tempo
Misure
Prodotto Tempo Unità Fatturato
Fatti
Componenti di un modello Data Warehouse
• Esempio Dw da Northwind
– Introduzione al nostro Case Study
– DEMO
Struttura di un Data Warehouse
• La struttura di un DW è riconducibile
a 2 modelli :
– Star Schema (a stella)
– Snowflake Schema (fiocco di neve)
Struttura di un Data Warehouse
• Star Schema
– Lo Star Schema è la modellizzazione più
semplice ed efficace dei componenti di un DW
– Ogni tabella dei fatti è associata a N tabelle
dimensionali
– Le relazioni gerarchiche all’interno di una
dimensione (per es. anno/mese/giorno)
vengono mantenute in una sola tabella
dimensionale
Star Schema
Employee_Dim
EmployeeKey
EmployeeID
.
.
.
Time_Dim
Sales_Fact
TimeKey
TheDate
.
.
.
Dimensional Keys
Shipper_Dim
ShipperKey
ShipperID
.
.
.
Product_Dim
TimeKey
TimeKey
EmployeeKey
EmployeeKey
ProductKey
ProductKey
CustomerKey
CustomerKey
ShipperKey
ShipperKey
RequiredDate
.
.
.
ProductKey
ProductID
.
.
.
Multipart Key
Measures
Customer_Dim
CustomerKey
CustomerID
.
.
.
Struttura di un Data Warehouse
• Snowflake schema
– Le gerarchie all’interno delle dimensioni sono
mantenute in tabelle separate
– È leggermente più complesso di una struttura a
stella
– È meno efficiente
Caricamento e
trasformazione dei dati
(DTS)
Alimentare un Data Warehouse
• Scegliere il tool appropriato:
– Transact-SQL
– Query distribuite
– Utility BCP (bulk copy), istruzione BULK
INSERT
– DTS (Data Transformation Services)
DTS (Data Transformation Services)
• Tool per automatizzare operazioni di
trasformazione/trasferimento di dati
• Incluso in SQL Server 7/2000
• Supporta qualsiasi fonte (e destinazione)
OLE DB
• Consente di integrare ActiveX Scripts
all’interno delle operazioni disponibili
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
DTS Package Editor
DTS (Data Transformation Services)
• DEMO !!!
Basi dati
multidimensionali
(OLAP)
Database OLAP
•
•
•
•
I dati sono vastissimi
Le query non sempre sono “immediate”
C’è bisogno di un “cane da query”
Le applicazioni spesso producono report
cartacei e/o fogli excel
• I report e/o fogli excel più che rispondere
a domande le generano
Database OLAP
• È una “organizzazione” multidimensionale
dei dati provenienti dal DW
• Il cubo rappresenta la struttura logica di
un database Olap
• Le dimensioni e i fatti vengono organizzati
in un modello intuitivo di facile utilizzo da
parte degli utenti
Database OLAP
Atlanta
Chicago
Denver
Grapes
Cherries
Melons
Apples
Detroit
Q1
Q2
Q3
Time Dimension
Q4
Database OLAP
• Il cubo consente di rappresentare in modo
intuitivo e maneggevole la dipendenza di
un fatto da 3 dimensioni
• L’ipercubo è una generalizzazione del cubo
su n dimensioni, con 1 <= n <= 
• Per semplicità, si usa fare riferimento al
“cubo” indipendentemente dal numero di
dimensioni
Database OLAP
• Ogni cella è un valore
• Il valore di ogni cella è l’intersezione tra
dimensioni
Database OLAP
Sales
Fact
Atlanta
Chicago
Denver
Grapes
Cherries
Melons
Apples
Dallas
Q1
Q2
Q3
Time Dimension
Q4
Database OLAP
• Le dimensioni ci permettono di “affettare”
a “dadi” il cubo
• Le gerarchie all’interno delle dimensioni
consentono di “trapanare” all’ interno del
cubo per scendere/salire nei
dettagli/aggregazioni (DrillDown/DrillUp)
• Può produrre report stampati, ma è prima
di tutto una funzionalità interattiva
• Consente di verificare velocemente ipotesi
formulate dall’utente
Analysis Services step by step
Analysis Server
• Analysis Server gestisce una base dati
multidimensionale per ottimizzare
l’accesso ai dati attraverso client OLAP
• Un database è un insieme di cubi
• Cubi di uno stesso database possono
condividere una o più dimensioni
• I cubi vengono alimentati con fonti
relazionali accessibili via OLE DB
Architettura Analysis Server
Server
Custom
Applications
Client
OLAP Manager
Client
Application
DSO
Client
Application
Source data
Relational
Database
ROLAP data
OLE DB
HOLAP
Cube
Data Storage
ADO MD
MOLAP
OLAP Server
PivotTable
Service
Analysis Manager
• Snap-In per MMC (Microsoft Management
Console)
• Consente di amministrare store e
processing multidimensionali
• Integra diversi editor specializzati e
wizard per progettare la soluzione
– Cube Editor
– Dimension Editor
Analysis Manager
Analysis Manager
• Passi necessari per creare un cubo
– Creare un data source (la fonte dati oledb)
– Eseguire il wizard
•
•
•
•
Selezionare la tabella dei fatti
Identificare le misure
Selezionare le tabelle delle dimensioni
Identificare le dimensioni
–
–
–
–
Star Schema
Snowflake Schema
Parent Child
Time dimension
• Processare il cubo
Processare il cubo
• E’ l’operazione che “popola” il cubo
– Trasferisce i dati dal Data Warehouse al
database OLAP
– Crea le aggregazioni e somma i dati
• ci sono alcuni “dettagli” da considerare (li
vediamo tra breve)
Analysis Manager
• Il nostro primo cubo !!!
– DEMO!!!
Caratteristiche di un
database Olap
Cube Storage Options
• Lo spazio rappresenta un problema
– I dati sono aggregati a più livelli
– Sono duplicati (ripetuti) all’interno del cubo
– All’aumentare delle dimensioni e misure le
richieste di spazio aumentano
esponenzialmente
Cube Storage Options
Fatturato
Home
Business
Totale
Desktop
70
50
120
Hardware
Laptop Server
30
15
5
45
5
Software
Totale Italiano Inglese
100
80
70
25
5
170
105
5
Totale
80
30
110
Totale
180
100
280
• Celle di dettaglio: 10 (di cui 2 vuote) (A)
• Celle di sintesi: 14! (B)
• Celle complessive: 24 (C)
• Rapporto (C)/(A): 2.4!
Numero di Aggregazioni
Cube Storage Options
• “Data Explosion !!!”
•70000
•65536
•60000
•50000
•40000
•30000
•20000
•16384
•10000
•0
•16
•2
•81
•3
•256 •1024
•4
•5
•4096
•6
•7
Numero di Dimensioni
(4 livelli in ciascuna dimensione)
•8
Cube Storage Options
“Data Sparsity”
Fatturato
Milano
Roma
Napoli
Torino
Venezia
Bologna
Aosta
Trieste
Ancona
Firenze
Bari
Palermo
Cagliari
Genova
Reggio C.
P200
134
PII266
PII300
100
100
80
60
134
70
100
Win98
45
30
10
80
23
100
45
134
70
45
234
70
30
10
80
23
100
234
70
30
Office97
134
70
234
70
100
80
30
10
80
23
100
80
60
134
PII400
80
234
100
80
60
134
PII350
134
70
45
134
70
WinNT
200
120
80
100
200
120
80
100
200
120
80
100
200
120
80
SQL/Srv
200
In generale, molte celle possono essere
vuote, soprattutto scendendo nei dettagli
200
200
200
Cube Storage Options
• MOLAP, ROLAP e HOLAP
– Cosa sono?
– Quali sono le prestazioni e l’efficienza
caratteristiche di ciascuno?
– Come scegliere?
Cube Storage Options
•Molap : Multidimensional OLAP
– I dati vengono caricati in OLAP
Services via OLE DB
– Sia i dettagli che le
aggregazioni sono memorizzati
nello store di OLAP Services in
formato nativo
– Stesso contenuto delle tabelle
ROLAP
– E’ molto efficiente, sfrutta
compressione e data sparsity
– Processo del cubo molto veloce
Cube Storage Options
•ROLAP : Relational OLAP
– Aggregazioni create nel RDBMS per
velocizzare le query
– Popolazione delle tabelle via
istruzioni SQL di tipo “INSERT INTO”
• Nessun dato nello store di OLAP
Services
– Indici creati automaticamente
– Le tabelle risultanti sono molto leggibili
– Supporta provider OLE DB
– Query piu’ lente
– Processo piu’ lento
– Risparmio spazio
– Per cubi Real Time
Cube Storage Options
•HOLAP - Hybrid OLAP : il compromesso
– La via di mezzo
• Mantiene i fatti in RDBMS
• Le aggregazioni sono nello
store MOLAP
– Evita la duplicazione dei dati
– Si perdono prestazioni quando
si deve accedere ai dettagli
– Tempi di processo simili a
MOLAP
– Perdo in termini di prestazioni
quando vado sui dettagli
Cube Storage Options
• IMPORTANTE !!!
• Aggregare al 100 % non e’ necessario:
– Aumenta tempo di processo e
richieste di spazio
– Cache !!!!!
– Regola 80/20
Cube Storage Options
• In pratica
– C’è il “solito wizard”
Dettagli sulle dimensioni
• La dimensione è composta da livelli e membri
– Ogni livello da dettaglio diverso (All,Bread
Bagels..)
– Membri sono figli di un livello
– Livello All è il totale generale
Dettagli sulle dimensioni
• Le dimensioni possono essere Shared o
Private
– Shared
• Condivise da più cubi
• Amministrate in unico punto (Dimension
Editor)
• Se ricostruisco la struttura, i cubi che la
condividono non sono disponibili
• Non possono essere trasformate in private
• Più semplice la manutenzione
Dettagli sulle dimensioni
• Le dimensioni possono essere Shared o
Private
– Private
• Usate solo da un singolo cubo
• Gestite all’ interno del Cube Editor
• Ricreate ogni volta che elaboro il cubo
• Non possono essere trasformate in Shared
Dettagli sulle dimensioni
• Proprietà delle dimensioni
– Cube editor per le Private, Dimension editor per le
Shared
– Member Key Column:
• Definisce i membri in un livello
• Possono essere definite con espressioni
– Member Name Column:
• Definisce il “nome” per i membri di un livello
• Possono essere definite con espressioni
– Sorting Member
• Definisce l’ordine all’ interno di un livello
• DEMO!!!
Dettagli sulle dimensioni
• Dimensioni parent child
– Classica tabella con autoreferenza
– Sono basate su due campi all’ interno della
stessa tabella
– Più lente perché calcolate a “runtime”
– “Members with data” gestisce legame con
tabella dei fatti
• Leaf Members Only
• Non-leaf Data Hidden
• Non-leaf Data Visible
• DEMO!!!
Dettagli sulle dimensioni
• Dimensione tempo
– Può essere creata in automatico con wizard a
partire da un campo data/stringa della tabella
dei fatti
– Se gestita come una normale tabella delle
dimensioni possiamo gestire altri dettagli
legate alla data es. festivo, prefestivo ecc.
– Può essere shared
– Occupa meno spazio !!!
• DEMO !!!
Dettagli sulle dimensioni
• Member Properties
– Possono avere altri campi nella tabella delle
dimensioni “interessanti” ma non abbastanza
da creare delle dimensioni
– Non occupano spazio
– Sono la base per creare Dimensioni Virtuali
Dettagli sulle dimensioni
• Dimensioni virtuali
– Sono basate sui membri virtuali
– Non hanno aggregazioni
– Ma non aumentano spazio e tempo di
elaborazione
– Più lente rispetto a normali dimensioni
– Ideali per analisi richieste da pochi utenti
• DEMO !!!
Mdx
•
•
•
•
Multi-Dimensional eXpression
Parte della specifica OLEDB for OLAP
Ora parte anche delle specifiche XML/A
Nasce per reporting e analisi
Mdx
• Lo usiamo per
• Query Statements
• Per costruire reports (“simile” a SQL)
• Formule
• Membri calcolati (simile a Excel)
• Management (cubi locali)
• Alter Cube, Update Cube, etc.
Mdx
• Mdx formule
• Nuove misure
• Nuovi membri
• Tuple based
• Average Price =
• [Sales Amount] / [Order Quantity]
• come riferimento Excel: =B5/B4
• Set based
• Year To Date =
• Sum(PeriodsToDay(PeriodsToDate([Order
Date].[Calendar Quarter]),[Order Quantity])
• Come Excel ranges: =Sum(B2:B10)
• ([Unit
Sales],ancestor(Product,[Product].[(All)]))
Mdx ogni cella ha un nome
([All Product],
[All State],
Dollars)
All Product
Dollars
Units
Bread
Dairy
Meat
(Bread, USA, Units)
(Meat,
Mexico,
Dollars)
Mdx
• Tupla
• Coordinate multidimensionali di una cella
• 1 membro da ogni dimensione
• Se piu’ dimensioni separo con ,
• Fa messa tra ()
• Se una dimensione non è specificata
usa membro di default o membro
corrente
Mdx
(State.CurrentMember,
Time.Calendar.CurrentMember,
Product.CurrentMember,
[Sales Units])
Mdx
• Set
– Insieme di tuple
Mdx
• MDX query
– È composta da 3 parti
– Dicers: assi (normalmente Column e Row)
– Data Grid – riempita dalla risoluzione degli
assi
– Slicers: Filtro
• SELECT
<Set> On Columns,
<Set> On Rows
FROM <Cube>
• WHERE <Slicers>
Mdx
• Funzioni (tra le piu’ usate)
– Order
– Head/Tail
– TopCount
– Filter
– Crossjoin
– Generate
Mdx
• Attributi aggiuntivi
– Hierarchize (ordina dimensione)
– NON EMPTY (toglie righe vuote)
– CELL PROPERTIES Formatted_Value;
Gestire la sicurezza in
Analysis Services
Gestire la sicurezza in Analysis Services
• Amministrativa
– La sicurezza e’ basata su Windows 2000 o
Windows NT 4.0 Security
– Per amministrare Analysis Services è
necessario far parte del gruppo Olap
Administrators, creato al momento
dell’installazione
– L’ autenticazione può essere effettuata tramite
HTTP (IIS autentication)
Gestire la sicurezza in Analysis Services
• Utenti
– Si basa sulla creazioni di ruoli all’interno di
Analysis Services
– Posso limitare l’utente a vedere singole
dimensioni, livelli, membri
– Consente di arrivare alla singola cella
all’interno del cubo
Gestire la sicurezza in Analysis Services
• Il ruolo viene creato a livello di database
dal Database Role Manager
• All’interno di ciascun cubo si possono
specificare i dettagli tramite il Cube Role
Manager
Gestire la sicurezza in Analysis Services
Gestire la sicurezza in Analysis Services
Gestire la sicurezza in Analysis Services
Deploy della soluzione
Deploying an OLAP Solution
• Aggiornamento dei cubi
– Full Process
• quando :
– viene creato
– Aggiungo,elimino o modifico una misura
– Rebuild di una dimensione shared
• conseguenze :
– Il cubo non e’ disponibile
– Elaborazione lunga
Deploying an OLAP Solution
• Aggiornamento dei cubi
– Incremental Update
• quando :
– Aggiungo nuovi dati al DW
• conseguenze :
– Non “costa molto” in quanto il cubo rimane
disponibile
Deploying an OLAP Solution
• Aggiornamento dei cubi
– Refresh
• quando :
– Ho sbagliato un aggiornamento e riparto da zero
– Necessità di dati da diverse data source
• conseguenze :
– Il cubo viene ricreato ma la sua struttura non
cambia
– il cubo rimane disponibile
Deploying an OLAP Solution
• Aggiornamento delle dimensioni (Shared)
– Rebuild
• quando :
– aggiungo, elimino un livello, rinomino o elimino un
membro oppure lo passo di livello
• conseguenze :
– Nessun cubo interessato è disponibile ed inoltre deve
prevedere un full process prima di diventarlo 
– Incremental Update
• quando :
– Nuovi membri o Member Properties
• conseguenze :
– I cubi rimangono disponibili
– I nuovi membri aggiunti legati a tabelle dei fatti non
ancora processate appariranno senza valore
Deploying an OLAP Solution
• Si può automatizzare
il tutto con DTS
tramite l’ Olap
Administrative Task
DEMO !!!
Deploying an OLAP Solution
• Backup e restore di un cubo
– Msmdarch utility a linea di comando per
backup e restore (possibilità di schedulare)
– Analysis Manager (pulsante destro del mouse)
– Crea file .cab
Deploying an OLAP Solution
• Per trasferire database da un server ad un
altro si può fare copia incolla !!!!
– DEMO !!!
Deploying an OLAP Solution
• Per installare PivotTable Services lato
client nel cd di sql i percorsi sono i
seguenti :
MSOLAP\Install\PTS\PTSFULL.EXE
MSOLAP\Install\PTS\PTSLITE.EXE
Le novità
• Reporting Services
– “Capiscono” mdx
• Demo
• XMLA (xml for analisys)
– Analysis Services diventa un web services
• ADOMD.NET
– Managed Provvider per dot net (ancora in beta)
• Yukon
– Grandi novità….
• Demo
Scarica

Introduzione alla tecnologia OLAP: Microsoft SQL Analisys Services