Sei sulla pagina 1di 7

CP pensareprogettareprogrammare n.

137 luglio-agosto 2004

Microsoft Business Intelligence Framework: Analysis Services


di Lorenzo Braidi
La visione della Business Intelligence secondo Microsoft ha come cuore i servizi per lanalisi dei dati di SQL Server, che rappresentano il principale strumento per la gestione di database di grandi dimensioni.

Lorenzo Braidi ` E responsabile dellarea Progetti presso la Data Service Technologies di Parma. Si occupa della progettazione e realizzazione di software Data Based. Tiene corsi di formazione professionale sulle problematiche legate ai database ed alla loro gestione. Partecipa ai Beta Test Program delle ` nuove funzionalita di Microsoft SQL Server.

pubblicato su WWW.INFOMEDIA.IT stampa digitale da Lulu Enterprises Inc. stores.lulu.com/infomedia


Infomedia
` Infomedia e limpresa editoriale che da quasi venti anni ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti, dei ricercatori e dei professori dinformatica italiani. Sono pi` di 800 gli autori che hanno realizzato per le teu state Computer Programming, Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, presentazioni di prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo e semplici trucchi e stratagemmi. Oltre 6 milioni di copie distribuite, trentamila pagine stampate, fanno di questa impresa la pi` grande ed u inuente realt` delleditoria specializzata nel campo della a programmazione e della sistemistica. In tutti questi anni le riviste Infomedia hanno vissuto della passione di quanti vedono nella programmazione non solo la propria professione ma unattivit` vitale e un vero a divertimento. ` Nel 2009, Infomedia e cambiata radicalmente adottando ` un nuovo modello aziendale ed editoriale e si e organizzata attorno ad una idea di Impresa Sociale di Comunit` , a partecipata da programmatori e sistemisti, separando le attivit` di gestione dellinformazione gestite da un board a comunitario professionale e quelle di produzione gesti` te da una impresa strumentale. Questo assetto e in linea con le migliori esperienze internazionali e rende Infomedia ancora di pi` parte della Comunit` nazionale degli u a sviluppatori di software. ` Infomedia e media-partner di manifestazioni ed eventi in ambito informatico, collabora con molti dei pi` imporu tanti editori informatici italiani come partner editoriale e fornitore di servizi di localizzazione in italiano di testi in lingua inglese.

Limpaginazione automatica di questa rivista e realizzata al ` 100% con strumenti Open Source usando OpenOffice, Emacs, BHL, LaTeX, Gimp, Inkscape e i linguaggi Lisp, Python e BASH

For copyright information about the contents of Computer Programming, please see the section Copyright at the end of each article if exists, otherwise ask authors. Infomedia contents is 2004 Infomedia and released as Creative Commons 2.5 BY-NC-ND. Turing Club content is 2004 Turing Club released as Creative Commons 2.5 BY-ND. Le informazioni di copyright sul contenuto di Computer Programming sono riportate nella sezione Copyright alla ne di ciascun articolo o vanno richieste direttamente agli autori. Il contenuto Infomedia e 2004 Infome` dia e rilasciato con Licenza Creative Commons 2.5 BYNC-ND. Il contenuto Turing Club e 2004 Turing Club ` e rilasciato con Licenza Creative Commons 2.5 BY-ND. Si applicano tutte le norme di tutela dei marchi e dei segni distintivi. ` E in ogni caso ammessa la riproduzione parziale o totale dei testi e delle immagini per scopo didattico purch e vengano integralmente citati gli autori e la completa identicazione della testata. Manoscritti e foto originali, anche se non pubblicati, non si restituiscono. Contenuto pubblicitario inferiore al 45%. La biograa dellautore riportata nellarticolo e sul sito www.infomedia.it e di norma quella disponibi` le nella stampa dellarticolo o aggiornata a cura dellautore stesso. Per aggiornarla scrivere a info@infomedia.it o farlo in autonomia allindirizzo http://mags.programmers.net/moduli/biograa

database

Microsoft Business Intelligence Framework:


Analysis Services
La visione della Business Intelligence secondo Microsoft ha come cuore i servizi per lanalisi dei dati di SQL Server, che rappresentano il principale strumento per la gestione di database di grandi dimensioni
di Lorenzo Braidi

bbiamo visto nella precedente puntata [3] come far confluire tutte le informazioni aziendali verso un unico punto di aggregazione e come creare una base dati sicura ed integrata; di solito, tuttavia, una base dati contenente tutte le informazioni di cui si necessita estremamente ricca e complessa e lapproccio tradizionale risulta essere troppo lento rispetto alle esigenze di utilizzo. Se si aggiunge il fatto che uneventuale applicazione analitica che agisse sulla base dati porterebbe di fatto ad un rallentamento significativo delle altre applicazioni, ci si rende conto che necessario trovare una strada alternativa. Questa strada rappresentata dai database multidimensionali.

FIGURA 1

Cube editor

Database multidimensionali
Il primo scopo dei database multidimensionali quello di semplificare la struttura dei dati per facilitarne la fruizione da parte degli utenti finali. Possiamo pensare che un ipotetico database relazionale in cui unazienda tenga traccia delle sue vendite avr un certo livello di complessit e non sar di facile comprensione, se non da parte del personale tecnico specializzato. Sappiamo anche, per, che allufficio marketing non interessa tanto sapere che il database cos complesso perch stato studiato per garantire la non ridondanza delle informazioni o per ottenere prestazioni di un certo tipo per applicazioni specifiche; a quellufficio serve semplicemente sapere cosa si venduto, quando, e a chi! Lo scopo del nostro database sar quindi quello di rendere disponibili allutente le informazioni relative alle vendite aggregate per tre semplici informazioni: Tempo Cliente Prodotto

Il secondo scopo di questo tipo di database quello di garantire prestazioni accettabili su moli significative di dati. Il raggiungimento di questo obiettivo possibile grazie al fatto che il database multidimensionale provveder a calcolare in anticipo tutta una serie di informazioni aggregate, che saranno cos immediatamente disponibili nel momento in cui verranno richieste. Un database multidimensionale (o OLAP: On Line Analytical Processing) si compone di Cubi. I Cubi rappresentano per i database OLAP quello che le tabelle sono per i database relazionali. Un cubo si compone di tre fondamentali elementi: Fatti: si tratta delle informazioni che si intende monitorare. I Fatti sono rappresentati da una tabella o da una vista del database relazionale da cui si parte. Misure: sono i dati che si vogliono analizzare ed aggregare. Esse sono rappresentate da una o pi colonne della tabella dei fatti. Dimensioni: specificano le modalit di aggregazione delle informazioni e determinano i criteri con cui sar possibile consultare i dati presenti nel database. Le dimensioni sono di differenti tipologie e sono costituite ciascuna da una o pi tabelle (o viste) del database relazionale di partenza.
Computer Programming n. 137 - Luglio/Agosto 2004

Lorenzo Braidi

lbraidi@infomedia.it

responsabile dellarea Progetti presso la Data Service Technologies di Parma. Si occupa della progettazione e realizzazione di software Data Based. Tiene corsi di formazione professionale sulle problematiche legate ai database ed alla loro gestione. Partecipa ai Beta Test Program delle nuove funzionalit di Microsoft SQL Server.

48

PROGRAMMING

FIGURA 2

Wizard per lottimizzazione dei cubi

conterr il codice del prodotto venduto che far riferimento al codice presente sulla tabella tbAnagProdotti che rappresenta la dimensione Prodotti. Un caso particolare delle dimensioni a stella rappresentato dalle dimensioni temporali: queste, infatti, sono rappresentate da una sola colonna di una tabella (che pu essere anche quella dei fatti) che deve essere di tipo DATE. In questo modo la dimensione assumer automaticamente tutti i livelli tipici di una data: Anno Trimestre Mese Giorno

Il database che si andr a creare sar, quindi, una copia di quello di partenza con le informazioni distribuite in maniera da garantirne la fruibilit in termini di semplicit e di prestazioni. Utilizzando Analysis Services, un cubo pu essere creato utilizzando il Cube Editor (Figura 1) o mediante lapposito Wizard. In entrambi i casi le informazioni che si devono identificare sono le medesime. Tabella dei Fatti: Come abbiamo detto, si tratta di una tabella o di una vista del database di partenza ed quella su cui risiedono le informazioni che si vogliono analizzare ed aggregare per lanalisi che si sta costruendo. Il fatto che si possa indicare anche una vista molto utile, perch consente di trattare in modo omogeneo informazioni che risiedono su differenti tabelle, rendendo cos possibile confronti pi complessi. Misure: Le colonne che possono essere scelte come misure del cubo sono ovviamente solo quelle di tipo numerico. Il cubo che si crea conterr i valori di tali colonne sia in forma di dettaglio, sia in forma gi aggregata rispetto alle dimensioni definite. Dimensioni: Come detto, le dimensioni rappresentano i punti di vista del cubo ed influenzano le logiche di aggregazione dei dati. Se per esempio si scelta come misura il venduto del giorno e come dimensione il tempo, il cubo risultante conterr tutti i dati del venduto dei giorni presenti nel database ed i totali per mese, per trimestre e cos via. La definizione di una dimensione richiede, oltre allidentificazione della o delle tabelle che la rappresentano, di specificare i livelli di profondit della stessa. Se per esempio stiamo definendo la dimensione Prodotto, dovremo stabilire che tale dimensione rappresentata dalla tabella tbAnagProdotti e che i suoi livelli di profondit saranno rappresentati in ordine dalle colonne MacroCategoriaProdotto, SubCategoriaProdotto e Nome prodotto. Questo significa che poi potremo accedere ai dati sia a livello di singolo prodotto, ma anche aggregando per categorie (Sub e Macro). Le dimensioni possono essere di differenti tipologie, ciascuna delle quali ha caratteristiche che derivano dalla sua stessa struttura. Una dimensione a stella rappresentata da una sola tabella (o vista) che ha un collegamento diretto con la tabella dei fatti. Tornando al nostro esempio, la tabella dei fatti
Computer Programming n. 137 - Luglio/Agosto 2004

Una dimensione a fiocco di neve coinvolge pi tabelle legate tra loro. Viene utilizzata quando i dati che identificano i livelli di profondit della dimensione ed i codici che la legano alla tabella dei fatti non risiedono sulla stessa tabella. possibile, mediante la creazione di apposite viste, ricondurre questo tipo di dimensione alla categoria precedente. Le dimensioni ricorsive, invece, sono rappresentate da una sola tabella che ha un riferimento verso se stessa di tipo ricorsivo. Questo tipo di dimensione utile per rappresentare strutture gerarchiche tipo organigramma aziendale o situazioni analoghe. Le dimensioni sono s una caratteristica dei cubi, ma mantengono comunque una loro indipendenza: vale a dire che una dimensione pu essere associata ad un numero illimitato di cubi differenti senza che le informazioni in essa contenute siano duplicate o che sia necessario ripeterne la definizione.

Gestione di un database OLAP


Come abbiamo detto, i database multidimensionali rappresentano di fatto una copia delle informazioni contenute in un database OLTP (On Line Transactional Processing). Per questa ragione necessario che ogni singolo cubo ed ogni singola dimensione sia periodicamente ricalcolata, cos da acquisire le variazioni che nel frattempo sono state apportate al database di origine. Se nel momento in cui si termina la definizione di un cubo e delle sue dimensioni si tenta di interrogarne il contenuto, si ricever una segnalazione che riporter che non presente alcun dato. Per far s che il cubo sia effettivamente utilizzabile necessario elaborarlo. Quando si effettua questa operazione per la prima volta, lutente chiamato a definire anche la tipologia di storage che si vuole dare alla struttura appena definita. I cubi possono essere di tre differenti tipologie:

FIGURA 3

DTS: elaborazione dei cubi

49

database

FIGURA 4

Visione tridimensionale dei dati

Agire su query che hanno tempi di esecuzione superiori ad un valore stabilito; Agire su query che vengono richieste con una frequenza superiore alla soglia indicata. La necessit di ricalcolare periodicamente ed automaticamente i cubi e le dimensioni risolta dai DTS di SQL Server (Figura 3). In essi, infatti, sono presenti due attivit specifiche per lelaborazione dei database OLAP. bene specificare che se si procede al ricalcolo di un cubo, questa operazione non necessariamente richiede che siano ricalcolate anche tutte le sue dimensioni. Nel caso, per, che siano intervenute variazioni anche a livello di dimensione, questo sar necessario. Se per esempio, nel ricalcolo del cubo vengono rilevate informazioni relative ad un cliente che non presente nella dimensione apposita, questo determiner un errore e far fallire il processo. Per questo motivo consigliabile procedere prima al ricalcolo delle dimensioni e solo successivamente a quello dei cubi. Nei DTS anche presente unattivit relativa allelaborazione dei modelli di Data Mining. Descriveremo in seguito il loro utilizzo e significato, per ora basti sapere che essi sono subordinati ai cubi, pertanto devono essere ricalcolati solo dopo aver eseguito lelaborazione dei cubi stessi. Lordine da utilizzare per lelaborazione degli oggetti dei DB OLAP risulta quindi essere: Dimensioni Cubi Modelli di Data Mining

MOLAP: database OLAP Multidimensionale. Ha la caratteristica di duplicare tutte le informazioni presenti nel database relazionale allinterno della propria struttura e di arricchirle con tutte le possibili aggregazioni gi precalcolate. Questo tipo di soluzione garantisce le prestazioni ottimali in termini di tempi di risposta a scapito, per, dellutilizzo di spazio disco. ROLAP: database OLAP Relazionale. Questo tipo di struttura, non fa altro che definire linterfaccia di utilizzo per lutente finale, mentre tutte le informazioni rimangono nel database di origine. applicabile esclusivamente a piccolissime moli di informazioni, dal momento che tutte le aggregazioni vengono calcolate nellistante della richiesta da parte dellutente. HOLAP: database OLAP Ibrido. di fatto la sintesi dei primi due: tutte le informazioni di dettaglio risiedono nel database relazione di origine, mentre le aggregazioni sono state precalcolate. Rispetto ai database MOLAP consente un notevole guadagno in termini di utilizzo dello spazio disco, ma porta un deterioramento delle prestazioni. Nelle versioni precedenti a SQL Server 2000, i cubi MOLAP presentavano grossi inconvenienti con laumentare delle informazioni immagazzinate. Tali inconvenienti erano dovuti al fatto che si assisteva ad una progressione geometrica del numero di dati presenti, cos da determinare il fenomeno noto con il nome di Data Explosion. La versione 2000, invece, risolve il problema introducendo la funzionalit di calcolo parziale delle aggregazioni. Questa funzione prevede che non tutte le aggregazioni siano calcolate nel momento dellelaborazione del cubo, ma solo quelle ritenute di pi comune utilizzo, a seconda di alcuni parametri richiesti allutente. In questo modo, se lutente finale richiede le aggregazioni che sono presenti nel cubo, queste gli saranno restituite immediatamente; in caso contrario saranno calcolate al momento ed aggiunte a quelle presenti. A parte lelaborazione iniziale, anche possibile effettuare una messa a punto delle prestazioni, che consiste nel ricalcolare il cubo inserendovi le aggregazioni a seconda delle statistiche di utilizzo della struttura stessa (Figura 2). La funzione Ottimizzazione guidata basata sulle statistiche di utilizzo permette di: Valutare lutilizzo di un certo range temporale; Valutare lutilizzo di un determinato utente o gruppo di utenti; 50

Il linguaggio MDX
Per usare unespressione matematica, lMDX sta ai database OLAP come lSQL sta a quelli relazionali. Il linguaggio MDX (Multi Dimensional extension), infatti, lo strumento da utilizzare per la consultazione delle strutture di questo tipo di database. Le query MDX hanno una struttura del tutto simile a quelle SQL anche se presentano caratteristiche inesistenti nelle loro cugine relazionali. Per prima cosa lMDX consente di estrarre le informazioni dandone una visione non solo vettoriale o tabellare, ma anche tridimensionale o multidimensionale.

FIGURA 5

Editor per le query MDX

Computer Programming n. 137 - Luglio/Agosto 2004

PROGRAMMING

FIGURA 6

Modelli di Data Mining

Listruzione
SELECT Venduto ON AXIS (0), Cliente ON AXIS (1), Prodotto ON AXIS (2) FROM NomeCubo WHERE Anno.2004

estrae una visione tridimensionale (Figura 4) delle informazioni richieste. Le query possono estrarre le informazioni su un numero di assi che pu arrivare fino a 256. Al fine di aumentare la leggibilit delle query che andiamo a scrivere, possibile nominare i primi 5 assi con la codifica che il linguaggio offre: Asse 0 = COLUMNS Asse 1 = ROWS Asse 2 = PAGES Asse 3 = SECTIONS Asse 4 = CHAPTER

numero di informazioni che si vogliono estrarre, mentre nel linguaggio MDX essa assume un significato per certi aspetti differente. Inserendo una o pi restrizioni alla nostra query, infatti, non andremo ad agire sul numero di righe, colonne o pagine da estrarre, ma semplicemente sul numero di aggregazioni che verranno calcolate per la creazione della visione multidimensionale. Se per esempio estraiamo il venduto (ON COLUMNS) ed i prodotti (ON ROWS), anche mettendo come clausola restrittiva il fatto che vogliamo solo il venduto del 2004, otterremo sempre una griglia che riporta come colonna gli importi e come righe tutti i prodotti presenti nella dimensione apposita. Le query MDX possono essere specializzate grazie allutilizzo delle numerosissime funzioni che il linguaggio offre. Le principali e pi utilizzate sono: Members: estrae tutti i membri di una dimensione; Children: estrae tutti i membri figli di un membro di partenza; Crossjoin: estrae tutte le combinazioni tra due dimensioni date; Union: somma i valori di due dimensioni; Intersect: estrae solo i valori comuni a due dimensioni date; Expect: estrae solo i valori che non trovano corrispondenza in due dimensioni (funzione contraria di Intersect). possibile utilizzare lMDX editor (Figura 5) per scrivere, validare ed eseguire le query con questo linguaggio. Lo 51

pertanto le query
SELECT NomeMembro ON AXIS (0)...

e
SELECT NomeMembro ON COLUMNS...

hanno esattamente lo stesso significato. La clausola WHERE nelle istruzioni SQL ha lo scopo di limitare il
Computer Programming n. 137 - Luglio/Agosto 2004

database
strumento mette a disposizione una serie di facilitazioni che guidano nella scrittura delle istruzioni, ma mostra limiti tuttaltro che trascurabili. La rappresentazione grafica di una query con pi di 2 dimensioni non per niente banale, per questo lMDX editor non esegue questo tipo di interrogazioni. Tutte le istruzioni che generano risultati a 2 assi vengono eseguite e vengono riportati i risultati in forma tabellare, mentre quando si superano le 2 dimensioni, leditor si limita a validare la correttezza sintattica e formale dellistruzione, ma non in grado di eseguirla. Oltre alle interrogazioni, il linguaggio MDX in grado di gestire anche le operazioni di DDL (operazioni di definizione della struttura del database) quali la creazione, la distruzione o la modifica delle dimensioni, dei cubi e degli altri oggetti del database OLAP. Tenuto conto, per, della complessit del linguaggio e dellestrema semplicit di utilizzo delle interfacce di Analysis Manager e dei suoi Wizard, questa seconda strada sicuramente preferibile per la gestione delle strutture OLAP.

PROGRAMMING
livello di dettaglio che evidenzia due nuove fasce: i clienti sposati e quelli single (Figura 6.C). Lalgoritmo di DM si accorto che la scelta della carta di credito dei clienti di questa fascia di fatto influenzata dal loro stato civile: i clienti sposati preferiscono la carta Golden, mentre i single quella Silver. Se si esegue la stessa analisi per la fascia di reddito da 10.000 a 30.000 dollari allanno si nota che questo livello di dettaglio non presente in quanto non vi sono altre informazioni che influiscono in maniera significativa sulla scelta delle carte. Come si pu intuire dallesempio riportato, i modelli di DM sono uno strumento interessantissimo per lanalisi di grandi moli di dati. Si deve, per, fare particolare attenzione al numero di informazioni su cui essi operano: un modello Decision Tree applicato ad un numero esiguo di dati pu determinare tendenze che non hanno riscontro nella realt, ma che sono il risultato esclusivamente dalla cattiva scelta del campione. quindi necessario che il numero di informazioni a disposizione sia sufficientemente elevato da garantire un adeguato campione statistico. Lesempio di cui abbiamo parlato vede la fascia di reddito Oltre 150.000 dollari allanno composta da un centinaio di clienti. Questo significa che ogni singolo cliente influisce per l1% sul risultato. Tale percentuale troppo elevata perch si possa essere certi dellanalisi effettuata e possiamo dire che se il campione fosse stato composto da 1000 clienti, probabilmente il modello avrebbe dato risultati diversi e siamo sul piano delle ipotesi non avrebbe evidenziato lulteriore suddivisione per stato civile.

Data Mining
Quando la mole di informazioni diventa estremamente elevata, anche le strutture di tipo OLAP possono risultare insufficienti per lindividuazione di determinate informazioni. A questo scopo nascono i modelli di Data Mining (scavare/scovare i dati) che hanno lobiettivo di analizzare in maniera sistematica le informazioni per determinarne le tendenze intriseche. Analysis Services mette a disposizione dellutente due diversi modelli di Data Mining: Decision tree: che costruisce un albero su cui suddivide le informazioni presenti nel cubo di partenza; Cluster: che suddivide le informazioni in fasce. La definizione di un modello di DM (anche questa mediante un semplicissimo Wizard da Analysis Manager) richiede di selezionare il cubo su cui applicare il modello stesso e di identificare il dato che si vuole monitorare. Una volta fatto ci, sar il motore analitico dello strumento ad individuare quali siano le informazioni che influenzano i diversi valori di tale dato ed a costruire conseguentemente una struttura ad albero in cui suddividere tutte le informazioni presenti. Lesempio di Figura 6 riporta un modello Decision Tree applicato al cubo Sales del database FoodMart2000 (il Northwind di Analysis Services). Tale modello stato definito sul dato che identifica la tipologia di carta di credito utilizzata dal cliente per il pagamento. In prima battuta il motore ha stabilito che il dato che pi di ogni altro ha influenza sulla scelta della carta di credito il reddito annuo del cliente (Figura 6.A), ed ha quindi proceduto a suddividere la totalit dei clienti in fasce. Il colore dei rettangoli che rappresentano le fasce di reddito indicativo della densit della fascia stessa: pi il rettangolo scuro, pi la percentuale che vi appartiene alta. Se si seleziona una fascia di reddito vengono visualizzate le percentuali relative alle diverse tipologie di carte utilizzate dal sottoinsieme di clienti rappresentati, cos come, se si seleziona una determinata tipologia di carta, vengono rielaborate le fasce di reddito a seconda della densit che hanno in merito a quella singola carta (Figura 6.B). Lesempio di cui parliamo evidenzia il fatto che i clienti che appartengono alla fascia di reddito massimo (oltre i 150.000 dollari allanno) preferiscono la carta Golden. La cosa interessante che se si analizza questa fascia reddituale, si nota che essa pu essere esplosa ad un ulteriore 52

Conclusioni
Analysis Services di Microsoft SQL Server 2000 rappresenta senza dubbio un buon punto di riferimento per la costruzione di applicazioni per la Business Intelligence: al tempo stesso efficace e facile da utilizzare e garantisce sempre solidit e prestazioni soddisfacenti. Nel corso degli anni questo strumento maturato notevolmente (abbiamo parlato del performance tuning dei cubi) ed arrivato ad un livello di maturit tale da collocarlo come punto di riferimento per le applicazioni del settore. Microsoft annuncia grosse novit su questo fronte a partire dalla prossima versione di SQL Server (Yukon) che verr rilasciata probabilmente a fine 2004 e che porter un ulteriore potenziamento delle funzionalit di Business Intelligence ([4]). Gi dalla versione attuale di SQL Server, per, Microsoft affianca alla potenza di back-end di Analysis Services la versatilit di Reporting Services che analizzeremo nella prossima puntata.

BIBLIOGRAFIA & RIFERIMENTI


[1] Robert Vieira, Professional SQL Server 2000 Programming, Wrox Press [2] Microsoft SQL Server Books on line, Microsoft Corporate [3] Lorenzo Braidi, Microsoft Business Intelligence Framework: Data Transformation Services, Computer Programming n. 136 [4] Lorenzo Braidi, Aspettando Yukon, Computer Programming n. 129

CODICE ALLEGATO
ftp.infomedia.it
Analysis

Computer Programming n. 137 - Luglio/Agosto 2004